Skip to main content

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

Project description

MCPStore

项目背景与价值

在当前的智能体开发生态中,工具管理和集成往往是一个复杂而繁琐的问题。每开发一个新的智能体或 LangChain,都需要重新配置和维护 MCP(Model Control Protocol)相关的设置,这不仅增加了开发成本,还容易导致配置不一致和维护困难的问题。

MCPStore 正是为解决这个痛点而生。它提供了一个中心化的工具管理解决方案,使得智能体开发者可以:

  • 🎯 专注于业务逻辑,而不是工具集成
  • 🛒 像"购物"一样轻松地订阅和管理所需的工具
  • 🔄 统一管理和复用工具配置
  • 📦 一次配置,多处使用

通过 MCPStore,我们将 MCP 的复杂性封装在一个易用的接口之后,让智能体的工具调用变得如同在"商店"中选购一样简单。

特性

  • 🚀 简单易用的 API 接口
  • 🛠 灵活的服务注册机制
  • 🔌 插件化的工具管理
  • 🌐 支持 Web API 和实例化对象两种使用方式
  • 💡 智能的工具订阅和管理
  • 🔄 内置健康检查机制
  • 🔗 计划支持与 LangChain 无缝集成
  • 📝 支持配置查看和管理
  • 🔄 支持服务更新和删除

安装

pip install mcpstore

快速开始

1. 通过实例化对象使用

from mcpstore.core.store import McpStore
from mcpstore.core.orchestrator import MCPOrchestrator
from mcpstore.core.registry import ServiceRegistry
from mcpstore.plugins.json_mcp import MCPConfig

# 初始化核心组件
registry = ServiceRegistry()
orchestrator = MCPOrchestrator({
    "timing": {
        "heartbeat_interval_seconds": 60,
        "heartbeat_timeout_seconds": 180,
        "http_timeout_seconds": 10,
        "command_timeout_seconds": 10
    }
}, registry)
mcp_config = MCPConfig()
store = McpStore(orchestrator, mcp_config)

# 注册服务
store_response = await store.register_json_service()

# 获取工具列表
tools = store.list_tools()

# 查看配置
mcp_json = store.show_mcpjson()  # 查看完整配置
config = store.show_mcpconfig()   # 查看当前上下文配置

# 更新服务
store_ctx = store.for_store()
new_config = {
    "url": "https://api.example.com",
    "transport": "sse",
    "description": "Updated service"
}
success = await store_ctx.update_service("service_name", new_config)

# 删除服务
success = await store_ctx.delete_service("service_name")

2. 通过 Web API 使用

启动 Web 服务:

python -m mcpstore.cli.web

API 端点示例:

  • POST /register_service - 注册服务
  • GET /list_tools - 获取工具列表
  • POST /execute_tool - 调用工具
  • GET /list_services - 获取服务列表
  • GET /health - 健康检查
  • GET /config - 获取配置信息
  • PUT /services/{name} - 更新服务配置
  • DELETE /services/{name} - 删除服务

核心概念

Store(商店)

  • Store 是整个系统的核心,负责管理所有服务和工具
  • 提供服务注册、工具调用等核心功能
  • 支持健康检查和状态监控
  • 支持配置管理和查看
  • 支持服务更新和删除

Service(服务)

  • 可以通过 JSON 配置注册的功能单元
  • 每个服务可以提供多个工具
  • 支持服务状态监控和健康检查
  • 支持动态更新配置
  • 支持服务级别和代理级别的删除

Agent(智能体)

  • 使用 Store 服务的客户端
  • 可以选择性订阅所需的服务和工具
  • 通过 client_id 进行身份识别和权限管理
  • 可以查看和管理自己的服务配置

Tool(工具)

  • 具体的功能实现单元
  • 支持参数配置和结果返回
  • 可以被多个 Agent 复用

项目结构

mcpstore/
├── core/          # 核心功能模块
├── data/          # 数据存储相关
├── scripts/       # 实用脚本工具
├── cli/           # 命令行工具
├── plugins/       # 插件扩展模块
├── config/        # 配置管理
└── __init__.py    # 包初始化文件

配置说明

MCPStore 使用 JSON 格式的配置文件来管理服务和工具。配置文件示例:

{
    "mcpServers": {
        "weather_service": {
            "url": "https://api.weather.com",
            "transport": "sse",
            "description": "Weather service"
        }
    }
}

配置管理功能

  1. 配置查看

    • show_mcpjson(): 查看完整的 MCP 配置
    • show_mcpconfig(): 查看当前上下文的配置
  2. 服务更新

    • Store 级别:更新全局服务配置
    • Agent 级别:更新特定代理的服务配置
    • 支持实时生效
    • 保持服务名称不变
  3. 服务删除

    • Store 级别:完全删除服务及其所有配置
    • Agent 级别:仅删除特定代理的服务配置
    • 支持配置同步

使用场景

  1. 智能体工具管理

    • 为智能体提供工具订阅和管理
    • 简化工具调用流程
    • 统一管理工具权限
    • 动态更新服务配置
  2. 服务集成平台

    • 统一管理多个服务
    • 提供服务健康监控
    • 支持服务动态注册
    • 支持配置动态更新
  3. API 网关

    • 提供统一的 API 接口
    • 管理服务调用
    • 监控服务状态
    • 管理服务配置

开发计划

  • 支持配置查看功能
  • 支持服务更新功能
  • 支持服务删除功能
  • 支持与 LangChain 的无缝集成
  • 增强服务监控和告警功能
  • 添加更多预置工具和服务
  • 优化性能和可扩展性
  • 完善文档和示例

贡献指南

欢迎提交 Issue 和 Pull Request 来帮助改进项目。

许可证

[许可证类型]

联系方式

[联系方式信息]

为什么选择 MCPStore?

开发痛点

  • 🔧 传统方式下,每个智能体都需要独立维护 MCP 配置
  • 📝 重复的工具集成工作占用大量开发时间
  • 🔍 工具版本和配置的不一致性难以管理
  • 🔀 多个智能体使用相同工具时配置冗余

MCPStore 的解决方案

  • 🏪 提供"商店"式的工具管理体验
  • 🎯 一次配置,多处复用
  • 🔄 统一的版本控制和配置管理
  • 🛡️ 集中化的权限和访问控制
  • 📊 统一的监控和管理界面
  • 🔄 支持配置动态更新
  • 🗑️ 支持服务优雅删除

使用效果

  • ⚡ 显著减少工具集成时间
  • 🎯 降低维护成本
  • 💡 提高开发效率
  • 🔐 更好的安全性和可控性
  • 🔄 更灵活的配置管理

典型应用场景

1. 智能体快速开发

当你需要开发一个新的智能体时,不再需要从零开始配置工具链:

from mcpstore.core.store import McpStore

# 初始化 store
store = McpStore()

# 注册所需服务
agent_id = await store.register_json_service(service_names=['weather', 'maps', 'search'])

# 直接开始使用工具
tools = store.list_tools(agent_id)

# 查看和管理配置
config = store.show_mcpconfig()

2. 服务配置管理

轻松管理服务配置:

# 获取 Store 上下文
store_ctx = store.for_store()

# 更新服务配置
new_config = {
    "url": "https://api.newservice.com",
    "transport": "sse",
    "description": "Updated service configuration"
}
success = await store_ctx.update_service("service_name", new_config)

# 删除服务
success = await store_ctx.delete_service("service_name")

3. Agent 级别配置管理

为特定代理管理服务:

# 获取 Agent 上下文
agent_ctx = store.for_agent("agent_id")

# 更新代理特定的服务配置
agent_config = {
    "url": "https://api.agentspecific.com",
    "transport": "sse"
}
success = await agent_ctx.update_service("service_name", agent_config)

# 删除代理的服务配置
success = await agent_ctx.delete_service("service_name")

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-0.1.9.tar.gz (188.1 kB view details)

Uploaded Source

Built Distribution

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

mcpstore-0.1.9-py3-none-any.whl (241.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for mcpstore-0.1.9.tar.gz
Algorithm Hash digest
SHA256 64354442fd5ecbd85c567f8e17945dd96ae808cad7dc7ad45c3b0003fbdfc3d0
MD5 84194e059d3767ee5009fc9b85afffd6
BLAKE2b-256 3c142ece5d6ac3e2b4b2a01e342db5127ed1ffda8130e3187ac0ee52aa5d2035

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for mcpstore-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 7c7657f306fd599ee8bad0ddd92cdd93ec8809bfc5272e2259856395bb528f64
MD5 6671ddd0775b55a1785bbc19ac3b49a8
BLAKE2b-256 e619c23252f47dc584d5daed04bae9fac7889d2bd2ab5a8d7fb655b210e4bcf1

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