Cosa si intende quando si parla di protocollo MCP? Come abbiamo visto nella lezione introduttiva, progettare ecosistemi agentici significa ripensare il modo in cui l'Intelligenza Artificiale interagisce con il mondo esterno. Se gli agenti coordinati dagli SDK rappresentano lo strato logico e decisionale, serve un'infrastruttura capace di fare da ponte verso i dati in modo standard, sicuro e scalabile. Questa infrastruttura ha un nome: Model Context Protocol (MCP, appunto).
Considerato il taglio pratico di questa nostra guida, ci concentreremo sul ruolo e l'utilità che MCP può avere nell'ambito di un'applicazione senza soffermarci troppo su dettagli tecnici ben descritti nella guida apposita che abbiamo già citato.
Perchè è così rivoluzionario MCP?
Riepiloghiamo in sintesi perché MCP è diventato così velocemente un punto di riferimento nel settore:
- disaccoppiamento delle componenti: MCP permette di potenziare un LLM con una logica distribuita. Le funzionalità che gli offre infatti sono dirottate in una componente di backend a parte che incapsula tutto il necessario per il suo funzionamento;
- universalità: MCP nasce con la decisa convinzione di diventare un approccio che qualunque LLM può utilizzare. Si basa - in quanto a comunicazione - sul protocollo JSON-RPC, una forma molto leggera con cui un'applicazione può invocare funzionalità (RPC sta per Remote Procedure Call) su un altro server e riceverne i risultati realizzando tutto lo scambio in formato JSON, il più comodo, diffuso e facilmente interpretabile;
- Tool Discovery: come negli agenti, gli LLM vengono potenziati dall'interazione con dei tool solo che - a differenza, questa volta, degli agenti - i tool non sono in locale ma remotizzati e interrogabili via JSON-RPC. Il Tool Discovery è proprio il meccanismo con cui questi tool vengono individuati, tra i server a disposizione, e scannerizzati dal punto di vista di parametri necessari alla loro invocazione;
- Sicurezza: dislocando le varie funzionalità su servizi diversi, la logica di accesso ai dati non è relegata nell'applicazione stessa. Ogni server MCP coinvolto cura la salvaguardia delle informazioni che gestisce applicando i meccanismi di difesa e protezione più adatti.
MCP nei nostri progetti
Nel nostro progetto inizieremo da subito a costruire una rete di servizi implementati con MCP che verranno sfruttati dagli agenti che rappresenteranno lo strato di interfacciamento dall'esterno.
Le librerie che coinvolgeremo saranno essenzialmente due: la prima èFastMCP, un kit di sviluppo in linguaggio Python che implementa a dovere la specifica Model Context Protocol. La seconda è l'Agents SDK di OpenAI che permette di sviluppare agenti AI senza implementarne totalmente la logica dal basso ma con un approccio estremamente produttivo che porta, in poche righe di codice, non solo ad implementare questi componenti singolarmente ma anche ad implementarne facilmente logiche di collaborazione.
A questo punto, potremmo chiederci "Ma quanta Intelligenza Artificiale c'è in un server MCP?". In realtà, molto spesso niente. Per creare queste nostre applicazioni consideriamo sempre che di sicuro i componenti di Intelligenza Artificiale sono gli agenti. I server MCP servono a condividere con questi servizi, dati e funzionalità pertanto potrebbero semplicemente essere dei backend, particolarmente votati alla comunicazione con modelli.
Se è vero che i server MCP non hanno bisogno di AI è anche vero che non è assolutamente vietato che ne contengano. Infatti, i server MCP possono integrare funzionalità di Intelligenza Artificiale il che significa, essenzialmente, interagire nelle proprie logiche con un modello. Ciò può essere fatto in due modi, come di consueto: accesso ad un modello locale, ad esempio con Ollama o con modelli distribuiti da remoto come quelli di OpenAI, Anthropic, etc.
Implementare un server
Dalla prossima lezione inizieremo a implementare i server MCP della nostra rete e, per farlo, per prima cosa, avremo bisogno di una libreria che faccia da sfondo alla creazione dei servizi.
Per il linguaggio Python, una scelta completa, come già detto, è la libreria FastMCP, estremamente pratica e basata sull'uso dei decorator.
La installeremo con il seguente comando:
pip install fastmcp
Scopriremo la facilità con cui potremo creare servizi. Non ci vorrà molto più che:
- creare il server FastMCP assegnandogli il nome che preferiamo;
- creare funzioni che con il decorator
@mcp.toolverranno trasformare in tool invocabile da remoto dagli agenti; - avviare il server con il comando
run
ed il codice assomiglierà a questa sorta di hello world:
from fastmcp import FastMCP
mcp = FastMCP("MyNewService")
@mcp.tool
def myfunc(a: int, b: int) -> int:
"""Qui spiegheremo bene a cosa server il tool
e quando il codice client dovrebbe cercarlo"""
# sviluppo del risultato
result=...
return result
if __name__ == "__main__":
mcp.run()
Al momento del run dovremo scegliere con quale protocollo di trasporto avviare il sistema. Ormai ci sono rimaste due possibilità :
- STDIO, la comunicazione in locale, preferibile quando il sistema il server MCP deve essere utilizzato da sistemi locali come applicativi lanciati in background nella macchina stessa. Rappresenta l'opzione di default se lanciamo il server con un
runsenza argomenti. - http, il metodo (che useremo noi) necessario per fare in modo che i client ovvero i nostri agenti contattino attraverso Internet il server MCP per creare una rete di servizi distribuiti. Si sentirà spesso parlare di SSE che ormai è considerato l'approccio legacy rispetto a questo.
Ora che abbiamo una buona base concettuale possiamo passare all'implementazione pratica nella prossima lezione.
Se vuoi aggiornamenti su MCP: l'importanza di questo protocollo inserisci la tua email nel box qui sotto: