返回市场
MCP中心

MCP中心

作者:Cognitive-Stack78 星标更新:2025-07-15

项目介绍

MCPHub

MCPHub 是一个嵌入式模型上下文协议(MCP)解决方案,适用于AI服务。它使得MCP服务器能够无缝集成到任何AI框架中,允许开发者轻松地在应用程序中配置、设置和管理MCP服务器。无论您是使用OpenAI代理、LangChain还是Autogen,MCPHub都提供了一种统一的方式来连接您的AI服务与MCP工具和资源。

文档

快速开始

先决条件

确保已安装以下工具:

# 安装uv(Python包管理器)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 安装git(用于克隆仓库)
sudo apt-get install git  # Ubuntu/Debian
brew install git         # macOS

# 安装npx(随Node.js一起提供)
npm install -g npx

# 安装MCPHub
pip install mcphub  # 基本安装

# 可选:安装特定框架依赖
pip install mcphub[openai]    # 用于OpenAI代理集成
pip install mcphub[langchain] # 用于LangChain集成
pip install mcphub[autogen]   # 用于Autogen集成
pip install mcphub[all]       # 安装所有可选依赖

配置

在项目根目录创建一个.mcphub.json文件:

{
    "mcpServers": {
        "sequential-thinking-mcp": {
            "package_name": "smithery-ai/server-sequential-thinking",
            "command": "npx",
            "args": [
                "-y",
                "@smithery/cli@latest",
                "run",
                "@smithery-ai/server-sequential-thinking"
            ]
        }
    }
}

添加新的MCP服务器

您可以通过两种方式添加新的MCP服务器:

  1. 手动配置:直接将服务器配置添加到您的.mcphub.json文件中。

  2. 从GitHub自动配置:使用add_server_from_repo方法从其GitHub仓库自动配置服务器:

from mcphub import MCPHub

# 初始化MCPHub
hub = MCPHub()

# 从GitHub添加新服务器
hub.servers_params.add_server_from_repo(
    server_name="my-server",
    repo_url="https://github.com/username/repo"
)

自动配置:

  • 获取GitHub仓库中的README
  • 使用OpenAI分析README并提取服务器配置
  • 将配置添加到您的.mcphub.json文件中
  • 需要OpenAI API密钥(通过环境变量OPENAI_API_KEY设置)

与OpenAI代理的使用

import asyncio
import json
from agents import Agent, Runner
from mcphub import MCPHub

async def main():
    """
    使用MCPHub将MCP服务器与OpenAI代理集成的示例。
    
    该示例演示了:
    1. 初始化MCPHub
    2. 获取并使用MCP服务器
    3. 列出可用工具
    4. 创建并运行带有MCP工具的代理
    """
    
    # 第一步:初始化MCPHub
    # MCPHub会自动:
    # - 在您的项目中查找.mcphub.json
    # - 加载服务器配置
    # - 设置服务器(克隆仓库,运行设置脚本如果需要)
    hub = MCPHub()
    
    # 第二步:使用异步上下文管理器创建MCP服务器实例
    # 参数:
    # - mcp_name:来自您的.mcphub.json的服务器名称
    # - cache_tools_list:缓存工具列表以提高性能
    async with hub.fetch_openai_mcp_server(
        mcp_name="sequential-thinking-mcp",
        cache_tools_list=True
    ) as server:
        # 第三步:列出MCP服务器中的可用工具
        # 这显示了代理可以使用的功能
        tools = await server.list_tools()
        
        # 为了更好的可读性,漂亮打印工具
        tools_dict = [
            dict(tool) if hasattr(tool, "__dict__") else tool for tool in tools
        ]
        print("可用的MCP工具:")
        print(json.dumps(tools_dict, indent=2))

        # 第四步:创建带有MCP服务器的OpenAI代理
        # 代理现在可以使用MCP服务器提供的所有工具
        agent = Agent(
            name="Assistant",
            instructions="使用可用工具完成给定任务",
            mcp_servers=[server]  # 向代理提供MCP服务器
        )
        
        # 第五步:运行代理执行复杂任务
        # 代理将自动访问所有MCP工具
        complex_task = """请帮助我分析以下复杂问题:
                      我们需要设计一个新的产品特性,平衡用户隐私
                      和数据收集以改进服务。考虑伦理影响,
                      技术可行性以及业务影响。逐步分解您的思考过程,
                      并为每个决策点提供详细的建议和明确的理由。"""
        
        # 执行任务并获取结果
        result = await Runner.run(agent, complex_task)
        print("\n代理响应:")
        print(result)

if __name__ == "__main__":
    # 运行异步主函数
    asyncio.run(main())

功能和指南

服务器配置

  • 基于JSON的配置:简单的.mcphub.json配置文件
  • 环境变量支持:在配置中使用环境变量
  • 预定义服务器:访问不断增长的预配置MCP服务器列表
  • 自定义服务器支持:轻松集成自定义MCP服务器

.mcphub.json中配置您的MCP服务器:

{
    "mcpServers": {
        // 基于TypeScript的MCP服务器使用NPX
        "sequential-thinking-mcp": {
            "package_name": "smithery-ai/server-sequential-thinking",  // NPM包名
            "command": "npx",                                         // 运行服务器的命令
            "args": [                                                // 命令参数
                "-y",
                "@smithery/cli@latest",
                "run",
                "@smithery-ai/server-sequential-thinking"
            ]
        },
        // 基于Python的MCP服务器从GitHub
        "azure-storage-mcp": {
            "package_name": "mashriram/azure_mcp_server",            // 包标识符
            "repo_url": "https://github.com/mashriram/azure_mcp_server", // GitHub仓库
            "command": "uv",                                         // Python包管理器
            "args": ["run", "mcp_server_azure_cmd"],                // 运行命令
            "setup_script": "uv pip install -e .",                  // 安装脚本
            "env": {                                                // 环境变量
                "AZURE_STORAGE_CONNECTION_STRING": "${AZURE_STORAGE_CONNECTION_STRING}",
                "AZURE_STORAGE_CONTAINER_NAME": "${AZURE_STORAGE_CONTAINER_NAME}",
                "AZURE_STORAGE_BLOB_NAME": "${AZURE_STORAGE_BLOB_NAME}"
            }
        }
    }
}

MCP服务器安装和管理

  • 灵活的服务器设置:支持基于TypeScript和Python的MCP服务器
  • 多种安装来源
    • 通过npx安装NPM包
    • 通过GitHub仓库URL安装Python包
    • 本地开发服务器
  • 自动设置:处理仓库克隆、依赖项安装和服务器初始化

传输支持

  • stdio传输:作为本地子进程运行MCP服务器
  • SSE传输:使用supergateway支持Server-Sent Events (SSE)的MCP服务器
  • 自动路径管理:管理服务器路径和工作目录
  • 环境变量处理:按服务器配置环境变量

使用SSE支持运行服务器

您可以使用mcphub run命令运行具有SSE支持的MCP服务器:

# 使用默认设置的基本用法
mcphub run your-server-name --sse

# 使用自定义设置的高级用法
mcphub run your-server-name --sse \
    --port 8000 \
    --base-url http://localhost:8000 \
    --sse-path /sse \
    --message-path /message

SSE支持在以下情况下非常有用:

  • 从Web应用程序连接到MCP服务器
  • 与MCP服务器进行实时通信
  • 与支持SSE的客户端集成

SSE服务器提供两个端点:

  • /sse:实时更新的SSE端点
  • /message:发送消息的HTTP端点

示例配置在.mcphub.json中:

{
    "mcpServers": {
        "sequential-thinking-mcp": {
            "package_name": "smithery-ai/server-sequential-thinking",
            "command": "npx",
            "args": [
                "-y",
                "@smithery/cli@latest",
                "run",
                "@smithery-ai/server-sequential-thinking",
                "--key",
                "your-api-key"
            ]
        }
    }
}

框架集成

提供了适配器以适应流行的AI框架:

from mcphub import MCPHub

async def framework_quick_examples():
    hub = MCPHub()
    
    # 1. OpenAI代理集成
    async with hub.fetch_openai_mcp_server(
        mcp_name="sequential-thinking-mcp",
        cache_tools_list=True
    ) as server:
        # 使用服务器与OpenAI代理
        agent = Agent(
            name="Assistant",
            mcp_servers=[server]
        )
    
    # 2. LangChain工具集成
    langchain_tools = await hub.fetch_langchain_mcp_tools(
        mcp_name="sequential-thinking-mcp",
        cache_tools_list=True
    )
    # 使用工具与LangChain
    
    # 3. Autogen适配器集成
    autogen_adapters = await hub.fetch_autogen_mcp_adapters(
        mcp_name="sequential-thinking-mcp"
    )
    # 使用适配器与Autogen

工具管理

  • 工具发现:自动列出并管理来自MCP服务器的可用工具
  • 工具缓存:可选缓存工具列表以提高性能
  • 框架特定适配器:将MCP工具转换为框架特定格式

发现和管理MCP服务器工具:

from mcphub import MCPHub

async def tool_management():
    hub = MCPHub()
    
    # 列出所有服务器
    servers = hub.list_servers()

    # 列出特定MCP服务器的所有工具
    tools = await hub.list_tools(mcp_name="sequential-thinking-mcp")
    
    # 打印工具信息
    for tool in tools:
        print(f"工具名称:{tool.name}")
        print(f"描述:{tool.description}")
        print(f"参数:{tool.parameters}")
        print("---")
    
    # 工具可以:
    # - 使用cache_tools_list=True缓存以提高性能
    # - 自动转换为框架特定格式
    # - 通过适配器直接与AI框架使用

MCPHub:高层次概述

MCPHub通过四个主要组件简化了Model Context Protocol (MCP)服务器到AI应用的集成:

MCPHub架构

核心组件

  1. 参数中心

    • 管理来自.mcphub.json的配置
    • 定义要使用哪些MCP服务器及其如何设置
    • 存储服务器参数如命令、参数和环境变量
  2. MCP服务器管理器

    • 处理服务器安装和设置
    • 支持两种类型的服务器:
      • 基于TypeScript的服务器(通过npx安装)
      • 基于Python的服务器(通过GitHub上的uv安装)
    • 管理服务器生命周期和环境
  3. MCP客户端

    • 建立与MCP服务器的通信
    • 使用stdio传输进行服务器交互
    • 处理两个主要操作:
      • list_tools:发现可用服务器工具
      • call_tool:执行服务器工具
  4. 框架适配器

    • 将MCP工具转换为框架特定格式
    • 支持多个AI框架:
      • OpenAI代理
      • LangChain
      • Autogen

工作流程

  1. 配置与设置

    • 参数中心读取配置
    • 服务器管理器设置所需服务器
    • 服务器启动并变得可用
  2. 通信

    • MCP客户端通过stdio连接到服务器
    • 工具被发现并变得可用
    • 请求和响应在客户端和服务器之间流动
  3. 集成

    • 框架适配器转换MCP工具
    • AI应用通过首选框架使用适配工具
    • 工具通过建立的通信通道执行

这种架构提供了一种无缝的方式将MCP能力集成到任何AI应用中,同时保持清晰的关注点分离和框架灵活性。

开发

测试

使用pytest运行单元测试:

pytest tests/ -v

CI/CD流水线

此项目使用GitHub Actions进行持续集成和部署:

  1. 自动化测试:每次向main和release分支推送代码以及拉取请求时,在Python 3.10、3.11和3.12上运行测试。

  2. 自动版本提升和标记:当代码推送到release分支时:

    • pyproject.toml中自动递增补丁版本
    • 为发布创建新的Git标签(例如,v0.1.2
    • 将更改提交回存储库
  3. PyPI发布:当代码推送到release分支且测试通过时,包会自动构建并发布到PyPI。

设置PyPI部署

要启用自动PyPI部署,您需要在GitHub Secrets中添加一个PyPI API令牌:

  1. https://pypi.org/manage/account/token/生成一个PyPI API令牌
  2. 转到您的GitHub存储库设置→Secrets和变量→Actions
  3. 添加一个名为PYPI_API_TOKEN的新存储库密钥,值为从PyPI获取的令牌

贡献

我们欢迎贡献!请参阅我们的贡献指南,了解如何进行。

许可证

本项目根据MIT许可证授权 - 详情见LICENSE文件。