LangChain MCP client集成开发 / ai #67
Published on HivePostify by @lemooljiang · Sat Aug 08 2026
在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 服务器,以提供工具调用。 py from langchainmcpadapters.client import MultiServerMCPClient
client = MultiServerMCPClient( { "fetchweather": { "transport": "stdio", Local subprocess communication "command": "python", path to your server.py file "args": ["weatherserver.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.gettools() print(123, "tools", tools)
MCPClient完整案例 py uv add "mcp<2" 注意:mcp2.0暂不与LangChain包兼容,要装低版本的 uv add langchain-mcp-adapters uv add langchain langchain-openai python-dotenv
import asyncio from langchainmcpadapters.client import MultiServerMCPClient from langchainopenai import ChatOpenAI from langchain.agents import createagent from dotenv import dotenvvalues
envvars = dotenvvalues('.env') DEEPSEEKAPIKEY = envvars['DEEPSEEKAPIKEY'] DEEPSEEKBASEURL = envvars['DEEPSEEKBASE']
llm = ChatOpenAI(model="deepseek-v4-flash", apikey=DEEPSEEKAPIKEY, baseurl=DEEPSEEKBASEURL)
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.gettools() print(123, "tools", tools) getweather agent = createagent(model=llm, tools=tools) weatherresponse = await agent.ainvoke( {"messages": [{"role": "user", "content": "what is the weather in beijing?"}]} ) print(996, weatherresponse["messages"][-1].content)
if name == "main": asyncio.run(main())
集成起来还是蛮方便的。如果用其它的Agent工具,比如Openclaw、Cherry Studio这些也是可以很方便的管理MCP工具的。有了MCP工具可以很方便地拓展Agent的能力边界,设计很多自己可能并不擅长的项目。好了,快试试吧。
Tags: #cn#cn-reader#miao#assistants#agent#mcp#langchain