ð§ Model Context Protocol (MCP)
ããŒã«ã«ð§ Model Context Protocol (MCP) ã«ã€ããŠ
LangChain MCP AdaptersãšOllamaã䜿ã£ãããªãŒãã³ãœãŒã¹ã®Python補MCPã¯ã©ã€ã¢ã³ãã»ãµãŒããŒã®ãã¢ã§ããæ°åŠãšæš¡æ¬å€©æ°ã®ãµãŒããŒã«å ããåäžããã³è€æ°ãµãŒããŒåãã®ã¯ã©ã€ã¢ã³ãäŸãå«ã¿ãŸãã
äž»ãªæ©èœ
- 01æ°åŠãšå€©æ°ã®MCPãµãŒããŒäŸ
- 02åäžãµãŒããŒãžã®ã¯ã©ã€ã¢ã³ãæ¥ç¶
- 03è€æ°ãµãŒããŒã®ããŒã«æ€åº
- 04OllamaãšLangChain MCP Adaptersã®å©çš
掻çšã·ãŒã³
- 01åºæ¬çãªMCPã¯ã©ã€ã¢ã³ããšãµãŒããŒã®é£æºåŠç¿
- 02æ°åŠããŒã«ã䜿ãã¯ã©ã€ã¢ã³ãã®è©Šè¡
- 032ã€ã®ãµãŒããŒããŸããããŒã«æ€åºã®æ€èšŒ
MCP 察å¿
ç°¡åãªæ°åŠæŒç®ãšæš¡æ¬å€©æ°æ å ±ãå ¬éããMCPãµãŒããŒãããã³äžæ¹ãŸãã¯äž¡æ¹ã®ãµãŒããŒã«æ¥ç¶ããã¯ã©ã€ã¢ã³ãäŸãå«ã¿ãŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
ð§ Model Context Protocol (MCP)
LLM ãããŒã¿ããŒã¹ãAPIããµãŒãã¹ãªã©ã®å€éšäžçã«ã·ãŒã ã¬ã¹ã«æ¥ç¶ããããã®ãªãŒãã³ãœãŒã¹æšæºã§ãã
ð MCP ãšã¯ïŒ
Model Context Protocol (MCP) ã¯ãLLM ãå€éšã®ããŒã«ããµãŒãã¹ãããŒã¿ãœãŒã¹ãšé£æºã§ããããã«ããããšã§ããã®èœåãé«ããããšãç®çãšããæ°ãããªãŒãã³ãœãŒã¹ãããã³ã«ã§ãã翻蚳ã¬ã€ã€ãŒãšããŠæ©èœãã MCP ã«ãããã¢ãã«ã¯ APIãããŒã¿ããŒã¹ããã®ä»ã®ãµãŒãã¹ãšãæšæºåãããæ¡åŒµæ§ãšã¹ã±ãŒã©ããªãã£ã«åªããæ¹æ³ã§ããåãã§ããŸãã
ðš 課é¡
LLM ã ãã§ã¯çŸå®äžçã®ã¿ã¹ã¯ãå®è¡ã§ãããããã¹ããçæããããšããã§ããŸããã髿©èœãª AI ã¢ã·ã¹ã¿ã³ããæ§ç¯ããã«ã¯ã次ã®ãããªããŒã«ãšã®é£æºãå¿ èŠã§ãã
- ã¡ãŒã«ãµãŒãã¹
- æ€çŽ¢ API
- ããŒã¿ããŒã¹
- ã«ã¹ã¿ã ã¹ã¯ãªãã
ããããè€æ°ã®ããŒã«ãçµ±åããã®ã¯å°é£ã§ããAPI ã®ä»æ§ã¯ããŸããŸã§ãã¡ã³ããã³ã¹ã¯åä»ã§ãããã¹ã±ãŒã©ããªãã£ã®ç¢ºä¿ã容æã§ã¯ãããŸããã
â 解決çãšããŠã® MCP
MCP ã¯ãããŒã«çµ±åã®è€éããæœè±¡åããæšæºåãããã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸããREST ã Web ãµãŒãã¹ãæšæºåããã®ãšåæ§ã«ãMCP 㯠LLM ãšããŒã«ã®ããåããæšæºåããçµ±åããããã£ãããšç°¡åã«ããå°æ¥ã«ããã£ãŠå©çšã§ããããã«ããŸãã
ð® ãªã MCP ãªã®ãïŒ
MCP ã䜿ããšãLLM ãåºç€ãšããŠãšãŒãžã§ã³ããè€éãªã¯ãŒã¯ãããŒãæ§ç¯ã§ããŸããLLM ã¯ããŒã¿ãããŒã«ãšã®é£æºãå¿ èŠãšããããšãå€ããMCP ã¯æ¬¡ã®ãã®ãæäŸããŸãã
- LLM ãçŽæ¥æ¥ç¶ã§ãããæ¡å€§ãç¶ããäºåæ§ç¯æžã¿ã®çµ±åæ©èœ
- LLM ãããã€ããŒããã³ããŒãåãæ¿ããããæè»æ§
- èªç€Ÿã®ã€ã³ãã©ã¹ãã©ã¯ãã£å ã§ããŒã¿ãä¿è·ããããã®ãã¹ããã©ã¯ãã£ã¹
ð§© ã¢ãŒããã¯ãã£ãšã³ã³ããŒãã³ã
| ã³ã³ããŒãã³ã | 説æ |
|---|---|
| MCP Client | LLM ãšé£æºããã³ã³ããŒãã³ãã§ãããã£ããã¢ããªãéçºããŒã«ãã¢ã·ã¹ã¿ã³ããªã©ã«çµã¿èŸŒããŸãã |
| MCP Server | ãµãŒãã¹ãããã€ããŒãæ§ç¯ããŸãããµãŒãã¹ã®æ©èœïŒããŒã¿ããŒã¹ã¯ãšãªã API åŒã³åºããªã©ïŒããLLM ãçè§£ã§ãã圢åŒã«å€æããŸãã |
| MCP Protocol | ã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®å®å šã§æ§é åãããéä¿¡ãå¯èœã«ãããåæ¹åã®ãã©ã³ã¹ããŒãå±€ã§ãã |
| Service | ã¢ã¯ã»ã¹å¯Ÿè±¡ãšãªãå®éã®ããŒã«ãŸãã¯å€éšãªãœãŒã¹ã§ãïŒWeather APIãSQL DB ãªã©ïŒã |
ð ä»çµã¿ïŒãããŒã®äŸïŒ
- ãŠãŒã¶ãŒã MCP ãã¹ãïŒãã£ããã¢ããªãªã©ïŒãéããŠã¯ãšãªãéä¿¡ããŸãã
- MCP Client ãå€éšããŒã«ã®å¿ èŠæ§ã倿ããŸãã
- MCP Server ãå©çšå¯èœãªããŒã«ãæç€ºããŸãã
- LLM ã䜿çšããããŒã«ã決å®ããã¯ã©ã€ã¢ã³ãã«æç€ºããŸãã
- ã¯ã©ã€ã¢ã³ããé¢é£ãã MCP Server ã«ãªã¯ãšã¹ããéä¿¡ããŸãã
- ãµãŒããŒãå€éšãµãŒãã¹ã«æ¥ç¶ããããŒã¿ãååŸããŸãã
- ã¬ã¹ãã³ã¹ã LLM ã«æ»ãããæçµçãªåºåãçæãããŸãã
âš äž»ãªã¡ãªãã
- â ããŒã«çµ±åã®ç°¡çŽ å
- ð LLM ã®æ©èœæ¡åŒµ
- ð ïž ã¹ã±ãŒã©ãã«ã§ä¿å®ããããã¢ãŒããã¯ãã£
- ð€ æšæºåãããéä¿¡ã¬ã€ã€ãŒ
- ð¡ AI ã¢ããªéçºè ã®ã€ãããŒã·ã§ã³ãä¿é²
ð ïž äœ¿çšæè¡ã¹ã¿ãã¯
- Python - Python 㯠CodeBuddy ã®åºç€ãšãªããããŸããŸãªã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãšã®é£æºã匷åã«ãµããŒãããŸãã
- Langchain - LangChain ã¯ãå€§èŠæš¡èšèªã¢ãã«ã䜿ã£ãã¢ããªã±ãŒã·ã§ã³ã®äœæãç°¡çŽ åããããã«èšèšããããã¬ãŒã ã¯ãŒã¯ã§ãã
- Ollama - ã¢ãã«ã®äœæãå®è¡ã管çãè¡ãããã®ã·ã³ãã«ãª API ã«å ããããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã§ããã«å©çšã§ããäºåæ§ç¯æžã¿ã¢ãã«ã®ã©ã€ãã©ãªãæäŸããŸãã
- langchain-mcp-adapters - ãã®ã©ã€ãã©ãªã¯ãAnthropic Model Context Protocol (MCP) ã®ããŒã«ã LangChain ããã³ LangGraph ãšäºææ§ã®ãã圢ã§å©çšã§ããã軜éãªã©ãããŒãæäŸããŸãã
ð§© ãã¡ã€ã«ã®æŠèŠ
| ãã¡ã€ã« | 説æ |
|---|---|
| client.py | åäžã® mathserver ã®ã¿ãšããåãããåºæ¬ç㪠MCP ã¯ã©ã€ã¢ã³ãã§ãã |
| mathserver.py | å ç®ãä¹ç®ãªã©ã®ç°¡åãªæ°åŠæŒç®ãå ¬éãã MCP ãµãŒããŒã§ãã |
| weatherserver.py | 倩æ°ããŒã¿ã®å¿çãã·ãã¥ã¬ãŒããã MCP ãµãŒããŒã§ãã |
| multiclient.py | MCP ã¯ã©ã€ã¢ã³ããæ°åŠãµãŒããŒãšå€©æ°ãµãŒããŒã®äž¡æ¹ã«æ¥ç¶ã§ãããã«ãã¯ã©ã€ã¢ã³ãæ§æã§ãã |
ð ä»çµã¿
-
client.py ã¹ã¯ãªããã¯ãMath MCP Server ã®ã¿ãšããåããã AI ã¢ã·ã¹ã¿ã³ãïŒãŸã㯠LLMïŒãã·ãã¥ã¬ãŒãããŸãã
-
multiclient.py ã¹ã¯ãªããã¯ãMCP ã¯ã©ã€ã¢ã³ããè€æ°ã®ãµãŒããŒïŒæ°åŠãšå€©æ°ïŒããããŒã«ãæ€åºããŠäœ¿çšãããããé«åºŠãªãŠãŒã¹ã±ãŒã¹ã瀺ããŸãã
-
mathserver.py ãš weatherserver.py ã¯ãMCP ã¯ã©ã€ã¢ã³ããå©çšã§ããæ©èœãå ¬éããŸãã
ð ãã¢ã®å®è¡
-
ãµãŒããŒãèµ·åããŸãïŒ
python mathserver.py python weatherserver.py -
ã·ã³ã°ã«ã¯ã©ã€ã¢ã³ãã®ãã¢ãå®è¡ããŸãïŒ
python client.py -
Run Multi-Client Demo:
python multiclient.py
ð ãããžã§ã¯ãã«åå ãã
è²¢ç®ãæè¿ããŸãïŒææ¡ãããå Žåãããã®ãããžã§ã¯ããæ¹åãããå Žåã¯ããªããžããªããã©ãŒã¯ããŠãã«ãªã¯ãšã¹ããéä¿¡ããŠãã ããã
MCP ãžã®è²¢ç®ã«é¢å¿ããããŸããïŒä»¥äžã®æ å ±ããåŸ ã¡ãã ããïŒ
- è²¢ç®ã¬ã€ãã©ã€ã³
- ããŒãããã
- Issue ãã³ãã¬ãŒã
ãã²ãªããžããªã« âïž ãä»ããŠããã£ã¹ã«ãã·ã§ã³ã«åå ããŠãã ããïŒ
ã©ã€ã»ã³ã¹
ãã®ãããžã§ã¯ã㯠MIT License ã®äžã§ã©ã€ã»ã³ã¹ãããŠããŸãã詳现ã«ã€ããŠã¯ LICENSE ãã¡ã€ã«ãã芧ãã ããã
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã