Skip to content
Conduit

mcp server

mcp-agent

通用 MCP Agent 框架:MCP 工具编排 + 多模型 LLM(DeepSeek/GLM/OpenAI)+ edge-tts 语音 + 图片数字人 + OpenAI 兼容接口平台(可对接 Dify)

xzndsg/mcp-agentcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "xzndsg-mcp-agent": {
      "command": "uvx",
      "args": [
        "mcp-agent"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 26, 2026

mcp-agent

通用 MCP Agent 框架 —— Flask 做服务外壳,LangChain 做智能内核,MCP 做业务连接,能力层做多模态。

设计参考 Fay 的 MCP 内核理念,沉淀为一个可嵌入、可二次开发的通用框架:统一管理 MCP 业务工具,并自带 语音合成(Edge-TTS)、图片数字人、OpenAI 兼容接口平台 等多模态能力。

它解决什么问题

业务系统(数据库、内部 API、SaaS、设备……)以 MCP Server 的形式暴露工具,本框架:

  1. 统一接入:同时管理多个 MCP Server,支持 stdio / sse / streamable-http 三种传输;
  2. 统一编排:把 MCP 工具自动适配为 LangChain 工具,由 LLM Agent 自主决策调用;
  3. 统一对外:REST + SSE、WebSocket 对话接口,并可把自身反向暴露为 MCP Server,接入 Claude Desktop 等 MCP 宿主;
  4. 统一能力:TTS / 数字人 / 视频生成等多模态能力以 Provider 插件化接入,并通过接口平台(能力发现 + OpenAI 兼容端点)供 Dify、Coze、自有前端直接对接;
  5. 可观测、可降级:连接状态/延迟/错误落盘,无 LLM Key 时自动进入本地演示模式,骨架永远可跑。

架构

                         ┌──────────────────────────── 终端层 ───────────────────────────┐
   网页 / APP / 业务系统  │  REST(/api/chat)  SSE(/api/chat/stream)  WebSocket(/ws)       │
                         └──────────────────────────────┬────────────────────────────────┘
                                                        │ Flask (mcp_agent.server)
        ┌───────────────────────┬───────────────────────┼────────────────────┬───────────────────┐
        │ mcp_admin_api          │ rest_api / ws_api      │ mcp_host            │ web 控制台         │
        │ MCP 服务器/工具管理     │ 对话与流式              │ 自举 MCP Server     │ (templates/static) │
        └───────────┬───────────┴────────────┬───────────┴─────────┬──────────┴───────────────────┘
                    │                        │                     │
                    ▼                        ▼                     ▼
┌──────────────────────────── core(纯 Python 内核,可脱离 Flask 单独使用)──────────────────────┐
│  ServerManager ── 多 MCP Server 生命周期 / 健康检查 / 配置持久化                                   │
│  McpClient    ── stdio / sse / streamable-http,独立线程事件循环                                  │
│  ToolRegistry ── 跨服工具聚合、available/enabled 状态(线程安全)                                  │
│  LocalToolKit ── 进程内 Python 函数直注册(不依赖子进程,演示永不失败)                             │
│  LangChainAdapter ── MCP Tool ⇄ StructuredTool(Pydantic v2 schema 动态生成)                     │
│  AgentRuntime ── LangChain Agent 工具决策 / 多轮会话 / 流式事件                                    │
│  SessionManager / Memory ── 多用户会话隔离(长期记忆为扩展点)                                     │
└───────────────────────────────────────────────────────────────────────────────────────────────┘
                    ▲                                                            ▲
        外部 MCP Servers(stdio / SSE / HTTP)                     DeepSeek / 智谱 / OpenAI(OpenAI 兼容接口)

快速开始

环境要求 Python 3.11+。

# 1. 安装(建议在虚拟环境中)
pip install -e .

# 2. 配置 LLM(复制后填入任意一家的 Key;不填也能以演示模式启动)
copy .env.example .env        # Windows
# cp .env.example .env        # macOS / Linux

# 3. 启动服务(推荐统一入口)
python main.py
# 或:python main.py doctor    # 环境自检
# 或:mcp-agent start          # 等价 CLI

打开管理控制台 http://127.0.0.1:5000:

  • 对话:与 Agent 流式对话,工具由模型自动调用;
  • 数字人:上传一张人物照片,获得一个会呼吸、会眨眼、会说话的形象(Edge-TTS + 音频振幅驱动,零 GPU);
  • 语音:TTS 合成试听 / 多音色选择 / 浏览器原生语音识别;
  • 平台接口:能力发现卡片 + OpenAI 兼容接入文档;
  • MCP 服务器 / 工具:连接管理、跨服工具聚合与启停。

5 分钟体验一个自带工具的 MCP Server

# 终端 A:以 stdio 方式启动示例 MCP Server(echo + add 两个工具)
python examples/echo_mcp_server.py --transport stdio

在控制台 Servers 页新增:transport=stdio,command=python,args=examples/echo_mcp_server.py,点击连接即可看到两个工具。 也可以在终端 A 改用 --transport streamable-http --port 8100,再以 URL http://127.0.0.1:8100/mcp/ 接入。

把本框架自身接入 Claude Desktop

mcp-agent serve --transport stdio

mcp-agent serve 会启动一个 MCP Server,对外暴露 chat、list_available_tools 等工具,宿主即可通过 MCP 协议调用本框架的 Agent 能力。

作为库嵌入

from mcp_agent.core import AgentRuntime, ServerManager, ToolRegistry, LocalToolKit

kit = LocalToolKit()

@kit.register
def order_status(order_id: str) -> str:
    """根据订单号查询订单状态"""
    return f"订单 {order_id}:已发货"

manager = ServerManager()
runtime = AgentRuntime(manager=manager, local_kit=kit)
print(runtime.chat("default", "帮我查一下订单 A1001 的状态"))

更多示例见 examples/。

对接 Dify / Coze / OpenAI SDK(接口平台)

mcp-agent 对外暴露 OpenAI 兼容端点,第三方系统把 BASE_URL 指向本框架即可复用整个 Agent 内核与 MCP 工具生态:

BASE_URL=http://127.0.0.1:5000/v1
API_KEY=任意值(若服务端配置了 MCP_AGENT_API_TOKEN 则填该 Token)

curl http://127.0.0.1:5000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"mcp-agent","messages":[{"role":"user","content":"你好"}],"stream":true}'

能力接口一览(GET /api/v1/capabilities 可动态发现):

接口说明
GET /api/v1/capabilities多模态能力发现(providers / 可用状态)
GET /api/v1/tts/voicesTTS 音色列表
POST /api/v1/tts文本合成语音,返回 audio/mpeg
GET/POST /api/v1/digital_human数字人配置与状态读写
GET/POST /api/v1/digital_human/image获取 / 上传数字人形象图
POST /api/v1/digital_human/speak数字人开口说话(TTS + speaking 状态)
POST /v1/chat/completionsOpenAI 兼容对话(支持 stream)

多模态能力层(Provider 解耦)

所有能力都在 mcp_agent/capabilities/ 中以 Provider 协议 接入,核心代码不依赖任何厂商 SDK:

能力内置 Provider说明 / 扩展
语音合成 TTSedge-tts(微软,免费无 Key,7 音色)新增厂商 = 实现 TTSProvider 并注册
数字人static-image(CSS 呼吸/眨眼/音频振幅摆动,零 GPU)可替换为 SadTalker / EchoMimic 真渲染
视频生成stub(预留扩展位)接入即梦 / 可灵 / Runway 即可实现 VideoProvider

数字人原理:后端只保存形象图与动画参数;前端用 CSS 动画叠加 WebAudio 音频振幅驱动"说话"。升级真渲染只需替换 provider,接口协议不变。

模块说明

模块职责
mcp_agent/core/config.py配置中心:三家 LLM 模板、数据目录、服务参数(.env / 环境变量)
mcp_agent/core/mcp_client.py单个 MCP Server 连接,独立线程事件循环,同步 + 协程双接口
mcp_agent/core/server_manager.py多 Server 增删改查、连接 / 重连、定时健康检查、JSON 持久化
mcp_agent/core/tool_registry.py工具注册中心:跨服聚合、启用状态、线程安全缓存
mcp_agent/core/local_tools.py进程内本地工具:普通 Python 函数自动生成 JSON Schema
mcp_agent/core/langchain_adapter.pyMCP / 本地工具 → LangChain StructuredTool
mcp_agent/core/agent.pyAgent 运行时:模型工厂、工具决策、流式事件、无 Key 降级
mcp_agent/core/session.py多用户会话与历史隔离
mcp_agent/capabilities/多模态能力层:Provider 协议 + TTS / 视频 / 数字人实现
mcp_agent/server/gateway_api.py接口平台网关:能力发现 / TTS / 数字人 / OpenAI 兼容端点
mcp_agent/server/rest_api.pyPOST /api/chat、GET /api/chat/stream(SSE)、会话管理
mcp_agent/server/mcp_admin_api.pyMCP Server / 工具的管理 REST API
mcp_agent/server/ws_api.pyWebSocket /ws 长连接对话
mcp_agent/server/mcp_host.py自举 MCP Server(把 Agent 暴露为 MCP 工具)

扩展点

  • 新增 LLM 厂商:在 config.LLM_PROVIDERS 增加一个 OpenAI 兼容模板即可;
  • 新增多模态能力:在 capabilities/ 实现对应 Provider 协议并注册(如新版 TTS、语音克隆、视频模型、真渲染数字人);
  • 长期记忆 / RAG:实现 mcp_agent/core/memory.py 的 Memory 协议并注入 AgentRuntime;
  • 自定义工具:优先实现为独立 MCP Server(语言无关、可独立部署);进程内工具用 LocalToolKit。

开源协议

MIT。

↑↓ navigate openesc close