第3ç« â ãµãŒããŒããªããã£ã: ã³ã³ããã¹ããšèœåã®å ¬é
LLM Primer IV: MCPã§èšèšããAIèªç¥ ã®ãŠã©ãŒã¯ã¹ã«ãŒç¬¬3åã§ããä»åã¯ãMCPãµãŒããŒãå®éã«ãäœãèšãããã â 3ã€ã®åè©ã3ã€ã®ã©ã€ããµã€ã¯ã«ã3ã€ã®ãšã©ãŒã¢ãã« â ãèŠãŠãæ£ããåè©ãéžã¶èŠåŸããµãŒããŒãã¹ã±ãŒã«ãããããæ·ãŸããããæ±ºãã話ãããŸãã
ãªããã®ç« ãããã®ã
ãããã³ã«ã¯ãããã§äœãèšããã以äžã«æçšã«ã¯ãªããŸããã第2ç« ã§ã¯ãã¹ãã»ã¯ã©ã€ã¢ã³ãã»ãµãŒããŒã®ã¡ã³ã¿ã«ã¢ãã«ãçµã¿ç«ãŠãèœå亀æžã§ã»ãã·ã§ã³ãç«ã¡äžããæ§åãèŠãŸããããã³ãã·ã§ã€ã¯ãçµãã£ãŠäž¡è ãçžæã®èœåãç¥ã£ããšããå ·äœçã«ããŒãã«ã«ä¹ã£ãŠãããã®ã¯äœã§ãããããMCPã¯3ã€ã®åè©ã§çããŸã: ResourcesãPromptsãToolsãèŠããã¯äŒŒãŠããŸã â ã©ãããååããããã¹ããŒãã§èšè¿°ãããããµãŒããŒãåºåãããå®è¡ãããã§ãããã®ã â ãã3ã€ã®ç°ãªãæå³ã«å¯Ÿå¿ããŸããResources ã¯èªãç¶æ ãPrompts ã¯åå©çšå¯èœãªè¶³å ŽãTools ã¯æžã蟌ã¿ã®åäœããã®ç« ã§ã¯ãããããé ã«æ©ããŸã: ã¹ããŒããã©ã€ããµã€ã¯ã«ããšã©ãŒã¢ãã«ããããŠãšã³ãžãã¢ãééããå Žæã
3.1 Resources: èªã¿åãå°çšã®ã³ã³ããã¹ãã»ããŒã¿
Resource ã¯ãµãŒããŒãã³ã³ããã¹ããšããŠã¢ãã«ãžæž¡ããããŒã¿ã§ããå®çèªã¯ãèªã¿åãå°çšããResource ã¯äžçãå€ããŸãããäžçãèšè¿°ããŸãããã§ãããç¶æ å€åãåŒãèµ·ãããªã â ç£æ»ãã°ã®è¡ãã€ã³ã¯ãªã¡ã³ããããã«ãŠã³ã¿ãçºç«ããWebhook â ããã¯Resourceã§ã¯ãªããè¡£è£ ãçãToolã§ãããã®ç·ãã¯ã£ããåŒãã®ãMCPãµãŒããŒèšèšã®æåã®èŠåŸã§ãã
åResourceã¯ããµãŒããŒãéžãã ã¹ããŒã (file://ãpostgres://ãlinear://issue/ENG-1234)ã§å®å®ããURIãæã¡ãã¡ã¿ããŒã¿ãä»ããŸã: ååãä»»æã®èª¬æãMIMEã¿ã€ããä»»æã®ãµã€ãºããããã¯é£Ÿãã§ã¯ãããŸããã説æã®ãªãResourceã¯ãã¢ãã«ãè©äŸ¡ã§ããªãResourceã§ããã©ã€ããµã€ã¯ã«ã¯çŽ çŽã§ã: resources/list ã§åæãresources/read ã§ååŸãresources/write ã¯ãããŸãã â ãµãŒããŒãæžã蟌ã¿ãæããªãToolãå
¬éããå¿
èŠããããŸãããã®é察称ãä¿¡é Œå¢çãå¯èŠã«ä¿ã¡ãŸãã
| ããªããã£ã | æå³ | äž»èŠã¡ãœãã | å¯äœçš | 誰ãçºå |
|---|---|---|---|---|
| Resources | èªã¿åãå°çšã®çª | resources/list, resources/read | ãªã | Host ãçµã¿èŸŒã¿æ |
| Prompts | åå©çšå¯èœãªäŒè©±ã®è¶³å Ž | prompts/list, prompts/get | ãªã(ã¢ãã«å ¥åã®ã¿) | ãŠãŒã¶ãŒãæç€ºçã« |
| Tools | äžçãå€ããåäœ | tools/list, tools/call | ãã | ã¢ãã«ãèªåŸçã« |
衚: ãµãŒããŒããªããã£ãã®è²¬ä»»åæ
èŠæš¡ã§å®çšã«ããã«ã¯2ã€ã®ãã¿ãŒã³ãå¹ããŸããURIãã³ãã¬ãŒãã¯ãã©ã¡ãŒã¿åãããèªã¿åããšã³ããã€ã³ã(db://orders/{order_id})ãå
¬éããäœçŸäžè¡ãåæããã«æžãŸããŸãããµãã¹ã¯ãªãã·ã§ã³ã¯ããã¹ããURIãžã®é¢å¿ãç»é²ãã察象ããŒã¿ãå€ãã£ãã notifications/resources/updated ãåãåãä»çµã¿ â 代æ¿ã¯LLMã®ééã§ã®ããŒãªã³ã°ã§ãäž¡æ¹åã§ç¡é§ã«ãªããŸããé¿ãããèœãšã穎ã¯ãã»ãã·ã§ã³éå§æã«å
éšãªããžã§ã¯ãããã¹ãŠResourceãªã¹ãã«æã蟌ãããš: 3000åã®ãªã¹ãã¯ãŠãŒã¶ãŒãæåãæã€åã«æ°äžããŒã¯ã³ãé£ã¹ãŸããæŽçããããããã¬ãã«ãšãã³ãã¬ãŒããå
¬éããŠããã³ã°ããŒã«ã¯ã¢ãã«ã«æ¢ãããŸãã
3.2 Prompts: åå©çšå¯èœãªãã³ãã¬ãŒããšã¯ãŒã¯ãããŒ
MCPã®Promptã¯ãLLMã®ã·ã¹ãã ããã³ãããšã¯ç¡é¢ä¿ã§ãããŠãŒã¶ãŒ â ãããã¯ãŠãŒã¶ãŒã®ä»£ããã«ãã¹ã â ããç¹å®ã®å¯Ÿè©±ãèµ·ããããã«åŒã³åºããããµãŒããŒå®çŸ©ã®åå©çšå¯èœãã³ãã¬ãŒãã§ããPromptã¯ãäººæ Œãããããã¹ã©ãã·ã¥ã³ãã³ããã«è¿ããçãã¯ããµãŒããŒãå ¬éããããŒã«ããªãœãŒã¹ãšãšãã«ãåããšåãã£ãŠãã察話ãã¿ãŒã³ããåºè·ããŠãããŒããŒãã®åã«ãã人ãèŠæ±ã®èšãåããèŠãçŽããªããŠããããã«ããããšã§ãã
Promptã¯ãååãä»»æã®èª¬æãåŒæ°ã®ãªã¹ããæã¡ãŸãããã¹ã㯠prompts/list ã§çºèŠããprompts/get ã§Promptãããã¹ããã¢ãã«ã«ãŒãã«æµã蟌ããã¡ãã»ãŒãžåããžå±éããŸããPromptã¯URIã§Resourceãåç
§ã§ãããã®å Žåãã¹ãã¯éä¿¡åã«ã€ã³ã©ã€ã³åããŸãããµãŒããŒãæåã®æ°ã¿ãŒã³ãã¹ã¯ãªããåããããããã¢ãã«ãåŒãç¶ããŸãã
Promptãšã·ã¹ãã ã¡ãã»ãŒãžã®éãã¯å€§äºã§ãã/review_pr ãçºåãããŠãŒã¶ãŒã¯ãèªåã®äŒè©±ãã°ã§ã¢ã·ã¹ã¿ã³ããã¬ãã¥ãŒã«åããããã®ãèŠãŸã â äœãå§ãŸã£ãããçè§£ããæ¢ããããç£æ»ã§ããã代ããã«ãµãŒããŒããã¹ãã®ã·ã¹ãã ããã³ããã«éãã«æç€ºã远èšããŠãããããŠãŒã¶ãŒã¯ãªãã¢ã·ã¹ã¿ã³ããçªç¶éããµããŸããããã®ãåãããŸãããPromptã¯ãŠãŒã¶ãŒããèŠããè¶³å Žãã·ã¹ãã ããã³ããã¯ãã¹ãã®æ ä»ããäž¡è
ãæ··ããŠã¯ãããŸãããæç€ºçã«èŠããããŠãŒã¶ãŒãæ¿èªããªãã ããPromptã®äžèº«ã¯ãæ¬ é¥ã§ãã
3.3 Tools: åäœãæ§é åãããåºåãåªçæ§
MCPãé¢çœããå±éºã«ããªãã®ãToolã§ããResourcesã¯èªããPromptsã¯è¶³å ŽãToolsã¯æžã â è¡ãäœããã¡ãã»ãŒãžãéãããµãŒãã¹ããããã€ããã«ãŒãã«èª²éããŸããåToolã¯JSON Schemaã§èšè¿°ãããååã説æãå ¥åã¹ããŒããæã¡ãŸãã説æã¯MCPé¢ã®äžã§æãéèŠãªãã£ãŒã«ãã§ãããªããªããã¢ãã«ãToolãåŒã¶ãã©ããããã€ãã©ããªåŒæ°ã§åŒã¶ããæ±ºããããã«èªãããã¹ãã ããã§ãããã¡ãŒã«ãéãããšã ãæžãããToolã¯ãã¡ãŒã«ã£ãœãæå³ãåºããã³ã«æã䌞ã³ãŸãããããŒã±ãã£ã³ã°ã»ãã©ãããã©ãŒã çµç±ã§ãã©ã³ã¶ã¯ã·ã§ã³ã»ã¡ãŒã«ãéããæ€èšŒæžã¿ã®é¡§å®¢ã¢ãã¬ã¹åããç§ä¿¡ã«ã¯äœ¿ããªãããšæžãããToolã¯ãããéžå¥ããŠäœ¿ãããŸãã
ãšã©ãŒã¢ãã«ã¯2ãã£ãã«ã§ãããããã³ã«ãšã©ãŒ(å£ããåŒæ°ãæªç¥ã®ããŒã«)ã¯JSON-RPCãšã©ãŒãè¿ãããã¬ãŒãã³ã°ã®å€±æã§ããããŒã«ãšã©ãŒ(å®å
ãããŠã³ã¹ããã£ã¹ã¯ãæºæ¯)㯠æåãã ã¬ã¹ãã³ã¹ã isError: true ãšå
容ãããã¯ã§äœãèµ·ãããã説æããŸããåºå¥ãéèŠã§ã: ã¢ãã«ã¯ããŒã«ãšã©ãŒãèŠãŠé©å¿ãã¹ãã§ããã¹ãã¯ãããã³ã«ãšã©ãŒãèŠãŠãã©ã³ã¹ããŒãã埩æ§ãã¹ããæ··ãããšãã¢ãã«ããå¿
èŠãªæ
å ±ã奪ããŸãã
| ãšã©ãŒçš®å¥ | å žåäŸ | 圢 | 察å¿è |
|---|---|---|---|
| ãããã³ã«ãšã©ãŒ | å£ããåŒæ°ãæªç¥ã®ããŒã« | JSON-RPC ãšã©ãŒ | Host(ãã©ã³ã¹ããŒã埩æ§) |
| ããŒã«ãšã©ãŒ | å®å ããŠã³ã¹ããã£ã¹ã¯æºæ¯ | isError: true ä»ãã¬ã¹ãã³ã¹ | Model(é©å¿ããŠå詊è¡) |
衚: 2ãã£ãã«ã®ãšã©ãŒã¢ãã«ãšè²¬ä»»è
æè¿ã®MCPã¯ã宣èšããã outputSchema ã«åŸã structuredContent ããæ£æã® content é
åãšäžŠã¹ãŠãµããŒãããŸããé·ããã¬ãŒã¹äžã§ã®å¹ãã¯æ¬ç©ã§ã: çãæ§é åãããããŒã«åºåã¯ãã¢ãã«ã«å®éã®æšè«ã®ããã®äœè£ãæ®ããé·ãæ£æã®åºåã¯ã³ã³ããã¹ãäºç®ãé£ã¹ãŸããããã«2ã€ã®èŠåŸ: æå°æ§ â ãã説æããã12ã®ããŒã«ã¯ãã»ãšãã©ã®ãã³ãããŒã¯ã§60ã®ããŒã«ã«åã¡ãŸããlist_usersãget_userãsearch_usersãcount_users ã§ã¯ãªããæ§é åãã£ã«ã¿ä»ãã® find_users ãå
¬éãããåªçæ§ â ãªãã©ã€ã®åµã¯é¿ããããŸãããåªçããŒãåãåãããæ±ºå®çãªèå¥åã¹ããŒã ã䜿ãToolã¯ããããã¯ãŒã¯ã®ç¬æãããŒã¿æŽåæ§äºæ
ã§ã¯ãªãno-opã«å€ããŸãã
3.4 æ§æ: 3ã€ã®ããªããã£ããã©ãå調ããã
ããªããã£ãã¯å調ãããšãã«æå€§ã«åœ¹ç«ã¡ãŸããããèšèšããããµãŒããŒã¯æ®éã3ã€ãæ··ããŠå
¬éããŸã: ãããã察話ãèµ·ããå°æ°ã®Promptsãæ¬åœã«å¿
èŠãªåäœã®ããã®å°ããªToolsã»ãããç¶æ³ãæºãã(å Žåã«ãã£ãŠã¯å€§ããª)Resourcesãã«ã¹ã¿ããŒãµããŒãã®ãµãŒããŒãªãã顧客ãããã¡ã€ã«ããã±ããå±¥æŽãResourcesãšããŠãreply_to_ticket ãš escalate_ticket ãToolsãšããŠã/triage_ticket ãPromptãšããŠå
¬éããé©åãªResourceãèªã¿èŸŒãã§ã¢ãã«ã«åé¡ãé ŒããPromptsãçš®ããŸããResourcesãç¶æ³ãåããToolsãäžçãå€ããã
ããªããã£ãã®æè»ããèŠããšããã¹ãŠãäžã€ã§éããããªããŸããèªã¿åãå°çšã®Toolã§Resourcesãåœè£ ãããã³ãã³ããåºåããããã¢ãã«ãèªå°ããPromptsã§Toolsãåœè£ ãããæç€ºãå«ãResourcesã§Promptsãåœè£ ãããã©ããèšèšç©ºéãå§çž®ããäœãã倱ããŸããTools ãšããŠåœè£ ããResources ã¯ãã£ãã·ã¥ã賌èªãPromptå±éãžã®ã€ã³ã©ã€ã³ãã§ããªããPrompts ãšããŠåœè£ ããToolsã¯åŒã³åºãå°ç¹ã§èªå¯ã§ãããæ§é åãããåºåãã£ãã«ããªããããªããã£ãã¯æ£æçã§ã¯ãªãããã¹ãããããããå®å šã«æ±ãæ¹æ³ãç¥ããããå æ°åè§£ãããŠããŸããå æ°åè§£ãå°éããã®ããããã³ã«ã®å¥çŽã®äžéšã§ãã
ãã®ç« ãèžãŸããŠ
ãµãŒããŒåŽã®åãæ±ºããæ©ããŸããããµãŒããŒã¯ResourcesãPromptsãToolsãå ¬éãããããããèªåã®ã¹ããŒããã©ã€ããµã€ã¯ã«ããšã©ãŒã¢ãã«ãæã¡ãŸããèŠåŸã¯ããµãŒããŒãã§ããåäºæã«æ£ããããªããã£ããéžã³ãååãšèª¬æãäžå¯§ã«æžããéè² è·ã«æµæããããšããããMCPã¯äžæ¹éè¡ã§ã¯ãããŸããããã¹ãããµãŒããŒãžèœåã貞ãè¿ããŸã â ãããŠããã«ããããã³ã«ã®æãé¢çœããã»ãã¥ãªãã£äžãã£ãšãç¹çްãªèšèšéžæããããŸãã