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服务器:
手动配置:直接将服务器配置添加到您的.mcphub.json文件中。
从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"
)
自动配置:
.mcphub.json文件中OPENAI_API_KEY设置)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())
.mcphub.json配置文件在.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}"
}
}
}
}
npx安装NPM包您可以使用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支持在以下情况下非常有用:
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服务器工具:
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通过四个主要组件简化了Model Context Protocol (MCP)服务器到AI应用的集成:

参数中心
.mcphub.json的配置MCP服务器管理器
MCP客户端
list_tools:发现可用服务器工具call_tool:执行服务器工具框架适配器
配置与设置
通信
集成
这种架构提供了一种无缝的方式将MCP能力集成到任何AI应用中,同时保持清晰的关注点分离和框架灵活性。
使用pytest运行单元测试:
pytest tests/ -v
此项目使用GitHub Actions进行持续集成和部署:
自动化测试:每次向main和release分支推送代码以及拉取请求时,在Python 3.10、3.11和3.12上运行测试。
自动版本提升和标记:当代码推送到release分支时:
pyproject.toml中自动递增补丁版本v0.1.2)PyPI发布:当代码推送到release分支且测试通过时,包会自动构建并发布到PyPI。
要启用自动PyPI部署,您需要在GitHub Secrets中添加一个PyPI API令牌:
PYPI_API_TOKEN的新存储库密钥,值为从PyPI获取的令牌我们欢迎贡献!请参阅我们的贡献指南,了解如何进行。
本项目根据MIT许可证授权 - 详情见LICENSE文件。