
MCP ã®ä»æ§ (3) - åºæ¬ãããã³ã« - æŠèŠ
以äžã®èšäºãé¢çœãã£ãã®ã§ãç°¡åã«ãŸãšããŸããã
åå
1. åºæ¬ãããã³ã«ã®æŠèŠ
ãMCPãã¯ã飿ºããŠåäœããè€æ°ã®äž»èŠã³ã³ããŒãã³ãã§æ§æãããŠããŸãã
ã»åºæ¬ãããã³ã«
ã³ã¢ãšãªãJSON-RPCã¡ãã»ãŒãžã¿ã€ã
ã»ã©ã€ããµã€ã¯ã«ç®¡ç
æ¥ç¶ã®åæåãæ©èœããŽã·ãšãŒã·ã§ã³ãã»ãã·ã§ã³å¶åŸ¡
ã»æ¿èª
HTTPããŒã¹ã®ãã©ã³ã¹ããŒãã®ããã®èªèšŒããã³æ¿èªãã¬ãŒã ã¯ãŒã¯
ã»ãµãŒãæ©èœ
ãµãŒããŒãå ¬éãããªãœãŒã¹ãããã³ãããããŒã«
ã»ã¯ã©ã€ã¢ã³ãæ©èœ
ã¯ã©ã€ã¢ã³ããæäŸãããµã³ããªã³ã°ãšã«ãŒããã£ã¬ã¯ããªãªã¹ã
ã»ãŠãŒãã£ãªãã£
ãã°èšé²ãåŒæ°è£å®ãªã©ã®æšªæçãªé¢å¿äº
ãã¹ãŠã®å®è£ ã¯ãåºæ¬ãããã³ã«ãšã©ã€ããµã€ã¯ã«ç®¡çã³ã³ããŒãã³ãããµããŒãããå¿ èŠããããŸãããã®ä»ã®ã³ã³ããŒãã³ãã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®ããŒãºã«åºã¥ããŠå®è£ ã§ããŸãã
ãããã®ãããã³ã«å±€ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒãéã®é«åºŠãªã€ã³ã¿ã©ã¯ã·ã§ã³ãå¯èœã«ããªãããæç¢ºãªé¢å¿äºã®åé¢ã確ç«ããŸããã¢ãžã¥ãŒã«èšèšã«ãããå®è£ ã¯å¿ èŠãªæ©èœã ãããµããŒãã§ããŸãã
2. ã¡ãã»ãŒãž
MCPã¯ã©ã€ã¢ã³ããšãµãŒãéã®ãã¹ãŠã®ã¡ãã»ãŒãžã¯ãJSON-RPC 2.0Â ã«æºæ ããå¿ èŠããããŸãããã®ãããã³ã«ã§ã¯ã以äžã®çš®é¡ã®ã¡ãã»ãŒãžãå®çŸ©ãããŠããŸãã
2-1. Requests
Requests ã¯ãæäœãéå§ããããã«ã¯ã©ã€ã¢ã³ããããµãŒãã«ããŸãã¯ãã®éã«éä¿¡ãããŸãã
{
jsonrpc: "2.0";
id: string | number;
method: string;
params?: {
[key: string]: unknown;
};
}ã»Requestsã«ã¯æååãŸãã¯æŽæ°ã®IDãå«ããå¿ èŠããããŸãã
ã»ããŒã¹ã®JSON-RPCãšã¯ç°ãªããIDã¯nullã§ãã£ãŠã¯ãªããŸããã
ã»ãªã¯ãšã¹ãIDã¯ããªã¯ãšã¹ãå ãåãã»ãã·ã§ã³å ã§ä»¥åã«äœ¿çšããŠã¯ãªããŸããã
2-2. Responses
Responses ã¯ãªã¯ãšã¹ããžã®å¿çãšããŠéä¿¡ãããæäœã®çµæãŸãã¯ãšã©ãŒãå«ãŸããŸãã
{
jsonrpc: "2.0";
id: string | number;
result?: {
[key: string]: unknown;
}
error?: {
code: number;
message: string;
data?: unknown;
}
}ã»Responsesã«ã¯ã察å¿ããRequestsãšåãIDãå«ããå¿ èŠããããŸãã
ã»Responsesã¯ããã«ãæåçµæãšãšã©ãŒã«åé¡ãããŸããçµæãŸãã¯ãšã©ãŒã®ããããäžæ¹ãèšå®ããå¿ èŠããããŸããResponsesã«äž¡æ¹ãèšå®ããããšã¯ã§ããŸããã
ã»çµæã¯ä»»æã®JSONãªããžã§ã¯ãæ§é ã«åŸãããšãã§ããŸããããšã©ãŒã«ã¯å°ãªããšããšã©ãŒã³ãŒããšã¡ãã»ãŒãžãå«ããå¿ èŠããããŸãã
ã»ãšã©ãŒã³ãŒãã¯æŽæ°ã§ãªããã°ãªããŸããã
2-3. Notifications
Notifications ã¯ãã¯ã©ã€ã¢ã³ããããµãŒããžããŸãã¯ãµãŒãããã¯ã©ã€ã¢ã³ããžãäžæ¹åã®ã¡ãã»ãŒãžãšããŠéä¿¡ãããŸããåä¿¡è ã¯å¿çãéä¿¡ããŠã¯ãªããŸããã
{
jsonrpc: "2.0";
method: string;
params?: {
[key: string]: unknown;
};
}ã»Notifications ã«ã¯ ID ãå«ããããšã¯ã§ããŸããã
4. èªèšŒ
ãMCPãã¯ãHTTP ã§äœ¿çšããããã®èªå¯ãã¬ãŒã ã¯ãŒã¯ãæäŸããŸããHTTPããŒã¹ã®ãã©ã³ã¹ããŒãã䜿çšããå®è£
ã¯ããã®ä»æ§ã«æºæ ããå¿
èŠããããŸãïŒSHOULDïŒãäžæ¹ãSTDIO ãã©ã³ã¹ããŒãã䜿çšããå®è£
ã¯ããã®ä»æ§ã«åŸããã代ããã«ç°å¢ããè³æ Œæ
å ±ãååŸããå¿
èŠããããŸãïŒSHOULDïŒã
ããã«ãã¯ã©ã€ã¢ã³ããšãµãŒãã¯ãç¬èªã®ã«ã¹ã¿ã èªèšŒããã³èªå¯æŠç¥ãããŽã·ãšãŒãã§ããŸãïŒMAYïŒã
5. ã¹ããŒã
ãããã³ã«ã®å®å
šãªä»æ§ã¯TypeScriptã¹ããŒããšããŠå®çŸ©ãããŠããŸããããã¯ããã¹ãŠã®ãããã³ã«ã¡ãã»ãŒãžãšæ§é ã®ä¿¡é Œã§ããæ
å ±æºã§ãã
ãŸããTypeScriptã®ä¿¡é Œã§ããæ
å ±æºããèªåçæãããJSONã¹ããŒãããããããŸããŸãªèªååããŒã«ã§äœ¿çšã§ããŸãã
5-1. äžè¬ãã£ãŒã«ã
ã»_meta
_meta ããããã£/ãã©ã¡ãŒã¿ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒãçžäºäœçšã«è¿œå ã®ã¡ã¿ããŒã¿ãæ·»ä»ã§ããããã«ããããã«ããMCPãã«ãã£ãŠäºçŽãããŠããŸãã
ç¹å®ã®ããŒåã¯ã以äžã«æå®ãããŠããããã«ããããã³ã«ã¬ãã«ã®ã¡ã¿ããŒã¿çšã«ãMCPãã«ãã£ãŠäºçŽãããŠããŸããå®è£
ã§ã¯ããããã®ããŒã®å€ã«ã€ããŠæ³å®ããŠã¯ãªããŸããïŒMUST NOTïŒã
ããã«ãã¹ããŒãå
ã®å®çŸ©ã§ã¯ãå®çŸ©å
ã§å®£èšãããŠããããã«ãç®çåºæã®ã¡ã¿ããŒã¿çšã«ç¹å®ã®ååãäºçŽã§ããŸãã
ããŒåã®åœ¢åŒã¯ãæå¹ãª _meta ããŒåã¯ããªãã·ã§ã³ã®ãã¬ãã£ãã¯ã¹ãšååã®2ã€ã®ã»ã°ã¡ã³ãã§æ§æãããŸãã
ã»Prefix
ã»æå®ããå Žåã¯ãããã (.) ã§åºåãããäžé£ã®ã©ãã«ãšãããã«ç¶ãã¹ã©ãã·ã¥ (/) ã§ãªããã°ãªããŸããã
ãã»ã©ãã«ã¯æåã§å§ãŸããæåãŸãã¯æ°åã§çµããå¿ èŠããããŸããã©ãã«éã®æåã«ã¯ãæåãæ°åããŸãã¯ãã€ãã³ (-) ã䜿çšã§ããŸãã
ã»0å以äžã®æå¹ãªã©ãã«ã§å§ãŸãããã®åŸã« modelcontextprotocol ãŸã㯠mcp ãç¶ãããã®åŸã«ä»»æã®æå¹ãªã©ãã«ãç¶ããã¬ãã£ãã¯ã¹ã¯ãMCP çšã«äºçŽãããŠããŸãã
ãã»äŸ: modelcontextprotocol.io/ãmcp.dev/ãapi.modelcontextprotocol.org/ãtools.mcp.com/ ã¯ãã¹ãŠäºçŽãããŠããŸãã
ã»Name
ã»ç©ºã§ãªãéããå é ãšæ«å°Ÿã¯è±æ°åïŒ[a-z0-9A-Z]ïŒã§ãªããã°ãªããŸããã
ã»éã«ãã€ãã³ïŒ-ïŒãã¢ã³ããŒã¹ã³ã¢ïŒ_ïŒããããïŒ.ïŒãããã³è±æ°åãå«ããããšãã§ããŸãã