MCP Funnel 是一款模型上下文协议(MCP)代理服务器,它能够将多个 MCP 服务器聚合为单一接口,让你可以通过 Claude Desktop 或 Claude Code CLI 同时使用来自多个源的工具。
你可以按照以下步骤快速使用 MCP Funnel:
.mcp-funnel.json 文件。npx mcp-funnel # 使用 ./.mcp-funnel.json
npx mcp-funnel /path/to/config.json
~/.mcp-funnel/.mcp-funnel.json 文件,它将与项目配置合并,项目配置的值会覆盖用户基础配置的值,数组会被替换(不会进行拼接)。{
"mcpServers": {
"mcp-funnel": {
"command": "npx",
"args": ["-y", "mcp-funnel"]
}
}
}
github__create_issue、memory__store_memory)。目前文档未提供具体安装命令,可根据上述先决条件进行准备。
以下是一个简单的配置示例,展示如何将 MCP Funnel 与 Claude Code CLI 集成:
{
"mcpServers": {
"mcp-funnel": {
"command": "npx",
"args": ["-y", "mcp-funnel"]
}
}
}
如果你想使用自定义配置文件路径,可以这样做:
{
"mcpServers": {
"mcp-funnel": {
"command": "npx",
"args": ["-y", "mcp-funnel", "/path/to/your/.mcp-funnel.json"]
}
}
}
command:要执行的命令args:命令参数(可选)env:环境变量(可选)commands__… ;alwaysVisibleTools 不适用于开发命令列表。过滤模式用于匹配带前缀的工具名称(serverName__toolName),并支持通配符(*):
github__get_team_members - 隐藏 GitHub 服务器的特定工具memory__check_database_health - 隐藏 Memory 服务器的特定工具memory__dashboard_* - 隐藏 Memory 服务器的所有仪表盘工具github__debug_* - 隐藏 GitHub 服务器的所有调试工具*__workflow_* - 隐藏任何服务器的所有与工作流相关的工具memory__ingest_* - 隐藏 Memory 服务器的所有摄入工具*__list_* - 隐藏任何服务器的所有列表工具MCP Funnel 包含用于发现和桥接的内部工具,你可以使用 exposeCoreTools 控制暴露哪些核心工具:
"exposeCoreTools": ["discover_*", "load_toolset"] // 仅暴露发现工具和工具集加载工具
可用的核心工具包括:
discover_tools_by_words - 通过关键字搜索工具get_tool_schema - 获取工具的输入模式bridge_tool_request - 动态执行工具load_toolset - 加载预定义的工具模式如果未指定 exposeCoreTools,默认启用所有核心工具。
MCP Funnel 提供了一个三层可见性系统来管理哪些工具被暴露:
alwaysVisibleTools):匹配这些模式的工具从启动时就始终可见,即使使用动态发现模式(空允许列表)也是如此,适用于你始终需要使用的关键工具。exposeTools):当使用空允许列表(exposeTools: [])时,这些工具最初是隐藏的,但可以通过 load_toolset 动态发现和启用;当列入 exposeTools 允许列表时,它们从启动时就可见。hideTools):匹配这些模式的工具永远不会被暴露,无论其他设置如何。如果你想从最小化的工具集开始,并按需启用工具,可以这样配置:
{
"exposeTools": [],
"alwaysVisibleTools": [],
"exposeCoreTools": [
"discover_*",
"get_tool_schema",
"load_toolset",
"bridge_tool_request"
]
}
运行时流程如下:
discover_tools_by_words 并提供关键字(如 "context7")。load_toolset 并指定明确的工具名称或模式(如 ["context7__resolve_library_id", "context7__get-library-docs"])。核心工具模式允许你仅暴露 MCP Funnel 的内部工具以进行动态发现。当你将 exposeCoreTools 设置为最小集合时,MCP Funnel 可以只暴露最少 3 个工具,而不是 100 多个:
MCP Funnel 包含一个 discover_tools_by_words 工具,允许通过关键字搜索工具。然而,目前该功能的实用性有限:
discover_tools_by_words 可以找到匹配的工具。.env 文件(在 .gitignore 中忽略)。运行测试套件:
yarn test # 运行所有测试
yarn test:e2e # 运行端到端测试
yarn validate # 运行代码质量检查( lint、类型检查、格式化)
该项目包含全面的端到端测试,模拟了与模拟 MCP 服务器的 Claude SDK 对话。
欢迎贡献代码!目前需要改进的关键领域包括:
┌────────────────────────┐
│ CLI (e.g. Claude Code) │
└──────┬─────────────────┘
│ MCP Protocol via stdio
┌──────▼──────┐
│ MCP Funnel │ ← Filtering and dynamic discovery happens here
└──────┬──────┘
│
┌───┴──────┬─────────┬─────────┐
│ │ │ │
┌──▼────┐ ┌───▼───┐ ┌───▼───┐ ┌───▼───┐
│GitHub │ │Memory │ │FS │ │ ... │ ← Each exposes all tools
└───────┘ └───────┘ └───────┘ └───────┘
MCP Funnel 的工作流程如下:
本项目采用 MIT 许可证,详情请参阅仓库根目录下的 LICENSE 文件。
本项目基于 Anthropic 的 Model Context Protocol SDK 构建。