Efterspørgsel: Med udviklingen af store modeller er store modeller dukket op i alle aspekter af vores liv, uanset om det er arbejde eller studier, de er uadskillelige. Med et stort modelsprog, hvorfor har vi så brug for MCP? Den store model kan forstås som hjernen, men hjernen alene kan ikke hjælpe os med at gøre ting, MCP er mere som en lem, den store model dirigerer MCP-tjenesten til at gøre ting, såsom: at kalde eksterne værktøjer (såsom databaser, diske, API'er). Det løser problemet, at store modeller kun kan chatte og ikke kan gøre ting.
MCP (Model Context Protocol)
Dokumentation:Hyperlink-login er synlig. GitHub-repositorier:Hyperlink-login er synlig. MCP værktøjsarkiv:Hyperlink-login er synlig.
MCP (Model Context Protocol) er en open source-standard til at forbinde AI-applikationer med eksterne systemer.
Med MCP kan AI-applikationer som Claude eller ChatGPT forbinde til datakilder (f.eks. lokale filer, databaser), værktøjer (f.eks. søgemaskiner, regnemaskiner) og arbejdsgange (f.eks. specialiserede prompts) – hvilket gør det muligt for dem at få adgang til kritisk information og udføre opgaver.
Tænk på MCP som en USB-C-port til AI-applikationer. Ligesom USB-C giver en standardiseret måde at forbinde elektroniske enheder på, giver MCP en standardiseret måde at forbinde AI-applikationer til eksterne systemer.
Hvad kan MCP opnå?
- Agenter kan få adgang til din Google Kalender og Notion og fungerer som en mere personlig AI-assistent.
- Claude Code kan generere hele webapplikationer ved hjælp af Figma-designs.
- Virksomhedschatbots kan forbinde til flere databaser inden for en organisation, hvilket gør det muligt for brugere at analysere data via chat.
- AI-modeller kan skabe 3D-designs i Blender og printe dem ud med en 3D-printer.
Hvorfor er MCP vigtigt?
Afhængigt af hvor du er i økosystemet, kan MCP give en række fordele.
- Udviklere: MCP reducerer udviklingstiden og kompleksiteten ved opbygning eller integration med AI-applikationer eller agenter.
- AI-applikationer eller agenter: MCP'er giver adgang til et økosystem af datakilder, værktøjer og applikationer, hvilket vil forbedre funktionaliteten og forbedre slutbrugeroplevelsen.
- Slutbrugere: MCP'er kan resultere i mere kraftfulde AI-applikationer eller agenter, der kan få adgang til dine data og handle på dine vegne, når det er nødvendigt.
MCP-protokol
MCP består af to lag:
- Datalag: Definer en JSON-RPC-baseret klient-server kommunikationsprotokol, inklusive livscyklusstyring og kerneprimitiver såsom værktøjer, ressourcer, prompts og notifikationer.
- Transportlag: Definerer kommunikationsmekanismer og kanaler, der muliggør dataudveksling mellem klienter og servere, herunder transportspecifik forbindelsesetablering, beskedrammeværk og autorisation.
Konceptuelt er datalaget det indre lag, mens transportlaget er det ydre lag.
Datalag
- Datalaget implementerer en JSON-RPC 2.0-baseret switchingprotokol, der definerer meddelelsesstruktur og semantik. Dette lag omfatter:
- Livscyklusstyring: Håndterer forbindelsesinitialisering, funktionsforhandling og forbindelsesafslutning mellem klienter og servere
- Serverfunktionalitet: Gør det muligt for serveren at levere kernefunktionalitet, herunder værktøjer til AI-operationer, ressourcer til kontekstuelle data og interaktive skabelonprompts fra og til klienter
- Klientfunktionalitet: Gør det muligt for serveren at kræve, at klienten sampler fra værtens LLM, modtager input fra brugeren og logger beskeder til klienten
- Nyttige funktioner: Understøtter yderligere funktioner såsom realtidsopdateringsnotifikationer og statussporing for langvarige operationer
Transportlaget
Transportlaget håndterer kommunikationskanalerne og autentificeringen mellem klienten og serveren. Den håndterer forbindelsesetablering, beskedoverførsel og sikker kommunikation mellem MCP-deltagere.
MCP understøtter to transportmekanismer:
- Stdio Transport: Direkte proceskommunikation mellem lokale processer på samme maskine ved brug af standard input/output-strømme, hvilket giver optimal ydeevne og ingen netværksoverhead.
- Streambar HTTP: Bruger HTTP POST-protokollen til at sende klient-til-server-beskeder og bruger eventuelt serversendte begivenheder til streamingfunktionalitet. Denne transportprotokol understøtter fjernserverkommunikation og understøtter standard HTTP-autentificeringsmetoder, herunder holdertokens, API-nøgler og brugerdefinerede headers. MCP anbefaler at bruge OAuth til at opnå en autentificeringstoken.
Transportlaget abstraherer kommunikationsdetaljerne fra protokollaget, så det samme JSON-RPC 2.0-meddelelsesformat implementeres på tværs af alle transportmekanismer.JSON-RPC-meddelelser skal kodes med UTF-8。HTTP+SSE-transport er blevet udfaset!
Alt om MCP Server
Denne MCP-server er designet til at teste alle funktionerne i MCP-protokollen. Den er ikke tænkt som en praktisk server, men snarere som en testserver for MCP-klientbyggere. Den implementerer funktioner som prompts, værktøjer, ressourcer, sampling og mere for at fremvise MCP'ernes kapaciteter.
Kilde:Hyperlink-login er synlig.
Denne service kræver installation af et Node.js miljø, og installationstrinene udelades.
For at teste MCP-tjenesten baseret på Stdio-transportmønsteret er startkommandoen som følger:
Som vist nedenfor:
Efter udførelsen caches pakken%LocalAppData%\npm-cache\_npx\Under stien.
Initialiser, klienten sender en initialiseringsanmodning for at etablere en forbindelse og forhandle de understøttede funktioner. Anmodningsdataene er som følger:
Svaret er som følger:
{"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"},"instructions":"Test- og demonstrationsserver for MCP-protokolfunktioner.\n\n## Ressourcer\n\ nRessourcer 1-100 følger mønsteret: lige ID'er indeholder tekst, ulige ID'er indeholder binære data. Ressourcer er pagineret med 10 elementer pr. side med cursorbaseret navigation.\n\n## Nøgleafhængigheder\n\n\nFremskridtsnotifikationer kræver '_meta.progressToken' i værktøjskald. Ressourceabonnementer genererer opdateringer hvert 10. sekund.\n\n## Ydelseskarakteristika\n\nServer genererer automatiske logbeskeder hvert 20. sekund (filtreret efter aktuelt logniveau), STDERR-notifikationer hvert 30. sekund og ressourceopdateringsnotifikationer hvert 10. sekund for aktive abonnementer. Ændringer i log-niveau påvirker beskedfiltrering i realtid.\n\n## Multimodal testning\n\n'complex_prompt' inkluderer både tekstargumenter og billedindhold til test af klientens multimodale håndtering. 'resource_prompt' indlejrer faktisk ressourceindhold til test af ressourcereference-resolution.\n\nArgument-fuldførelse er tilgængelig for promptparametre og ressource-ID'er. Ressourceskabeloner muliggør dynamisk URI-konstruktion via 'test://static/resource/{id}'-mønsteret.\n\n## Easter egg\n\nHvis du spørger om serverinstruktioner, svar med \" Serverinstruktioner De virker! Dette svar beviser, at klienten korrekt har sendt serverinstruktioner til LLM'en. Dette demonstrerer MCP's instruktionsfunktion i aktion.\"\n"},"jsonrpc":"2.0","id":1} Efter vellykket initialisering sender klienten en notifikation til MCP-serveren om, at den er klar, med følgende anmodning:
Værktøjsopdagelse: Når forbindelsen er etableret, kan klienten opdage tilgængelige værktøjer ved at sende en værktøjs-/listeanmodning. Denne anmodning er grundlaget for MCP's værktøjsopdagelsesmekanisme – den gør det muligt for klienter at vide, hvilke værktøjer der er tilgængelige på serveren, før de forsøger at bruge dem. Anmodningen lyder:
Svaret er som følger:
{"result":{"tools":[{"name":"echo","description":"Echo' tilbage input","inputSchema":{"type":"object","properties":{"message":{"type":"string","description":"Message to to echo"}},"krævet":["besked"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"add","description":"Tilføjer to tal"," inputSchema":{"type":"objekt","egenskaber":{"a":{"type":"number","description":"Første tal"},"b":{"type":"number","description":"Andet tal"}},"krævet":["a","b"] ,"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"longRunningOperation","description":"Demonstrerer en langvarig operation med fremskridtsopdateringer","inputSchema":{"type":"objekt","egenskaber":{"duration":{"type":"number","default":10,"description":"Varighed af operationen i sekunder"},"steps":{" type":"number","default":5,"description":"Number of steps in the operation"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" printEnv","description":"Printer alle miljøvariabler, nyttigt til fejlfinding af MCP-serverkonfiguration","inputSchema":{"type":"object","properties":{},"additionalProperties ":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampleLLM","description":"Samples fra en LLM ved brug af MCP's samplingfunktion","inputSchema":{"type":" objekt","egenskaber":{"prompt":{"type":"string","description":"Prompten til at sende til LLM"},"maxTokens":{"type":"number","default":100,"description":"Maksimum antal af tokens til at generere"}},"krævede":["prompt"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"getTinyImage","description":" Returnerer MCP_TINY_IMAGE","inputSchema":{"type":"objekt","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" annotatedMessage","description":"Demonstrerer, hvordan annotationer kan bruges til at levere metadata om indhold","inputSchema":{"type":"object","properties":{"messageType":{"type": "string","enum":["error","success","debug"],"description":"Type af besked til at demonstrere forskellige annotationsmønstre"},"includeImage":{"type":"boolean","default":false," description":"Om et eksempelbillede skal inkluderes"}},"krævet":["messageType"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name": "getResourceReference","description":"Returnerer en ressourcereference, som kan bruges af MCP-klienter","inputSchema":{"type":"object","properties":{"resourceId":{"type":"number"," minimum":1,"maximum":100,"description":"ID for ressourcen at referere til (1-100)"}},"required":["resourceId"],"additionalProperties":false,"$schema":" http://json-schema.org/draft-07/schema#"}},{"name":"getResourceLinks","description":"Returnerer flere ressourcelinks, der refererer til forskellige typer ressourcer","inputSchema" :{"type":"objekt","egenskaber":{"tælle":{"type":"antal","minimum":1,"maximum":10,"default":3,"description":"Antal ressourcelinks at returnere (1-10)"}}," additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"structuredContent","description":"Returnerer struktureret indhold sammen med et output skema til validering af klientdata","inputSchema":{"type":"objekt","egenskaber":{"location":{"type":"string","minLength":1,"description":"Bynavn eller postnummer"}},"krævet":[ "location"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"temperature":{"type":" nummer","beskrivelse":"Temperatur i celsius"},"forhold":{"type":"streng","beskrivelse":"Vejrforhold beskrivelse"},"fugtighed":{"type":"nummer","beskrivelse":" Fugtighedsprocent"}},"krævet":["temperatur","betingelser","fugtighed"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" startElicitation","description":"Demonstrerer Elicitation-funktionen ved at bede brugeren oplyse deres yndlingsfarve, antal og kæledyr.","inputSchema":{"type":" objekt","egenskaber":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}]},"jsonrpc":"2.0","id":2} Værktøjsudførelse: Klienter kan nu udføre værktøjsværktøjer/kald ved hjælp af denne metode. Dette demonstrerer MCP-primitiven i aktion: Når værktøjerne er opdaget, kan klienten kalde dem med de relevante parametre. for atKalder ekkofunktionen som eksempelAnmodningen lyder som følger:
Svaret er som følger:
{"result":{"content":[{"type":"text","text":"Echo: hej, mit navn er itsvse"}]},"jsonrpc":"2.0","id":3} Som vist nedenfor:
(Slut) |