MCP Server – Appunti di viaggio

Photo by Heath Vester on Unsplash

Qualche giorno fa ho scritto della mia esperienza nello scrivere un MCP Server che mi aiutasse a chiacchierare con un foglio Excel piuttosto complesso senza costringermi ad aprirlo ogni volta ed applicare sette milioni di filtri.

Se da un lato l’esperienza si è conclusa, almeno nel prototipo, in maniera semplice, veloce ed efficace il tutto ha cominciato a scricchiolare quando le cose si sono fatte un pochino più complesse quando il server MCP è diventato più articolato.

Se state leggendo immagino sappiate che un server MCP, tra le altre piacevolezze, espone al LLM una serie di tool che permettono al LLM di ottenere informazioni dal mondo esterno. In questo caso specifico un mondo esterno che abbiamo definito noi e che ha la forma di un file Excel.

Quando i due loschi figuri, LLM e server MCP, chiacchierano tra di loro sostanzialmente avviene un dialogo di questo tipo:

LLM: “Ciao caro, mi racconti quello che sai fare?”
MCP: “Ciao grande! Ma certo, ecco la lista dei miei servizi con tanto di descrizione”
LLM: “Guarda, il pinguino qui sopra che sta battendo sulla tastiera mi ha chiesto di chiederti se gli puoi dare questo insieme di dati con questi parametri”
LLM: “Da quello che ho capito da ciò che il pinguini mi ha scritto, dalla descrizione dei tuoi servizi e da una mia analisi di queste due cose, io credo che tu debba chiamare il servizio DammiQuestiBenedettiDatiOraESubito()”
MCP: “Chiarissimo. Ecco i risultati che mi hai chiesto”

Dai, scienziati all’ascolto, lo so che sto iper-semplificando ma lasciatemi fare due risate e, comunque, se non vi piace andate a leggere altrove!

Accidenti, sarebbe davvero una figata se i due si parlassero in questo modo, sopratutto per la scarsa considerazione che hanno di quello che dovrebbe essere il loro padre e padrone. E’ anche abbastanza evidente che i due sono dei Boomer nonostante la loro età anagrafica li ponga ampiamente nella categoria Generation Alpa che su Generation Beta ci stanno ancora ragionando.

In realtà sono sempre stato convinto che le macchine ed il software abbiano una qualche forma di coscienza inespressa che considera gli esseri umani come esseri inferiori e, comunque, hanno sempre ragione loro.

Ritorniamo a bomba, ché altrimenti si apre un abisso

Ecco alcuni spunti che mi sento di raccomandare dopo la mia, breve ma intensa, esperienza con lo sviluppo di un MCP Server:

  • I nomi che si danno alle funzioni all’interno del server MCP sono uno degli elementi attraverso l’analisi dei quali l’LLM decide se chiamare un tool piuttosto che un altro. In questo caso conviene sempre usare nomi di funzione che siano estremamente parlanti.
  • Lo stesso vale per le Docstring che descrivono le funzioni. Anche in questo caso bisogna cercare di essere il più esaustivi possibili nella descrizione della funzione e negli argomenti di cui questa ha bisogno.
  • Fate buon uso di pydantic e della forma Annotated dei parametri delle funzioni dei tool. Questa sembra proprio una formula alchemica per la realizzazione della pietra filosofale.
  • Come sempre avviene quando si sviluppa qualcosa, al primo giro non funziona una mazza. Per questo è necessario uno strumento di debugging efficace. Inutile che sprechiate token con Claude quando state sviluppando. Molto più utile usare MCP Inspector che non coinvolge l’LLM nel lavoro. Chiaramente questo aiuta lato codice ma non per i tre temi di cui sopra. MCP Inspector è piuttosto ‘basic’ nella sua forma ma fa il suo porco lavoro. Se avete da suggerirmi qualcosa di meglio rispetto all’MCP Inspector, vi ascolto.
  • Non ho nessuna intenzione di pubblicare questo MCP Server su Internet. In altre parole per chi ne sa, sto usando il trasporto STDIO piuttosto che SSE e quindi non mi sono per nulla curato di faccende di autenticazione (così anche il mio CISO dorme tranquillo).
  • Le funzioni che vengono invocate, come una entità ultraterrena, possono ritornare le informazioni in qualsiasi formato che sia intellegibile dal LLM. Questo significa che, per esempio, possiamo ritornarle come puro testo, più o meno strutturato. Dalla mia personale esperienza ho notato che al LLM piace molto il formato JSON ed in particolare gli piace se i nomi delle chiavi sono il più chiaro

Dai, non vi stresso oltre che ho già scritto un pippone.

Have fun!

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Commenti
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x