Token导航 LogoToken导航

MCP Server · AI代理

MCP Host Python

MCP Host是一个连接大型语言模型(如GPT、Claude等)和MCP Server(工具服务器)的中间件,支持多服务器管理、Function Calling协议和异步优先实现。

stdio官方级别未说明来源级核验工具 0
中间件PythonClaude异步处理

快速开始

作者 / 组织
beidaomitu233
提供方
beidaomitu233

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

1

仓库热度

收录来源

1 个

MCP World

选型结论

MCP Host Python 属于AI代理类 MCP Server,公开资料标注 0 个工具,通过stdio 本地进程接入,适配 Claude,有可以直接复制的安装命令;接入前先确认权限范围。

分类

AI代理

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

pip install -e .

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 对应的运行时,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

MCP Host

一个生产级 MCP (Model Context Protocol) Host 实现,基于 Python,支持 Function Calling 协议。

📋 目录

  1. 项目简介
  2. 快速开始
  3. 目录结构
  4. 代码模块说明
  5. 如何使用
  6. MCP 配置详解
  7. 嵌入到您的应用
  8. 可视化演示
  9. 测试
  10. 常见问题

项目简介

什么是 MCP Host?

MCP Host 是一个中间件,它连接 LLM(如 GPT、Claude 等)和 MCP Server(工具服务器)。

简单来说:

您的应用 → LLM(判断需要调用什么工具)→ MCP Host(执行工具调用)→ MCP Server(实际执行)

架构图

┌─────────────────────────────────────────────────────────────┐
│                     您的应用程序                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │                   LLM (GPT等)                       │  │
│  │  接收用户消息 → 判断需要调用什么工具                    │  │
│  └───────────────────────┬───────────────────────────────┘  │
│                          │                                   │
│  ┌───────────────────────▼───────────────────────────────┐  │
│  │              MCPHost (本项目)                          │  │
│  │  • 管理多个 MCP Server 连接                            │  │
│  │  • 接收 LLM 的工具调用请求                              │  │
│  │  • 路由到正确的 Server 执行                             │  │
│  │  • 返回结果给 LLM                                      │  │
│  └───┬──────────┬──────────┬──────────────────────────────┘  │
│      │          │          │                                  │
│  ┌───▼───┐  ┌──▼───┐  ┌──▼────┐                              │
│  │Server1│  │Server2│  │Server3│  ← MCP Server (外部工具)    │
│  └───────┘  └───────┘  └───────┘                              │
└─────────────────────────────────────────────────────────────┘

核心功能

  • ✅ 多服务器管理 - 同时连接和管理多个 MCP Server
  • ✅ Function Calling - 无缝对接 LLM 的工具调用协议
  • ✅ 异步优先 - 全异步实现,支持并发调用
  • ✅ 事件系统 - 连接状态变更、工具变更等事件通知
  • ✅ 错误处理 - 完善的错误处理和超时控制
  • ✅ 零核心依赖 - 仅使用 Python 标准库
  • ✅ 可视化演示 - 内置 Streamlit Web 界面

快速开始

1. 克隆项目

git clone https://github.com/beidaomitu233/MCPHost-python.git
cd MCPHost-python

2. 安装依赖

# 基础安装
pip install -e .

# 包含演示应用
pip install -e ".[demo]"

# 包含开发工具
pip install -e ".[dev]"

3. 验证安装

# 运行测试
python -m mcp_host.demo.test_mcp_connection

目录结构

mcp-host/
├── mcp_host/               # 核心库
│   ├── __init__.py         # 包入口,导出常用类
│   ├── host.py             # MCPHost 主类
│   ├── models.py           # 数据模型定义
│   ├── protocol.py         # 协议处理层
│   ├── transport.py        # 传输层 (stdio/sse)
│   └── client.py           # 简化客户端
│   └── demo/               # 演示和测试
│       ├── demo_app.py     # Streamlit Web界面
│       ├── demo_server.py  # 示例MCP服务器
│       ├── example.py      # 使用示例
│       ├── test_mcp_connection.py  # 连接测试
│       ├── test_mcp_host.py        # 完整测试
│       └── mcp_settings.json       # 配置文件
├── README.md               # 中文文档
├── README_EN.md            # 英文文档
└── pyproject.toml          # 项目配置

代码模块说明

各模块详细说明

模块用途使用场景
host.py核心 Host 类管理所有服务器连接的主要入口
models.py数据模型配置、类型、结果等数据结构
transport.py传输层与 MCP Server 的底层通信
protocol.py协议层MCP 协议的具体实现
client.py简化客户端封装 MCPHost 的便捷使用方式
1. models.py - 数据模型

定义了所有数据结构:

类名用途使用场景
MCPServerConfig服务器配置配置如何连接一个 MCP Server
ToolDefinition工具定义描述一个工具的名称、参数、描述
ToolCallResult工具调用结果封装工具调用的返回结果
ConnectionStatus连接状态枚举表示服务器的连接状态
2. transport.py - 传输层

负责与 MCP Server 的底层通信:

类名用途
Transport传输层抽象基类
StdioTransport通过标准输入输出通信(最常用)
SSETransport通过 Server-Sent Events 通信
3. protocol.py - 协议层

实现 MCP 协议的逻辑:

类名用途
MCPServer封装单个服务器的完整交互流程
FunctionCallHandler处理 Function Calling 协议
4. host.py - 核心 Host 类

这是您主要使用的类:

类/方法用途
MCPHost主入口,管理所有服务器连接
add_server(config)添加并连接一个服务器
remove_server(name)移除一个服务器
get_function_definitions()获取工具定义(发送给 LLM)
handle_function_call(name, args)执行工具调用
shutdown()关闭所有连接

如何使用

推荐方式:使用 MCPClient(只需配置 JSON 文件)

这是最简单的方式。你只需要编写一个 mcp_settings.json 配置文件,其余全部自动处理。

第 1 步:创建配置文件 mcp_settings.json

{
    "mcpServers": {
        "python-os-monitor": {
            "command": "python",
            "args": ["-m", "mcp_host.demo_server"],
            "timeout": 60.0,
            "env": {"PYTHONIOENCODING": "utf-8"}
        },
        "filesystem": {
            "command": "npx",
            "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
        }
    }
}

第 2 步:在代码中使用

from mcp_host import MCPClient

# 一行代码初始化(自动读取配置、连接所有服务器)
client = MCPClient.from_settings("mcp_settings.json")

# 获取工具定义(发送给 LLM)
tools = client.get_tools()
print(f"可用工具: {[t['function']['name'] for t in tools]}")

# 调用工具
result = client.call_tool("get_system_info")
print(result.to_text())

# 用完关闭
client.close()

与 LLM 集成的完整示例

import json
from mcp_host import MCPClient
from openai import OpenAI

# 1. 初始化 MCP Client(自动从配置文件加载所有服务器)
mcp = MCPClient.from_settings("mcp_settings.json")

# 2. 获取工具定义
tools = mcp.get_tools()

# 3. 调用 LLM
client = OpenAI()
messages = [{"role": "user", "content": "帮我查看系统信息"}]

response = client.chat.completions.create(
    model="gpt-4",
    messages=messages,
    tools=tools  # 传入工具定义
)

# 4. 处理 LLM 返回的工具调用
if response.choices[0].message.tool_calls:
    for tc in response.choices[0].message.tool_calls:
        # 执行工具调用
        result = mcp.call_tool(
            tc.function.name,
            json.loads(tc.function.arguments)
        )
        
        # 将结果返回给 LLM
        messages.append({
            "role": "tool",
            "tool_call_id": tc.id,
            "content": result.to_text()
        })
    
    # 5. 让 LLM 根据工具结果生成最终回复
    final_response = client.chat.completions.create(
        model="gpt-4",
        messages=messages
    )
    print(final_response.choices[0].message.content)

mcp.close()

直接使用 MCPHost

import asyncio
from mcp_host import MCPHost
from mcp_host.models import MCPServerConfig

async def main():
    # 创建 Host
    host = MCPHost(default_timeout=60.0)
    
    # 添加服务器
    config = MCPServerConfig(
        name="python-os-monitor",
        command="python",
        args=["-m", "mcp_host.demo_server"],
        env={"PYTHONIOENCODING": "utf-8"},
    )
    await host.add_server(config)
    
    # 获取工具定义
    tools = host.get_function_definitions()
    
    # 处理工具调用
    result = await host.handle_function_call("get_system_info", {})
    print(result.to_text())
    
    # 清理
    await host.shutdown()

asyncio.run(main())

MCP 配置详解

配置格式

{
  "mcpServers": {
    "python-os-monitor": {
      "command": "python",
      "args": ["-m", "mcp_host.demo_server"],
      "disabled": false,
      "type": "stdio",
      "timeout": 60.0,
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}

每个字段的含义

字段类型说明示例
mcpServersobject顶层对象,包含所有服务器配置-
python-os-monitorstring服务器唯一标识名,可自定义"my-server"
commandstring启动命令,指定如何运行服务器"python", "node", "npx"
argsarray命令行参数,传递给command的参数列表["-m", "mcp_host.demo_server"]
disabledboolean是否禁用此服务器false
typestring传输类型,stdio(标准输入输出)或 sse(服务器发送事件)"stdio"
timeoutnumber请求超时时间(秒)60.0
envobject环境变量,传递给子进程{"PYTHONIOENCODING": "utf-8"}

为什么MCP Tools这样设计?

  1. Stdio传输模式:通过标准输入输出通信,服务器作为子进程运行,安全性高,不需要额外的网络端口
  2. JSON-RPC 2.0协议:标准化的请求响应格式,与各种语言库兼容
  3. 多服务器支持:可同时连接多个MCP服务器,工具自动路由到正确的服务器
  4. 超时控制:防止单点故障影响整体服务,避免无限等待

嵌入到您的应用

方式一:直接嵌入

将 mcp_host/ 文件夹复制到您的项目中:

YourProject/
├── your_app/
│   ├── __init__.py
│   └── main.py          # 您的主应用
├── mcp_host/           # 直接复制过来的文件夹
│   ├── __init__.py
│   ├── models.py
│   ├── host.py
│   └── ...
└── requirements.txt

然后在您的代码中直接导入使用:

# your_app/main.py
from mcp_host import MCPHost
from mcp_host.models import MCPServerConfig

方式二:作为依赖安装

# 在您的项目目录下
pip install /path/to/MCPHost-python

然后在 requirements.txt 中添加:

git+https://github.com/beidaomitu233/MCPHost-python.git

可视化演示

启动演示

pip install streamlit
cd demo
streamlit run demo_app.py

演示功能

  1. 连接配置

- 内置经过测试的配置,一键连接测试 - 编辑自定义配置 - 查看服务器状态

  1. 工具测试

- 选择可用工具 - 输入参数 - 查看调用结果 - 查看执行时间

  1. AI 对话

- 配置自定义API - 与AI进行对话 - AI自动调用工具

  1. 事件日志

- 实时显示操作日志 - 按级别过滤日志


测试

运行连接测试

python -m mcp_host.demo.test_mcp_connection

运行完整测试

python -m pytest mcp_host/demo/test_mcp_host.py -v

测试覆盖

测试项测试数量状态
初始化 Host5✅
添加服务器3✅
注册后状态验证4✅
Function Calling 定义5✅
工具调用4✅
错误处理1✅
获取工具定义2✅
获取服务器实例3✅
服务器状态2✅
移除服务器3✅
重新添加服务器2✅
事件系统1✅
资源访问1✅
清理资源2✅

常见问题

Q: MCP Server 是什么?

A: MCP Server 是提供工具的程序,它遵循 MCP 协议。例如 weather-server 提供天气查询工具,filesystem-server 提供文件操作工具。

Q: 我怎么知道 MCP Server 提供哪些工具?

A: 连接后调用 host.get_tool_definitions() 即可获取所有可用工具列表。

Q: 支持哪些 LLM?

A: 任何支持 Function Calling / Tool Use 的 LLM 都可以对接,包括 OpenAI GPT-4、Anthropic Claude 等。

Q: 可以同时连接多个 Server 吗?

A: 可以!使用 host.add_server(config) 添加任意多个服务器。

Q: Streamlit 工具调用失败怎么办?

A: Demo 应用采用每次调用重新连接的设计,确保稳定性。如果仍有问题,请先在「连接配置」选项卡中测试连接。


License

MIT License

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

中间件Python本地部署工具调用异步处理多服务器管理LLM集成

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 运行环境,换机器要重新装一遍。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
MCP Host Python

MCP World · 本页

0stdio有1 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

MCP Host Python 怎么安装?

公开资料给出的安装命令是 pip install -e .,运行环境为 未标注。装完后按客户端要求写进 MCP 配置,重启客户端生效。

MCP Host Python 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

MCP Host Python 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

MCP Host Python 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

MCP Host Python 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP