モデルコンテキスト・プロトコル (MCP) は、アプリケーションが言語モデルにツールとコンテキストを提供する方法を標準化するオープン・プロトコルです。LangGraph エージェントは langchain-mcp-adapters ライブラリを通して MCP サーバ上で定義されたツールを使用できます。
LangGraph : Prebuilt エージェント : MCP 統合
作成 : クラスキャット・セールスインフォメーション
作成日時 : 06/12/2025
* 本記事は langchain-ai.github.io の以下のページを独自に翻訳した上で、補足説明を加えてまとめ直しています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
◆ お問合せ : 下記までお願いします。
- クラスキャット セールス・インフォメーション
- sales-info@classcat.com
- ClassCatJP
LangGraph : Get started : Prebuilt エージェント : MCP 統合
モデルコンテキスト・プロトコル (MCP) は、アプリケーションが言語モデルにツールとコンテキストを提供する方法を標準化するオープン・プロトコルです。LangGraph エージェントは、langchain-mcp-adapters ライブラリを通して MCP サーバ上で定義されたツールを使用できます。
LangGraph で MCP ツールを使用するために langchain-mcp-adapters ライブラリをインストールします :
pip install langchain-mcp-adapters
MCP ツールの使用
langchain-mcp-adapters パッケージはエージェントが一つ以上の MCP サーバで定義されたツールを使用することを可能にします。
Agent using tools defined on MCP servers
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
client = MultiServerMCPClient(
{
"math": {
"command": "python",
# Replace with absolute path to your math_server.py file
"args": ["/path/to/math_server.py"],
"transport": "stdio",
},
"weather": {
# Ensure your start your weather server on port 8000
"url": "http://localhost:8000/mcp",
"transport": "streamable_http",
}
}
)
tools = await client.get_tools()
agent = create_react_agent(
"anthropic:claude-3-7-sonnet-latest",
tools
)
math_response = await agent.ainvoke(
{"messages": [{"role": "user", "content": "what's (3 + 5) x 12?"}]}
)
weather_response = await agent.ainvoke(
{"messages": [{"role": "user", "content": "what is the weather in nyc?"}]}
)
カスタム MCP サーバ
独自の MCP サーバを作成するには、mcp ライブラリを使用できます。このライブラリはツールを定義してそれらをサーバとして実行する単純な方法を提供します。
MCP ライブラリをインストールします :
pip install mcp
以下のリファレンス実装を使用して、MCP ツールサーバでエージェントをテストできます。
Example Math Server (stdio transport)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Math")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
@mcp.tool()
def multiply(a: int, b: int) -> int:
"""Multiply two numbers"""
return a * b
if __name__ == "__main__":
mcp.run(transport="stdio")
Example Weather Server (Streamable HTTP transport)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Weather")
@mcp.tool()
async def get_weather(location: str) -> str:
"""Get weather for location."""
return "It's always sunny in New York"
if __name__ == "__main__":
mcp.run(transport="streamable-http")