Skip to main content

A composable, ready-to-use MCP toolkit for agents and rapid integration.

Project description

McpStore

轻松管理MCP服务的SDK,适配主流AI框架,Agent快速调用MCP服务

GitHub stars GitHub forks GitHub issues GitHub license PyPI version Python versions PyPI downloads PyPI - Wheel code style: black PRs Welcome

English | 简体中文

🚀 在线体验 | 📖 详细文档 | 🎯 快速开始

快速开始

pip install mcpstore

mcpstore是什么?

用户友好的mcp服务管理sdk,方便快速集成MCP服务,并集成了主流agent框架的适配器,简单几行代码就将MCP服务转为agent框架格式的tools对象

LangChain 示例

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()

到这里我们将一个mcp服务做成了langchain可以直接使用的tools对象 基于上面的代码 我们可以添加下面的代码运行

#需要添加上面的代码块
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
    temperature=0, model="deepseek-chat",
    openai_api_key="****",
    openai_api_base="https://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']}")

同时也适配了多种agent框架,比如langgraph autogen等等,通过for_XXX()方法可以快速获取对应的工具对象

缓存/Redis 后端

支持使用 Redis 作为共享缓存后端,用于跨进程/多实例共享服务与工具元数据。

安装额外依赖:

pip install mcpstore[redis]

使用方式(通过 external_db 传入缓存模块配置):

from mcpstore import MCPStore

store = MCPStore.setup_store(
    external_db={
        "cache": {
            "type": "redis",
            "url": "redis://localhost:6379/0",   # 必填
            "password": None,                      # 可选
            "namespace": "demo_namespace"      # 可选;
        }
    }
)

在线体验

简单开源的Vue,支持通过SDK或API方式直观管理MCP服务

image-20250721212359929

快速启动后端服务:

from mcpstore import MCPStore
prod_store = MCPStore.setup_store()
prod_store.start_api_server(host='0.0.0.0', port=18200)

你也可以直接调用工具

store = MCPStore.setup_store()
store.for_store().add_service({"name":"mcpstore-wiki","url":"https://mcpstore.wiki/mcp"})
tools = store.for_store().list_tools()
store.for_store().call_tool(tools[0].name, {"query":'hi!'})

image-20250721212658085

MCP服务分组

使用for_agent(agent_id)可以将mcp分组 方便不同的agent获取精确的有限上下文工具集 即将支持根据分组 一键生成a2a协议的card

  • store.for_store() - 全局store空间
  • store.for_agent("agent_id") - 为指定Agent创建隔离空间
# 初始化Store
store = MCPStore.setup_store()

# 为“知识管理Agent”分配专用的Wiki工具
# 该操作在"knowledge" agent的私有上下文中进行
agent_id1 = "my-knowledge-agent"
knowledge_agent_context = store.for_agent(agent_id1).add_service(
    {"name": "mcpstore-wiki", "url": "http://mcpstore.wiki/mcp"}
)

# 为“开发支持Agent”分配专用的开发工具
# 该操作在"development" agent的私有上下文中进行
agent_id2 = "my-development-agent"
dev_agent_context = store.for_agent(agent_id2).add_service(
    {"name": "mcpstore-demo", "url": "http://mcpstore.wiki/mcp"}
)

# 各Agent的工具集完全隔离,互不影响
knowledge_tools = store.for_agent(agent_id1).list_tools()
dev_tools = store.for_agent(agent_id2).list_tools()

很直观的,你可以通过 store.for_store()store.for_agent("agent_id") 使用几乎所有的函数 ✨

API接口

提供完整的RESTful API,一行命令启动Web服务:

pip install mcpstore
mcpstore run api

部分API接口

详细的接口文档看网页

# 服务管理
POST /for_store/add_service          # 添加服务
GET  /for_store/list_services        # 获取服务列表
POST /for_store/delete_service       # 删除服务

# 工具操作
GET  /for_store/list_tools           # 获取工具列表
POST /for_store/use_tool             # 执行工具

# 监控统计
GET  /for_store/get_stats            # 系统统计
GET  /for_store/health               # 健康检查

重要变更(保持与后端最新一致)

  • add_service 不再支持 wait 参数;且不支持空参数(必须提供服务配置或 json_file)
  • add_service 调用后不等待连接完成,如需等待请在 Agent 级别使用 /for_agent/{agent_id}/wait_service,或轮询 service_status
  • 请求体示例(Store 级别):
{
  "name": "weather",
  "url": "https://weather.example.com/mcp",
  "transport": "streamable_http",
  "headers": {"Authorization": "Bearer ..."}
}
{
  "name": "assistant",
  "command": "python",
  "args": ["./assistant_server.py"],
  "env": {"DEBUG": "true"}
}
{
  "mcpServers": {
    "weather": { "url": "https://weather.example.com/mcp" }
  }
}

参与贡献

欢迎社区贡献:

  • ⭐ 给项目点Star
  • 🐛 提交Issues报告问题
  • 🔧 提交Pull Requests贡献代码
  • 💬 分享使用经验和最佳实践

Star History

Star History Chart


McpStore是一个还在频繁的更新的项目,恳求大家给小星并来指点

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcpstore-1.4.3013.tar.gz (709.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcpstore-1.4.3013-py3-none-any.whl (814.2 kB view details)

Uploaded Python 3

File details

Details for the file mcpstore-1.4.3013.tar.gz.

File metadata

  • Download URL: mcpstore-1.4.3013.tar.gz
  • Upload date:
  • Size: 709.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for mcpstore-1.4.3013.tar.gz
Algorithm Hash digest
SHA256 2e78f9f9a11369da40f415285510f5ebc1fa4e53ed49cd2ff9a8feb6ef7fb9bb
MD5 a5289d04a38bde3d680bb3f3f45558ea
BLAKE2b-256 6fcffd89e896019ac3299865db6104739bddcb5b78262fbfd0b98de6154694b0

See more details on using hashes here.

File details

Details for the file mcpstore-1.4.3013-py3-none-any.whl.

File metadata

  • Download URL: mcpstore-1.4.3013-py3-none-any.whl
  • Upload date:
  • Size: 814.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for mcpstore-1.4.3013-py3-none-any.whl
Algorithm Hash digest
SHA256 6c644ddabfe1ad9fef09ec7eb1bf4e0691c8147bd1d6dc6f107b373832ad195c
MD5 8194480535c5a247fc542696e1daf2cc
BLAKE2b-256 1b11845cc1641a850204b6b696f66ebddfda8f9a4d96dc7da4b3a96bec301960

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page