
MCP ã®ä»æ§ (4) - åºæ¬ãããã³ã« - ã©ã€ããµã€ã¯ã«
以äžã®èšäºãé¢çœãã£ãã®ã§ãç°¡åã«ãŸãšããŸããã
åå
1. ã©ã€ããµã€ã¯ã«
ãMCPãã¯ãã¯ã©ã€ã¢ã³ããµãŒãæ¥ç¶ã®å³æ Œãªã©ã€ããµã€ã¯ã«ãå®çŸ©ããé©åãªæ©èœããŽã·ãšãŒã·ã§ã³ãšç¶æ 管çãä¿èšŒããŸãã
ã»Initialization
æ©èœããŽã·ãšãŒã·ã§ã³ãšãããã³ã«ããŒãžã§ã³ã®åæ
ã»Operation
éåžžã®ãããã³ã«éä¿¡
ã»Shutdown
æ¥ç¶ã®æ£åžžãªçµäº

2. ã©ã€ããµã€ã¯ã«ãã§ãŒãº
2-1. Initialization
Initializationãã§ãŒãºã¯ãã¯ã©ã€ã¢ã³ããšãµãŒãéã®æåã®ããåãã§ãªããã°ãªããŸããããã®ãã§ãŒãºã§ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒãã¯ä»¥äžã®åŠçãè¡ããŸãã
ã»ãããã³ã«ããŒãžã§ã³ã®äºææ§ã確ç«ãã
ã»æ©èœã®äº€æãšããŽã·ãšãŒã·ã§ã³ãè¡ã
ã»å®è£ ã®è©³çްãå ±æãã
ã¯ã©ã€ã¢ã³ãã¯ã以äžã®æ å ±ãå«ãåæåãªã¯ãšã¹ããéä¿¡ããããšã«ããããã®ãã§ãŒãºãéå§ããªããã°ãªããŸããã
ã»ãµããŒããããŠãããããã³ã«ããŒãžã§ã³
ã»ã¯ã©ã€ã¢ã³ãã®æ©èœ
ã»ã¯ã©ã€ã¢ã³ãã®å®è£ æ å ±
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {
"roots": {
"listChanged": true
},
"sampling": {},
"elicitation": {}
},
"clientInfo": {
"name": "ExampleClient",
"title": "Example Client Display Name",
"version": "1.0.0"
}
}
}ãµãŒãã¯èªèº«ã®æ©èœãšæ å ±ã§å¿çããªããã°ãªããŸããã
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
"capabilities": {
"logging": {},
"prompts": {
"listChanged": true
},
"resources": {
"subscribe": true,
"listChanged": true
},
"tools": {
"listChanged": true
}
},
"serverInfo": {
"name": "ExampleServer",
"title": "Example Server Display Name",
"version": "1.0.0"
},
"instructions": "Optional instructions for the client"
}
}åæåãæåããåŸãã¯ã©ã€ã¢ã³ãã¯éåžžã®æäœãéå§ããæºåãã§ããŠããããšã瀺ãåæåéç¥ãéä¿¡ããå¿ èŠããããŸãã
{
"jsonrpc": "2.0",
"method": "notifications/initialized"
}ã»ã¯ã©ã€ã¢ã³ãã¯ããµãŒããåæåèŠæ±ã«å¿çããåã«ãping 以å€ã®èŠæ±ãéä¿¡ãã¹ãã§ã¯ãããŸããã
ã»ãµãŒãã¯ãåæåéç¥ãåä¿¡ããåã«ãping ãšãã°èšé²ä»¥å€ã®èŠæ±ãéä¿¡ãã¹ãã§ã¯ãããŸããã
ã»ããŒãžã§ã³ããŽã·ãšãŒã·ã§ã³
ã¯ã©ã€ã¢ã³ãã¯ãåæåãªã¯ãšã¹ãã«ãããŠããµããŒããããããã³ã«ããŒãžã§ã³ãéä¿¡ããªããã°ãªããŸããïŒMUSTïŒãããã¯ãã¯ã©ã€ã¢ã³ãããµããŒãããææ°ããŒãžã§ã³ã§ããå¿
èŠããããŸãã
ãµãŒããèŠæ±ããããããã³ã«ããŒãžã§ã³ããµããŒãããŠããå ŽåãåãããŒãžã§ã³ã§å¿çããªããã°ãªããŸããïŒMUSTïŒãããã§ãªãå ŽåããµãŒãã¯ãµããŒãããå¥ã®ãããã³ã«ããŒãžã§ã³ã§å¿çããªããã°ãªããŸããïŒMUSTïŒãããã¯ããµãŒãããµããŒãããææ°ããŒãžã§ã³ã§ããå¿
èŠããããŸãã
ã¯ã©ã€ã¢ã³ãããµãŒãã®å¿çã§ãµããŒãããŠããªãããŒãžã§ã³ããµããŒãããŠããå Žåãæ¥ç¶ãåæããå¿
èŠããããŸãïŒSHOULDïŒã
HTTPã䜿çšããå Žåãã¯ã©ã€ã¢ã³ãã¯MCPãµãŒããžã®åŸç¶ã®ãã¹ãŠã®ãªã¯ãšã¹ãã«MCP-Protocol-Version: <protocol-version> HTTPããããŒãå«ããå¿ èŠããããŸãã詳现ã«ã€ããŠã¯ãããã©ã³ã¹ããŒããã®ããããã³ã«ããŒãžã§ã³ããããŒãã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
ã»æ©èœããŽã·ãšãŒã·ã§ã³
ã¯ã©ã€ã¢ã³ããšãµãŒãã®æ©èœã«ãããã»ãã·ã§ã³äžã«å©çšå¯èœãªãªãã·ã§ã³ã®ãããã³ã«æ©èœã決å®ãããŸãã
äž»ãªæ©èœã¯æ¬¡ã®ãšããã§ãã
â ã¯ã©ã€ã¢ã³ã
ã»roots
ãã¡ã€ã«ã·ã¹ãã ã«ãŒãã®æäŸãå¯èœ
ã»sampling
LLMãµã³ããªã³ã°ãªã¯ãšã¹ãã®ãµããŒã
ã»elicitation
ãµãŒãã®æœåºãªã¯ãšã¹ãã®ãµããŒã
ã»experimental
éæšæºã®è©Šéšçæ©èœã®ãµããŒãã«ã€ããŠèª¬æ
â ãµãŒã
ã»prompts
ããã³ãããã³ãã¬ãŒããæäŸ
ã»resources
èªã¿åãå¯èœãªãªãœãŒã¹ãæäŸ
ã»tools
åŒã³åºãå¯èœãªããŒã«ãå ¬é
ã»logging
æ§é åããããã°ã¡ãã»ãŒãžãåºå
ã»completions
åŒæ°ã®èªåè£å®ããµããŒã
ã»experimental
éæšæºã®è©Šéšçæ©èœã®ãµããŒãã«ã€ããŠèª¬æ
æ©èœãªããžã§ã¯ãã¯ã次ã®ãããªãµãæ©èœãèšè¿°ã§ããŸãã
ã»listChanged
ãªã¹ãã®å€æŽéç¥ã®ãµããŒã (ããã³ããããªãœãŒã¹ãããŒã«çš)
ã»subscribe
åã ã®ã¢ã€ãã ã®å€æŽã®è³Œèªã®ãµããŒã (ãªãœãŒã¹ã®ã¿)
2-2. Operation
Operationãã§ãŒãºã§ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒãã¯ããŽã·ãšãŒããããæ©èœã«åŸã£ãŠã¡ãã»ãŒãžã亀æããŸãã
åæ¹ã¯ä»¥äžã®èŠä»¶ãæºããå¿
èŠããããŸãã
ã»ããŽã·ãšãŒãããããããã³ã«ããŒãžã§ã³ãå°éãã
ã»ããŽã·ãšãŒãã«æåããæ©èœã®ã¿ã䜿çšãã
2-3. Shutdown
Shutdownãã§ãŒãºã§ã¯ãäžæ¹ (éåžžã¯ã¯ã©ã€ã¢ã³ã) ããããã³ã«æ¥ç¶ãã¯ãªãŒã³ã«çµäºããŸããç¹å®ã®ã·ã£ããããŠã³ã¡ãã»ãŒãžã¯å®çŸ©ãããŠããŸããã代ããã«ãåºç€ãšãªããã©ã³ã¹ããŒãã¡ã«ããºã ã䜿çšããŠæ¥ç¶çµäºãéç¥ããå¿ èŠããããŸãã
ã»stdio
stdio ãã©ã³ã¹ããŒãã®å Žåãã¯ã©ã€ã¢ã³ãã¯ä»¥äžã®æ¹æ³ã§ã·ã£ããããŠã³ãéå§ããå¿
èŠããããŸãã
(1) ãŸããåããã»ã¹ (ãµãŒã) ãžã®å ¥åã¹ããªãŒã ãéããŸãã
(2) ãµãŒããçµäºããã®ãåŸ ã¡ãŸãããµãŒããé©åãªæéå ã«çµäºããªãå Žå㯠SIGTERM ãéä¿¡ããŸãã
(3) SIGTERM éä¿¡åŸãé©åãªæéå ã«ãµãŒããçµäºããªãå Žå㯠SIGKILL ãéä¿¡ããŸãã
ãµãŒãã¯ãã¯ã©ã€ã¢ã³ããžã®åºåã¹ããªãŒã ãéããŠçµäºããããšã§ã·ã£ããããŠã³ãéå§ã§ããŸãã
ã»HTTP
HTTP ãã©ã³ã¹ããŒãã®å Žåãã·ã£ããããŠã³ã¯é¢é£ãã HTTP æ¥ç¶ãéããããšã§ç€ºãããŸãã
3. ã¿ã€ã ã¢ãŠã
å®è£
ã¯ãæ¥ç¶ã®ãã³ã°ããªãœãŒã¹æ¯æžãé²ããããéä¿¡ããããã¹ãŠã®ãªã¯ãšã¹ãã«ã¿ã€ã ã¢ãŠããèšå®ããå¿
èŠããããŸãïŒSHOULDïŒããªã¯ãšã¹ããã¿ã€ã ã¢ãŠãæéå
ã«æåãŸãã¯ãšã©ãŒã®ã¬ã¹ãã³ã¹ãåä¿¡ããªãã£ãå Žåãéä¿¡è
ã¯ãã®ãªã¯ãšã¹ãã®ãã£ã³ã»ã«éç¥ãçºè¡ããã¬ã¹ãã³ã¹ã®åŸ
æ©ã忢ããå¿
èŠããããŸãïŒSHOULDïŒã
SDKããã®ä»ã®ããã«ãŠã§ã¢ã¯ããããã®ã¿ã€ã ã¢ãŠãããªã¯ãšã¹ãããšã«èšå®ã§ããããã«ããå¿
èŠããããŸãïŒSHOULDïŒã
å®è£
ã¯ããªã¯ãšã¹ãã«å¯Ÿå¿ãã鲿éç¥ãåä¿¡ãããšãã«ã¿ã€ã ã¢ãŠãã¯ããã¯ããªã»ããããããšãéžæã§ããŸãïŒMAYïŒãããã¯ãäœæ¥ãå®éã«è¡ãããŠããããšãæå³ããããã§ãããã ããã¯ã©ã€ã¢ã³ããŸãã¯ãµãŒãã®äžæ£ãªåäœã«ãã圱é¿ãå¶éãããããå®è£
ã¯é²æéç¥ã®æç¡ã«ããããããåžžã«æå€§ã¿ã€ã ã¢ãŠãã匷å¶ããå¿
èŠããããŸãïŒSHOULDïŒã
4. ãšã©ãŒåŠç
å®è£ ã¯ã以äžã®ãšã©ãŒã±ãŒã¹ãåŠçã§ããããã«æºåããŠããå¿ èŠããããŸãã
ã»ãããã³ã«ããŒãžã§ã³ã®äžäžèŽ
ã»å¿ èŠãªæ©èœã®ããŽã·ãšãŒã·ã§ã³å€±æ
ã»ãªã¯ãšã¹ãã®ã¿ã€ã ã¢ãŠã
ã»åæåãšã©ãŒã®äŸ
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32602,
"message": "Unsupported protocol version",
"data": {
"supported": ["2024-11-05"],
"requested": "1.0.0"
}
}
}