在MCP的集成开发方面,LangChain是个做得不错的项目,其它方面也很优秀!它有个专门的库来处理,就是langchain-mcp-adapterslibrary。导入的MultiServerMCPClient是官方提供的多服务器管理客户端,可以同时连接多个 MCP 服务器。

https://docs.langchain.com/oss/python/langchain/mcp
主要能力
- 工具调用与管理:能够将各种 MCP 服务器提供的工具转换为Agent可直接使用的标准化工具。
- 多协议通信支持:支持两种主要的通信方式 – stdio 模式(将 MCP 服务器作为本地子进程运行)和 HTTP 模式(通过 SSE 通道和 POST 请求进行通信)。
- 资源与提示词操作:可以访问和管理 MCP 服务器提供的资源文件以及预定义的提示词模板。
- 多服务器协同:通过 MultiServerMCPClient 能够同时连接和管理多个 MCP 服务器,从它们加载工具、提示和资源。
应用场景
- 数据集成:连接内部的知识库、数据库和业务系统,让 AI 能够访问最新的数据。例如,可以连接 SalesForce、Google Drive 等系统。
- 文件操作自动化:通过文件系统 MCP 服务器,AI 智能体可以自动执行文件读写、目录管理等操作。
- 多工具协同工作流:通过连接多个专用 MCP 服务器,构建能够处理复杂任务的 AI 智能体系统。
集成代码
主要是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)
MCPClient完整案例
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的能力边界,设计很多自己可能并不擅长的项目。好了,快试试吧。