by whillhill
Elegant management of mcp service out of the box | Combined with Agent framework | The author takes advice | Pypi has been released | Vue page demo
# Add to your Claude Code skills
git clone https://github.com/whillhill/mcpstore
mcpstore 是面向开发者的开箱即用的 MCP 服务编排层:用一个 Store 统一管理服务,并将 MCP 适配给 AI 框架LangChain等使用。
首先只需要需要初始化一个store
from mcpstore import MCPStore
store = MCPStore.setup_store()
现在就有了一个 store,后续只需要围绕这个store去添加或者操作你的服务,store 会维护和管理这些 MCP 服务。
#在上面的代码下面加入
store.for_store().add_service({"mcpServers": {"mcpstore_wiki": {"url": "https://www.mcpstore.wiki/mcp"}}})
store.for_store().wait_service("mcpstore_wiki")
通过add方法便捷添加服务,add_service方法支持多种mcp服务配置格式,主流的mcp配置格式都可以直接传入。wait方法可选,是否同步等待服务就绪。
tools = store.for_store().for_langchain().list_tools()
print("loaded langchain tools:", len(tools))
简单链上即可直观的将mcp适配为langchain直接使用的tools列表
会逐渐支持更多的框架
| 已支持框架 | 获取工具 |
| --- | --- |
| LangChain | tools = store.for_store().for_langchain().list_tools() |
| LangGraph | tools = store.for_store().for_langgraph().list_tools() |
| AutoGen | |
| CrewAI | |
| LlamaIndex | |
tools = store.for_store().for_autogen().list_tools()tools = store.for_store().for_crewai().list_tools()tools = store.for_store().for_llamaindex().list_tools()#添加上面的代码
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
temperature=0,
model="deepseek-chat",
api_key="sk-*****",
base_url="https://api.deepseek.com"
)
agent = create_agent(model=llm, tools=tools, system_prompt="你是一个助手,回答的时候带上表情")
events = agent.invoke({"messages": [{"role": "user", "content": "mcpstore怎么添加服务?"}]})
print(events)
pip install mcpstore
使用 for_agent(agent_id) 实现对mcp服务进行分组
agent_id1 = "agent1"
store.for_agent(agent_id1).add_service({"name": "mcpstore_wiki", "url": "https://www.mcpstore.wiki/mcp"})
agent_id2 = "agent2"
store.for_agent(agent_id2).add_service({"name": "playwright", "command": "npx", "args": ["@playwright/mcp"]})
agent1_tools = store.for_agent(agent_id1).list_tools()
agent2_tools = store.for_agent(agent_id2).list_tools()
store.for_agent(agent_id) 与 store.for_store() 共享大部分函数接口,本质上是通过分组机制在全局范围内创建了一个逻辑子集。
通过为不同 Agent 分配专属服务实现服务的有效隔离,避免上下文过长。
与聚合服务hub_service(实验性)和快速生成 A2A Agent Card (计划支持)配合较好。
| 动作 | 命令示例 | |-------------|------------------------------------------------------------------------------...