在MCP的集成开发方面,LangChain是个做得不错的项目,其它方面也很优秀!它有个专门的库来处理,就是langchain-mcp-adapterslibrary。导入的MultiServerMCPClient是官方提供的多服务器管理客户端,可以同时连接多个 MCP 服务器。
https://docs.langchain.com/oss/python/langchain/mcp
主要是MultiServerMCPClient连接 MCP 服务器,以提供工具调用。
from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient(
{
"fetch_weather": {
"transport": "stdio", # Local subprocess communication
"command": "python",
# path to your server.py file
"args": ["weather_server.py"],
},
"httpserver": {
"transport": "http", # HTTP-based remote server
# Ensure you start your weather server on port 8000
"url": "http://localhost:8005/mcp/mcp",
}
}
)
tools = await client.get_tools()
print(123, "tools", tools)
uv add "mcp<2" # 注意:mcp2.0暂不与LangChain包兼容,要装低版本的
uv add langchain-mcp-adapters
uv add langchain langchain-openai python-dotenv
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI
from langchain.agents import create_agent
from dotenv import dotenv_values
env_vars = dotenv_values('.env')
DEEPSEEK_API_KEY = env_vars['DEEPSEEK_API_KEY']
DEEPSEEK_BASE_URL = env_vars['DEEPSEEK_BASE']
llm = ChatOpenAI(model="deepseek-v4-flash", api_key=DEEPSEEK_API_KEY, base_url=DEEPSEEK_BASE_URL)
async def main():
client = MultiServerMCPClient(
{
"httpserver": {
"transport": "http", # HTTP-based remote server
# Ensure you start your weather server on port 8005
"url": "http://localhost:8005/mcp/mcp",
}
}
)
tools = await client.get_tools()
print(123, "tools", tools) # get_weather
agent = create_agent(model=llm, tools=tools)
weather_response = await agent.ainvoke(
{"messages": [{"role": "user", "content": "what is the weather in beijing?"}]}
)
print(996, weather_response["messages"][-1].content)
if __name__ == "__main__":
asyncio.run(main())
集成起来还是蛮方便的。如果用其它的Agent工具,比如Openclaw、Cherry Studio这些也是可以很方便的管理MCP工具的。有了MCP工具可以很方便地拓展Agent的能力边界,设计很多自己可能并不擅长的项目。好了,快试试吧。