mcpmu
使用说明
- 项目简介
- mcpmu 是一个面向 MCP 的后台服务器实现与管理工具,它可以把多个 MCP 服务聚合在一个入口暴露给客户端。它不仅提供工具执行、资源访问和上下文管理,还支持多传输协议(标准输入输出的 stdio 以及基于 HTTP 的 SSE 流式传输)、命名空间分组和权限控制等能力,方便在大规模对话式 AI 应用中提供统一的上下文和外部能力访问。
- 主要功能点
- MCP 服务器聚合与路由:从多个上游 MCP 服务器聚合工具、处理工具调用和路由到对应上游服务器。
- 资源与工具管理:对工具权限、命名空间、默认命名空间等进行集中管理,支持按命名空间进行权限控制。
- 多传输协议支持:内置 stdio 转发以及基于 HTTP 的 SSE 流式传输,便于在不同客户端环境下接入。
- OAuth 与鉴权:提供 OAuth 2.1 相关的发现、 PKCE、动态客户端注册、凭证存储与刷新等机制,能在需要认证时与上游 MCP 服务协同工作。
- 热重载与齿轮更新:对配置文件的改动可热加载并在不中断现有会话的情况下应用到服务中。
- TUI 界面:提供交互式终端界面用于管理服务器、命名空间、权限等配置。
- 支持 Claude Code、Cursor、Windsurf 等 MCP 兼容客户端的统一入口。
- 安装步骤
- 你可以直接使用 Go 安装最新发行版本的命令行工具 mcpmu,或从源码构建
- go install github.com/Bigsy/mcpmu/cmd/mcpmu@latest
- 或者克隆仓库并自行构建:
- 获取源码并进入仓库根目录后执行 go build -o mcpmu ./cmd/mcpmu
- 你可以直接使用 Go 安装最新发行版本的命令行工具 mcpmu,或从源码构建
- 服务器配置(给 MCP 客户端的说明)
- mcpmu 作为 MCP 服务器暴露给 MCP 客户端,客户端需要的配置仅用于 MCP 服务端自身运行时的配置信息。核心在于你需要为 MCP 客户端提供一个可连接的入口,以及在入口中描述要暴露的上游 MCP 服务器。
- 配置信息以 JSON 形式保存,包含以下核心字段(示例以文本描述,非代码块):
- servers:一个对象,键是服务器名称,值是该服务器的配置信息。
- 对于 stdio(本地进程)服务器:包含 Kind 为 "stdio",Command 为要执行的命令,Args 为传给命令的参数数组,Cwd 为工作目录,Env 为环境变量映射,Autostart 指定是否在应用启动时自动启动,并且可选 Enable/Disable 等。
- 对于 HTTP(流式 HTTP/SSE)服务器:包含 URL 指向远端 MCP 服务器的入口地址,BearerTokenEnvVar 指定用于 Bearer Token 的环境变量名,Scopes 指定 OAuth 作用域,Env/Headers 等可选字段。
- namespaces:命名空间集合,每个命名空间包含描述、ServerIDs(该命名空间下暴露的服务器名称列表)、DenyByDefault(未显式配置工具权限时,是否默认拒绝)、以及其他与权限相关的字段。
- toolPermissions:显式的工具权限列表,字段包含 Namespace、Server、ToolName、Enabled(是否允许)。
- servers:一个对象,键是服务器名称,值是该服务器的配置信息。
- 配置文件放置位置通常为默认配置目录 ~./config/mcpmu/config.json,或自定义路径(通过 CLI 传入 --config 指定)。
- 以上信息用于 mcpmu 的后端运行时,以便 MCP 客户端能够通过单一入口对上游 MCP 服务器进行工具调用、资源访问和上下文管理。
- 基本使用方法
- 以 stdio 模式作为 MCP 服务器入口:mcpmu serve --stdio --namespace default
- 也可以预先把所有服务器放在一个命名空间中,或者使用 inline 命名空间配置,结合 --eager 选项实现自启动。mcpmu serve --stdio --namespace work --eager
- 客户端接入步骤大致是:通过 mcpmu 提供的入口地址(针对 HTTP SSE 的端点或本地 stdio 管道),建立 JSON-RPC 连接,按 MCP 协议进行 initialize、工具调用、以及对资源/提示/工具进行上下文化的交互。
- 服务器热重载:修改配置文件后,mcpmu 会在后台监听配置变化并在短时间内应用更改,无需重启服务。
- 基本使用场景举例
- 将本地 MCP 服务聚合后暴露给 Claude Code、Cursor 等客户端,通过一个入口即可访问全部上游服务器的工具集合,并通过命名空间实现权限隔离。
- 重要说明
- MCP 客户端需要的仅是能够连接到 mcpmu 提供的入口,实际的服务器配置信息、命名空间、工具权限等由 mcpmu 的配置文件统一管理。
- 如需在客户端以 JSON 配置方式描述服务器,请根据仓库提供的默认配置结构进行编写,确保服务器名称是唯一标识且配置合法。