Sen0E

MiaoMcp

Community Sen0E
Updated

MiaoMcp

将本地 FastMCP 工具和任意数量的远程 MCP 服务同时接入小智。目前本地提供:

  • calculator.calculate:安全计算基础算术表达式;
  • time.get_current:查询指定 IANA 时区的当前日期和时间,默认北京时间。

每个启用的 MCP Server 都拥有独立的 WebSocket 连接、进程和重连循环。一个远程服务故障不会阻塞其他服务。

配置

编辑根目录下被 Git 忽略的 mcp_config.json

{
  "xiaozhi": {
    "endpoint": "wss://小智后台生成的完整接入点URL"
  },
  "mcpServers": {
    "miaomcp-local": {
      "type": "stdio",
      "command": "miaomcp-server"
    },
    "modelscope-weather": {
      "type": "sse",
      "url": "https://mcp.api-inference.modelscope.net/服务ID一/sse"
    },
    "modelscope-search": {
      "type": "sse",
      "url": "https://mcp.api-inference.modelscope.net/服务ID二/sse"
    }
  }
}

mcpServers 中继续添加条目即可接入更多服务。支持的类型:

  • stdio:本地 MCP 命令;
  • sse:远程 SSE MCP,自动通过 mcp-proxy 转换;
  • streamablehttphttp:远程 Streamable HTTP MCP;
  • 设置 "disabled": true 可临时停用某项。

需要请求头的服务可以配置:

{
  "type": "sse",
  "url": "https://example.com/sse",
  "headers": {
    "Authorization": "Bearer token"
  }
}

mcp_config.json 和其中的 URL、token 都不应提交。可提交模板见 mcp_config.example.json

运行

uv sync
uv run miaomcp

指定其他配置文件:

uv run miaomcp --config /path/to/mcp_config.json

仅启动本地 stdio 工具服务:

uv run miaomcp-server

添加本地工具

src/miaomcp/tools/ 中编写业务函数,然后在 src/miaomcp/server.py 使用 @mcp.tool() 注册。不需要修改网关或配置。

项目结构

src/miaomcp/
├── cli.py                  命令行入口
├── server.py               本地 FastMCP 服务及工具注册
├── gateway/
│   ├── config.py           配置模型、加载与校验
│   ├── commands.py         stdio 与远程代理命令构造
│   ├── bridge.py           单个 MCP 与小智的双向桥接
│   └── manager.py          多服务并发和断线重连
└── tools/
    ├── calculator.py       安全计算器
    └── current_time.py     时区时间查询

tests/                      按模块组织的测试
mcp_config.example.json     可提交的配置模板
mcp_config.json             本地敏感配置,Git 忽略
pyproject.toml              项目元数据、依赖和命令入口

测试

uv run python -m unittest discover -s tests -v

MCP Server · Populars

MCP Server · New