Domanda: Con l'avanzamento dei modelli grandi, i modelli grandi sono apparsi in tutti gli aspetti della nostra vita, che sia lavoro che studio, sono inseparabili. Con un linguaggio modello di grandi dimensioni, perché abbiamo bisogno dell'MCP? Il modello grande può essere inteso come il cervello, ma il cervello da solo non può aiutarci a fare certe cose, MCP è più simile a un arto, il modello grande dirige il servizio MCP a fare cose, come: chiamare strumenti esterni (come database, dischi, API). Risolve il problema che i grandi modelli possono solo chattare e non possono fare le cose.
MCP (Protocollo di Contesto del Modello)
Documentazione:Il login del link ipertestuale è visibile. Repository GitHub:Il login del link ipertestuale è visibile. Archivio degli Strumenti MCP:Il login del link ipertestuale è visibile.
MCP (Model Context Protocol) è uno standard open-source per collegare applicazioni di IA a sistemi esterni.
Con MCP, applicazioni di IA come Claude o ChatGPT possono connettersi a fonti di dati (ad esempio, file locali, database), strumenti (ad esempio, motori di ricerca, calcolatrici) e flussi di lavoro (ad esempio, prompt specializzati) – permettendo loro di accedere a informazioni critiche e svolgere compiti.
Pensa a MCP come a una porta USB-C per applicazioni di IA. Così come USB-C fornisce un modo standardizzato per collegare dispositivi elettronici, MCP offre un modo standardizzato per collegare applicazioni di IA a sistemi esterni.
Cosa può ottenere l'MCP?
- Gli agenti possono accedere al tuo Google Calendar e Notion, agendo come assistenti AI più personalizzati.
- Claude Code può generare intere applicazioni web utilizzando i progetti Figma.
- I chatbot aziendali possono collegarsi a più database all'interno di un'organizzazione, permettendo agli utenti di analizzare i dati tramite la chat.
- I modelli AI possono creare design 3D su Blender e stamparli usando una stampante 3D.
Perché è importante l'MCP?
A seconda di dove ti trovi nell'ecosistema, MCP può offrire una serie di benefici.
- Sviluppatori: MCP riduce i tempi di sviluppo e la complessità durante la costruzione o integrazione con applicazioni o agenti di IA.
- Applicazioni o Agenti IA: Gli MCP forniscono accesso a un ecosistema di fonti di dati, strumenti e applicazioni, che miglioreranno la funzionalità e l'esperienza dell'utente finale.
- Utenti finali: Gli MCP possono portare a applicazioni o agenti di IA più potenti che possono accedere ai tuoi dati e agire per tuo conto quando necessario.
Protocollo MCP
Il MCP è composto da due livelli:
- Livello dati: Definire un protocollo di comunicazione client-server basato su JSON-RPC, inclusa la gestione del ciclo di vita, e primitive core come strumenti, risorse, prompt e notifiche.
- Livello di trasporto: Definisce i meccanismi e i canali di comunicazione che consentono lo scambio di dati tra client e server, inclusi l'istituzione di connessioni specifiche per il trasporto, i framework dei messaggi e l'autorizzazione.
Concettualmente, il livello dati è il livello interno, mentre il livello di trasporto è quello esterno.
Livello dati
- Il livello dati implementa un protocollo di commutazione basato su JSON-RPC 2.0 che definisce la struttura dei messaggi e la semantica. Questo livello include:
- Gestione del ciclo di vita: gestisce l'inizializzazione della connessione, la negoziazione delle funzionalità e la terminazione della connessione tra client e server
- Funzionalità del server: Permette al server di fornire funzionalità di base, inclusi strumenti per operazioni di IA, risorse per dati contestuali e prompt interattivi di template da e verso i client
- Funzionalità client: Permette al server di richiedere al client di campionare dal LLM host, ricevere input dall'utente e registrare i messaggi al client
- Funzionalità utili: Supporta funzionalità aggiuntive come notifiche di aggiornamento in tempo reale e monitoraggio dei progressi per operazioni di lunga durata
Strato di trasporto
Il livello di trasporto gestisce i canali di comunicazione e l'autenticazione tra il client e il server. Si occupa dell'instaurazione della connessione, della trasmissione dei messaggi e della comunicazione sicura tra i partecipanti MCP.
MCP supporta due meccanismi di trasporto:
- Trasporto Stdio: Comunicazione diretta tra processi locali sulla stessa macchina utilizzando flussi standard di input/output, fornendo prestazioni ottimali senza overhead di rete.
- HTTP streamabile: Utilizza il protocollo HTTP POST per inviare messaggi client-server e, opzionalmente, utilizza eventi inviati dal server per la funzionalità di streaming. Questo protocollo di trasporto supporta la comunicazione remota con i server e supporta metodi standard di autenticazione HTTP, inclusi token holder, chiavi API e header personalizzate. MCP raccomanda di utilizzare OAuth per ottenere un token di autenticazione.
Il livello di trasporto astrstra i dettagli di comunicazione dal livello protocollo, così che lo stesso formato di messaggio JSON-RPC 2.0 sia implementato su tutti i meccanismi di trasporto.I messaggi JSON-RPC devono essere codificati in UTF-8。Il trasporto HTTP+SSE è stato deprecato!
Tutto sul server MCP
Questo server MCP è progettato per testare tutte le funzionalità del protocollo MCP. Non è pensato come un server pratico, ma piuttosto come server di test per i costruttori di client MCP. Implementa funzionalità come prompt, strumenti, risorse, campionamenti e altro ancora per mostrare le capacità degli MCP.
Fonte:Il login del link ipertestuale è visibile.
Questo servizio richiede l'installazione di un ambiente Node.js e i passaggi di installazione sono omisti.
Per testare il servizio MCP basato sul pattern di trasporto Stdio, il comando di avvio è il seguente:
Come mostrato di seguito:
Dopo l'esecuzione, il pacchetto viene memorizzato nella cache%LocalAppData%\npm-cache\_npx\Sotto il sentiero.
Inizializzando, il client invia una richiesta di inizializzazione per stabilire una connessione e negoziare le funzionalità supportate. I dati delle richieste sono i seguenti:
La risposta è la seguente:
{"result":{"protocolVersion":"2025-06-18","capabilities":{"prompts":{},"resources":{"subscribe":true},"tools":{},"logging":{},"completions":{}},"serverInfo":{"name":" example-servers/everything","title":"Everything Example Server","version":"1.0.0"},"istruzioni":"Server di test e dimostrazione per le funzionalità del protocollo MCP.\n\n## Resources\n\ nResources 1-100 seguono il pattern: gli ID pari contengono testo, gli ID dispari contengono dati binari. Le risorse sono paginate a 10 elementi per pagina con navigazione basata su cursore.\n\n## Le notifiche di chiavi richiedono '_meta.progressToken' nelle chiamate degli strumenti. Le sottoscrizioni alle risorse generano aggiornamenti ogni 10 secondi.\n\n## Caratteristiche di prestazioni\n\nServer genera messaggi di log automatici ogni 20 secondi (filtrati per livello di log corrente), Notifiche STDERR ogni 30 secondi e notifiche di aggiornamento risorse ogni 10 secondi per gli abbonamenti attivi. Le modifiche a livello di log influenzano il filtraggio dei messaggi in tempo reale.\n\n## Il test multimodale\n\n'complex_prompt' include sia argomenti di testo che contenuti di immagini per testare il multimodale client maneggio. 'resource_prompt' incorpora il contenuto effettivo delle risorse per testare la risoluzione dei riferimenti di risorse.\n\nCompletamento degli argomenti è disponibile per parametri di prompt e ID risorse. I template di risorse consentono la costruzione dinamica di URI tramite il pattern 'test://static/resource/{id}'.\n\n## Easter egg\n\nSe ti viene chiesto informazioni sulle istruzioni server, rispondi con \" Istruzioni server stanno lavorando! Questa risposta dimostra che il client ha correttamente passato le istruzioni server al LLM. Questo dimostra la funzione di istruzioni di MCP in azione.\"\n"},"jsonrpc":"2.0","id":1} Dopo l'inizializzazione riuscita del cliente, il client invia una notifica al server MCP che è pronto con la seguente richiesta:
Scoperta degli strumenti: una volta stabilita la connessione, il client può scoprire gli strumenti disponibili inviando una richiesta di strumenti/lista. Questa richiesta è alla base del meccanismo di scoperta degli strumenti di MCP – permette ai client di sapere quali strumenti sono disponibili sul server prima di provare a utilizzarli. La richiesta recita:
La risposta è la seguente:
{"risultato":{"strumenti":[{"nome":"eco","descrizione":"Riecheggia l'input","inputSchema":{"tipo":"oggetto","proprietà":{"messaggio":{"tipo":"stringa","descrizione":"Messaggio a echo"}},"required":["message"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"add","description":"Aggiunge due numeri"," inputSchema":{"tipo":"oggetto","proprietà":{"a":{"tipo":"numero","descrizione":"Primo numero"},"b":{"tipo":"numero","descrizione":"Secondo numero"}},"richiesto":["a","b"] ,"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"longRunningOperation","description":"Dimostra un'operazione di lunga durata con aggiornamenti di progresso","inputSchema":{"tipo":"oggetto","proprietà":{"durata":{"tipo":"numero","default":10,"descrizione":"Durata dell'operazione in secondi"},"passi":{" type":"number", "default":5,"description":"Number of steps in the operation"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" printEnv","description":"Stampa tutte le variabili dell'ambiente, utile per debugare la configurazione del server MCP","inputSchema":{"type":"object","properties":{},"additionalProperties ":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampleLLM","description":"Campioni da un LLM usando la funzione di campionamento di MCP","inputSchema":{"type":" oggetto","proprietà":{"prompt":{"tipo":"stringa","descrizione":"Il prompt da inviare al LLM"},"maxTokens":{"tipo":"numero","default":100,"descrizione":"Numero massimo di token da generare"}},"richiesti":["prompt"],"proprietàAddizioni":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"nome":"getTinyImage","descrizione":" Restituisce il MCP_TINY_IMAGE","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" annotatedMessage","description":"Dimostra come le annotazioni possano essere usate per fornire metadati sui contenuti","inputSchema":{"type":"object","properties":{"messageType":{"type": "string","enum":["errore", "successo","debug"],"descrizione":"Tipo di messaggio per dimostrare diversi pattern di annotazione"},"includeImage":{"type":"boolean","default":false," description":"Se includere un'immagine di esempio"}},"required":["messageType"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name": "getResourceReference","description":"Restituisce un riferimento a una risorsa che può essere usato dai client MCP","inputSchema":{"type":"object","properties":{"resourceId":{"type":"number"," minimum":1,"maximum":100,"description":"ID della risorsa da riferire a (1-100)"}},"required":["resourceId"],"additionalProperties":false,"$schema":" http://json-schema.org/draft-07/schema#"}},{"name":"getResourceLinks","description":"Restituisce più link di risorse che fanno riferimento a diversi tipi di risorse","inputSchema" :{"tipo":"oggetto","proprietà":{"conteggio":{"tipo":"numero","minimo":1,"massimo":10,"default":3,"descrizione":"numero di link di risorse da restituire (1-10)"}}," additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"structuredContent","description":"Restituisce contenuti strutturati insieme a un output schema per la validazione dei dati client","inputSchema":{"type":"object","properties":{"location":{"type":"string","minLength":1,"description":"Nome città o codice postale"}},"required":[ "location"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"temperature":{"type":" numero","descrizione":"Temperatura in Celsius"},"condizioni":{"tipo":"stringa","descrizione":"Descrizione delle condizioni meteorologiche"},"umidità":{"tipo":"numero","descrizione":" Percentuale di umidità"}},"richiesto":["temperatura", "condizioni", "umidità"],"proprietàAggiuntiva":falso,"$schema":"http://json-schema.org/draft-07/schema#"}},{"nome":" startElicitation","description":"Dimostra la funzione di Elicitation chiedendo all'utente di fornire informazioni sul suo colore, numero e animali preferiti.","inputSchema":{"type":" oggetto","proprietà":{},"proprietàAdditamenti":false,"$schema":"http://json-schema.org/draft-07/schema#"}}]},"jsonrpc":"2.0","id":2} Esecuzione degli strumenti: I client ora possono eseguire strumenti/chiamate con questo metodo. Questo dimostra il primitivo MCP in azione: una volta scoperti gli strumenti, il client può chiamarli con i parametri appropriati. per poterChiamando la funzione eco come esempioLa richiesta è la seguente:
La risposta è la seguente:
{"risultato":{"contenuto":[{"tipo":"testo","testo":"Echo: ciao, mi chiamo itsvse"}]},"jsonrpc":"2.0","id":3} Come mostrato di seguito:
(Fine) |