ã¯ããã« éçºæ¬éšã§ããªãã·ã¥ãããã³ã®ã¢ããªãŠã§ãã°ããŒã¹åãã®éçºãæ
åœããŠãã hond ã§ãïŒ 9ææ«ã«MCPã®ææ°ä»æ§ã2025/11/25ã«ãªãªãŒã¹ãããããšãçºè¡šãããŸããããã®èšäºã§ã¯ 2024-11-05 ãã 2025-03-26 ã 2025-06-18 ããããŠæ¬¡æ 2025-11-25 ã§ã©ã®ãããªå€æŽãè¡ãããŠãããäž»èŠãªæ©èœãšç§ãç¹ã«èå³ãæã£ãç¹ã«ã€ããŠèª¬æããããšæããŸãã å
æ¥Goå
¬åŒã®MCP SDKã«ã€ããŠçºè¡šããã¹ã©ã€ããããã®ã§ãèå³ã®ããæ¹ã¯ãã²ãã§ãã¯ããŠãã ããã speakerdeck.com MCPãšã¯ MCPïŒModel Context ProtocolïŒã¯ãLLM ã«å€éšã³ã³ããã¹ããå®å
šãã€äžè²«ããæ¹æ³ã§æž¡ãããã®ãªãŒãã³ãããã³ã«ã§ãããããã³ã«ã¯ JSONâRPC 2.0 ã§ãåºæ¬çã«ã¯ stateful ãªæ¥ç¶ãåæãšããŠããŸããäž»èŠãªcomponent㯠Host ã Client ã Server ã®3ã€ã§ãIDE ããã£ãããªã©ã®å®è¡ç°å¢ïŒ Host ïŒãšãå®éã« Server ãšããåããè¡ã Client ã Server ããšã«çæãããŸã MCP Architecture äž»èŠæ©èœ Client ã«ã¯äœæ¥ã®èµ·ç¹ã瀺ã Roots ãšãLLMãžã®çæäŸé Œãè¡ã Sampling ãããã Server ã«ã¯å®è¡å¯èœãªæ©èœäžèЧãè¿ã Tools ããã¡ã€ã«ãããŒã¿ããŒã¹ã¹ããŒããªã©LLMãã³ã³ããã¹ããšããŠå©çšå¯èœãªãœãŒã¹ãå
¬éãã Resources ãåå©çšå¯èœãª Prompts ãçšæãããŠããŸãã ããŒãžã§ãã³ã°ã®åå MCPã®ä»æ§ã¯ãªãªãŒã¹ãããæ¥ä»ïŒ YYYY-MM-DD ïŒã§ç®¡çãããŠããŸããåæåæã«ã¯ Client / Server éã§å©çšå¯èœãªããŒãžã§ã³ã®åæãè¡ããŸãã 以éã®ç« ã§ã¯ããŒãžã§ã³ããšã®äž»èŠãªå€æŽç¹ã«ã€ããŠãŸãšããŠãããŸãã 2024-11-05 æŠèŠ æåã®å®å®çã«ããã 2024-11-05 ã§ã¯ãéä¿¡æ¹åŒã»ã©ã€ããµã€ã¯ã«ã»æ©èœçŸ€ã®åå°ãå®çŸ©ãããŸããããã£ããã®å
šäœåã¯æ¬¡ã®ãšããã§ãã Transport: HTTP+SSEãstdio ããŒã¹: JSON-RPC 2.0 / Base lifecycle / Capabilities Client: Roots / Sampling Server: Tools / Resources / Prompts ãŠãŒãã£ãªãã£: Pagination / Logging / Completion Client Roots Client ããã©ããèµ·ç¹ã«åãã®ãããã¡ã€ã«ã·ã¹ãã ã®ã«ãŒããæç€ºããã®ã Roots ã§ããåæåãã§ãŒãºã§ Server ã Roots ã確èªãããã®åŸã®æäœã¯ãã®ç¯å²ïŒã¯ãŒã¯ã¹ããŒã¹ãã«ãŒããã£ã¬ã¯ããªãªã©ïŒã®äžã§è¡ãããŸãã Sampling Server ã Client ãä»ããŠLLMã«çæãè£å®ãäŸé Œããä»çµã¿ã§ããã¢ãã«ã®ãã³ããåªå
床ãããŒã¯ã³æ°ãªã©ãæå®ããŠã察話çæãæè»ã«ã³ã³ãããŒã«ã§ããŸãã Sampling ã䜿ããšçæã»è£å®ã¯LLMã«ä»»ããããšãã§ãã Server ã¯ç¹å®ã®ãã¡ã€ã³ç¥èãæ±ããå¿
èŠããªããªããŸãã äŸ Sampling - Model Context Protocol äžèšãå
¬åŒããåŒçšããäŸã«ãªããŸãã ãã©ã³ã¹ã®éŠéœã«é¢ããæ
å ±ãLLMã«è£å®ãããããšã§ Server ãããããã®æ
å ±ãæã€å¿
èŠããªãããŠããŸãã Request { " jsonrpc ": " 2.0 ", " id ": 1 , " method ": " sampling/createMessage ", " params ": { " messages ": [ { " role ": " user ", " content ": { " type ": " text ", " text ": " What is the capital of France? " } } ] , " modelPreferences ": { " hints ": [{ " name ": " claude-3-sonnet " }] , " intelligencePriority ": 0.8 , " speedPriority ": 0.5 } , " systemPrompt ": " You are a helpful assistant. ", " maxTokens ": 100 } } Response { " jsonrpc ": " 2.0 ", " id ": 1 , " result ": { " role ": " assistant ", " content ": { " type ": " text ", " text ": " The capital of France is Paris. " } , " model ": " claude-3-sonnet-20240307 ", " stopReason ": " endTurn " } } Server Tools ãã¡ã€ã«æäœãå€éš API åŒã³åºããªã©ã®Serverãè¡ããã¢ã¯ã·ã§ã³ãã Client ã«å
¬éããæ©èœã§ãã Client ã¯Toolsããå®è¡ãããæ©èœãéžæããå¿
èŠãªåŒæ°ãæž¡ããŠå®è¡ããŸãã Resources Server ã Client ã«ãã¡ã€ã«ãããŒã¿ããŒã¹ã¹ããŒããªã©ã® Server ãæããæ
å ±ãå
¬éããæ©èœã§ããåãªãœãŒã¹ã¯URIã«ãã£ãŠå
¬éããã Client ã¯ãããã®æ
å ±ãLLMã«ã³ã³ããã¹ããšããŠå©çšããããšãå¯èœã§ãã äŸ Resources - Model Context Protocol äžèšã¯Resourceã®äžèЧååŸã«é¢ããRequestãšResponseã«ãªããŸãã Request { " jsonrpc ": " 2.0 ", " id ": 1 , " method ": " resources/list ", " params ": { " cursor ": " optional-cursor-value " } } Response { " jsonrpc ": " 2.0 ", " id ": 1 , " result ": { " resources ": [ { " uri ": " file:///project/src/main.rs ", " name ": " main.rs ", " description ": " Primary application entry point ", " mimeType ": " text/x-rust " } ] , " nextCursor ": " next-page-cursor " } } Prompts Server ãå©çšå¯èœãªããã³ããã®é圢ãå
¬éããæ©èœã§ãã Client 㯠prompts/list ã§åè£ãèŠã€ãã prompts/get ã§ãã³ãã¬ãŒãæ¬æãšå€æ°ãååŸããŸãã 2025-03-26 2025-03-26 ã§ã¯èªèšŒæ¹åŒã®è¿œå ãéä¿¡æ¹åŒã®æ¹åãã¹ããŒãã®æ¹åãè¡ãããŸããã( Key Changes )以éã¯ãã®äžã§ãMajor changesã«åœããOAuth,Streamable HTTP,JSON-RPC Batching,Tool Annotationsã«ã€ããŠèª¬æããŸãã Authorization Framework HTTPããŒã¹ã®Transportã§ã¯OAuth 2.0,OAuth 2.1ã®ä»æ§ã«åºã¥ããAuthorizationã®å®è£
ãæšå¥šãããããã«ãªããŸãããstdioã§ã¯Authorizationã¯éæšå¥šãšãªã£ãŠãã代ããã«ç°å¢å€æ°ãçšããæ¹åŒãæšå¥šãããŠããŸãã ãã®ä»æ§è¿œå ã«ããåèšèªSDKãèªèšŒãå
¬åŒæäŸããæ§ã«ãªã£ãã®ã§ãäŒæ¥ãªã©äžç¹å®å€æ°ã«MCPãæäŸããéã«ç¹å®ã®ãŠãŒã¶ãŒã®ã¿ã«å¶éããå®è£
ã容æã«ãªããŸããã Streamable HTTP Transportã®æšå¥šãstdio,HTTP+SSEããstdio,Sreamable HTTPã«å€æŽãããŸãããããã«ãã Client ãšããŠã¯åäžã®ãšã³ããã€ã³ãã§åæ¹åã®éä¿¡ãå¯èœã«ãªãã®ã§ä»¥åããå®è£
ã容æã«ãªããŸãã åæ¹åã®éä¿¡ãå®çŸããããã«ãªãWebSocketãæ¡çšããªãã£ãã®ããªã©Sreamable HTTPã«ç§»è¡ããã«ããã詳现ãªå€æçç±ã¯ãã¡ãã® PR ã«èšè¿°ãããŠããŸãã JSON-RPC Batching è€æ°ã®ãªã¯ãšã¹ãããŸãšããŠéãä»çµã¿ã§ããJSON-RPC Batchingãå°å
¥ãããŸããã JSON-RPC 2.0 ã®ä»æ§ã«ã¯Batchingãå®çŸ©ãããŠãããã®ã®ãMCPã®ä»æ§ã§ã¯æç¢ºåãããŠãããJSON-RPCã®ä»æ§ããå€ããç¶æ
ã«ãªã£ãŠããããšããããã®ã¿ã€ãã³ã°ã§ä»æ§æžå«ãæèšãããæ§ã«ãªããŸããã äŸ [ { " jsonrpc ": " 2.0 ", " id ": 1 , " method ": " tools/list ", " params ": {}} , { " jsonrpc ": " 2.0 ", " id ": 2 , " method ": " resources/list ", " params ": {}} ] Tool Annotations inputSchema / description ã ãã§ã¯äŒããã¥ããåäœç¹æ§ïŒreadâonly / destructive / sensitive ãªã©ïŒãæç€ºããããã«Tool Annotationsã远å ãããŸããã ããã«ããLLMãToolå©çšããéã®å€æåºæºããããŸã§ããæç¢ºã«ãªããããå Žé¢ã«ãã£ãTooléžæãé©åã«è¡ããæ§ã«ãªããŸããã 2025-06-18 2025-06-18 ã§ã¯ãã»ãã¥ãªãã£ãšçžäºéçšæ§ã®åŒ·åãå®è£
ã®ç°¡çŽ åãäžå¿ã«æ¹åãè¡ãããŸããã( Key Changes )以éã¯JSON-RPC Batchingã®åé€ãStructured Tool OutputãElicitationã®å
容ãæç²ã説æããŸãã JSON-RPC Batchingã®åé€ åããŒãžã§ã³ã§ãã 2025-03-26 ã§ãJSONâRPCæºæ ããšããŠå°å
¥ããããããã³ã°ã§ãããå®éçšé¢ã§æ¡çšã䌞ã³ãèšèªSDKã»ã¹ããªãŒãã³ã°ãšã®äž¡ç«ã§å®è£
ã®è€éããå¢ããããåé€ãããŸããã Structured Tool Output Toolã®çµæãæ§é åããŒã¿ãšããŠè¿ããæ©èœã远å ãããŸãããããã«ãã Client ã¯ã¬ã¹ãã³ã¹ãæ€èšŒå¯èœã«ãªãããããåå®å
šãªéçšãå¯èœã«ãªããŸãã æ¢åã®ä»æ§ã§ã¯ã¹ããŒããåºå®ãããŠããªãã£ãããæè»ãªJSONããŒã¹ãæ±ããããŠããŸããããåãå³å¯ã«ãªãããã¬ã¹ãã³ã¹ã«å¿ãã Client ã®åäœãè¡ãããšãå¯èœã«ãªããŸãã äŸ Tools - Model Context Protocol Tool { " name ": " get_weather_data ", " title ": " Weather Data Retriever ", " description ": " Get current weather data for a location ", " inputSchema ": { " type ": " object ", " properties ": { " location ": { " type ": " string ", " description ": " City name or zip code " } } , " required ": [ " location " ] } , " outputSchema ": { " type ": " object ", " properties ": { " temperature ": { " type ": " number ", " description ": " Temperature in celsius " } , " conditions ": { " type ": " string ", " description ": " Weather conditions description " } , " humidity ": { " type ": " number ", " description ": " Humidity percentage " } } , " required ": [ " temperature ", " conditions ", " humidity " ] } } Response { " jsonrpc ": " 2.0 ", " id ": 5 , " result ": { " content ": [ { " type ": " text ", " text ": " { \" temperature \" : 22.5, \" conditions \" : \" Partly cloudy \" , \" humidity \" : 65} " } ] , " structuredContent ": { " temperature ": 22.5 , " conditions ": " Partly cloudy ", " humidity ": 65 } } } Elicitation Server ãToolå®è¡ã«å¿
èŠãªäžè¶³æ
å ±ãã Client çµç±ã§ãŠãŒã¶ãŒã«å°ããæ©èœã§ããElicitationã®å
容ãšããŠã¯åçŽã«åæãæ±ãããã®ããå®éã«emailãªã©æååã®å
¥åãæ±ãããã®ãå¯èœã§ãã ãŸãStructured Tool Outputãšçµã¿åãããããšã§ããæè»ãªå€ãåå®å
šã«æ±ãããšãå¯èœã§ãã ã¹ããŒãã¯äžèšã®4ã€ã®åããµããŒããããŠããŸãã String Number Boolean Enum äŸ Elicitation - Model Context Protocol äžèšã®äŸã¯ Server ããŠãŒã¶ãŒã«å¯ŸããŠãååããã¡ãŒã«ã¢ãã¬ã¹ãã幎霢ãã®å
¥åãæ±ãããã®ã«ãªããŸãã Request { " jsonrpc ": " 2.0 ", " id ": 2 , " method ": " elicitation/create ", " params ": { " message ": " Please provide your contact information ", " requestedSchema ": { " type ": " object ", " properties ": { " name ": { " type ": " string ", " description ": " Your full name " } , " email ": { " type ": " string ", " format ": " email ", " description ": " Your email address " } , " age ": { " type ": " number ", " minimum ": 18 , " description ": " Your age " } } , " required ": [ " name ", " email " ] } } } Response { " jsonrpc ": " 2.0 ", " id ": 2 , " result ": { " action ": " accept ", " content ": { " name ": " Monalisa Octocat ", " email ": " octocat@github.com ", " age ": 30 } } } 2025-11-25 æåŸã«ãªãªãŒã¹äºå®ã® 2025-11-25 ã«ã€ããŠå®è£
ã«ãããç¹ã«æèããå¿
èŠããããããªç¹ããŸãšããŸãããã®ããŒãžã§ã³ã«ã€ããŠã¯çŸç¶ãŸã 仿§ããªãªãŒã¹ãããŠããªãã®ã§ mcp blog ãå
ã«èª¬æããŸãã éåæåŠç çŸç¶ã®å®è£
ã§ã¯MCPã¯åŠçããã¹ãŠåæçã«åŠçãè¡ãããŸãããããããã¹ãŠã®Toolã®åŠçãããçµããããã§ã¯ãªã倧éã®ãã¡ã€ã«ã®å
¥åºåãªã©ã¯èšå€§ãªæéãèŠããŸããããã«ããç§»è¡ã®åŠçããããã¯ãããŠããŸãåé¡ããããŸããããããã®åé¡ãããã«é·ãæéãèŠããæäœãå¯èœã«ããããã«éåæåŠçã®è¿œå ãææ¡ãããŠããŸãã詳现ã«ã€ããŠã¯ãã¡ãã® issue ãã確èªããããšãå¯èœã§ãã éåæåŠçã®å
·äœçãªå®è¡ãããŒã¯äžèšãæç€ºãããŠããŸãã Client ã tools/list ãçšããŠToolã®çºèŠè¡ã tools/call ãçšããŠéåæToolã®å®è¡ããªã¯ãšã¹ãããããã®éã« Server ã¯ããã¯ã°ã©ãŠã³ãã§ã®å®è¡éå§ããéåæåŠçã远跡ããããã®Tokenã Client ã«è¿ã Client ã¯Tokenãçšã㊠tools/async/status ãåŒã³åºãéåæåŠçã®å®è¡ã¹ããŒã¿ã¹ãååŸãã å®è¡å®äºã¹ããŒã¿ã¹ãååŸåŸ Client 㯠tools/async/result ãåŒã³åºãçµæãååŸãã Server ã¯ã¯ãªãŒã³ã¢ããåŠçãè¡ã å
¬åŒæ¡åŒµ MCPã®æé·ã«äŒŽãç¹å®ã®åéã«ãããŠãå®è£
ãã¿ãŒã³ãåºãŸãã€ã€ããããã§ãããããã®å
容ã仿§ã«èšè¿°ããã®ã§ã¯ãªãä»åŸã¯å
¬åŒæ¡åŒµãšããåŽé¢ã§ãããã³ã«æ¡åŒµæ©èœãšããŠææžåããŠããæ¹éãæç€ºãããŠããŸããããã«ãã£ãŠç¹å®ã®åéã«ãããMCPã®å®è£
ãããå éããããšãèŠèŸŒãŸããŠããããã§ãã ãŸãšã ä»åã¯MCPã®æ£åŒãªãªãŒã¹ãããããŒãžã§ã³ 2024-11-05 ããæ¬¡æãªãªãŒã¹ã® 2025-11-25 ã®äž»èŠãªå€æŽç¹ã«ã€ããŠãŸãšããŸãããJSON-RPC Batchã®è¿œå ã»åé€ã®ããã«å©çšããããããæè»ã«ä»æ§ã倿ŽããŠããå§¿å¢ãå©çšè
ãšããŠã¯å¥œæãæãŠããªãšæããŸãããç§èªèº«Goã®å
¬åŒMCP SDKã«é¢å¿ãããã®ã§ 2025-11-25 ã®ä»æ§ãç¢ºå®æ¬¡ç¬¬æ¹ããŠä»æ§ã®è©³çŽ°ç¢ºèªããŠè¿œã£ãŠããããšæããŸããã ãŸãã blogæ«å°Ÿ ã«TypescriptãSwiftã®ã¡ã³ãããŒãäžè¶³ããŠããæšãèšè¿°ãããŠããã®ã§æ©äŒããã£ãããã£ã¬ã³ãžããŠã¿ããã§ãã ãããŸã§èªãã§ããã ãããããšãããããŸããMCPã®ä»æ§ã远ã£ãŠããæ¹ã®åèã«ãªã£ãã幞ãã§ãã åèè³æ 仿§ 2024-11-05: spec.modelcontextprotocol.io/specification/2024-11-05 仿§ 2025-03-26: spec.modelcontextprotocol.io/specification/2025-03-26 仿§ 2025-06-18: spec.modelcontextprotocol.io/specification/2025-06-18 仿§ Draft: spec.modelcontextprotocol.io/specification/draft MCP Blog: blog.modelcontextprotocol.io SEP-1391ïŒéåæã®ææ¡ïŒ: github.com/modelcontextprotocol/modelcontextprotocol/issues/1391