Langchain调用MCP服务和工具
Langchain调用MCP服务和工具
MCP的火爆带来了很多的优质MCP服务,那怎么将这些优质的MCP服务快速高效的管理和集成到我们现有的agent上
使用
pip install mcpstore
store = MCPStore.setup_store()store.for_store().add_service({"name": "mcpstore-wiki", "url": "https://mcpstore.wiki/mcp"})tools = store.for_store().for_langchain().list_tools()
几行代码就可以直接使用注册的mcp服务了,这个tools列表是完全兼容langchain的,可以和我们已经通过@tool
定义好的方法直接使用列表加法添加,作者还提供了一个可以直接运行的例子:
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from mcpstore import MCPStore
store = MCPStore.setup_store()
store.for_store().add_service({"name":"mcpstore-wiki","url":"https://mcpstore.wiki/mcp"})
tools = store.for_store().for_langchain().list_tools()llm = ChatOpenAI(temperature=0, model="deepseek-chat",openai_api_key="sk-****",openai_api_base="httpss://api.deepseek.com"
)
prompt = ChatPromptTemplate.from_messages([("system", "你是一个助手,回答的时候带上表情"),("human", "{input}"),("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
query = "北京的天气怎么样?"
print(f"\n 🤔: {query}")
response = agent_executor.invoke({"input": query})
print(f" 🤖 : {response['output']}")
只需要替换模型就可以直接使用了,本人亲测还是好用的。
🎨 可视化管理界面
作者的GitHub仓库上有一个开源的demo Vue项目,可以通过简单的几行代码开启API模式,搭配Vue可以有一个前端点点点的维护mcp服务管理平台:
通过一段简单的代码快速启动后端:
from mcpstore import MCPStore
prod_store = MCPStore.setup_store()
prod_store.start_api_server(host='0.0.0.0',port=18200
)
通过 https://mcpstore.wiki/web_demo/dashboard 体验在线示例
通过 https://doc.mcpstore.wiki/ 可以查看详细的使用文档
🔧 灵活的服务注册
对于服务的增删改查,作者尽可能的兼容各种各样的格式,保证用户可以不需要太过于专注格式,只要不冲突并且关键的配置对就行,所以支持市面上常见的字典和列表等等格式,主流的Client的json配置文件都可以直接使用,非常方便。
🌐 远程服务注册
通过 URL 添加远程 MCP 服务:
store.for_store().add_service({"name": "mcpstore-wiki","url": "https://mcpstore.wiki/mcp","transport": "streamable-https"
})
transport
: 可选字段,可以自动推断传输协议 (streamable-https
,sse
)
📄 标准配置格式
使用标准 MCP 配置格式:
store.for_store().add_service({"mcpServers": {"mcpstore-wiki": {"url": "https://mcpstore.wiki/mcp"},"howtocook": {"command": "npx","args": ["-y","howtocook-mcp"]}}
})
💻 本地服务进程
启动本地 MCP 服务进程:
# Python 服务
store.for_store().add_service({"name": "local_assistant","command": "python","args": ["./assistant_server.py"],"env": {"DEBUG": "true", "API_KEY": "your_key"},"working_dir": "/path/to/service"
})# Node.js 服务
store.for_store().add_service({"name": "node_service","command": "node","args": ["server.js", "--port", "8080"],"env": {"NODE_ENV": "production"}
})# 可执行文件
store.for_store().add_service({"name": "binary_service","command": "./mcp_server","args": ["--config", "config.json"]
})
🎯 总结
该项目更新比较频繁,感觉作者也在全力做一个直观好用的MCP管理,对于Langchain集成MCP服务是一个不错的选择。