关于 mcp-anything
mcp-anything 是面向 MCP 用户的元 MCP 服务,帮助用户发现和调用服务,而无需逐一配置。它索引公共注册表,并提供搜索、检查和调用工具,同时明确控制连接策略。
主要功能
- 01搜索已索引的 MCP 注册表
- 02检查服务元数据和工具
- 03调用下游服务工具
- 04去重并排序注册表条目
- 05执行连接与运行策略
适用场景
- 01查找具备所需能力的服务
- 02连接前检查服务提供的工具
- 03通过一份 MCP 配置调用下游工具
- 04托管仅供发现的注册表搜索端点
MCP 相关
它向 MCP 客户端提供元工具,用于查找、检查和调用其他 MCP 服务。下游连接受策略控制,并通过会话池复用连接。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 结果数量上限(默认值为 5) |
| query | string | 是 | 你想执行的操作,例如 'query postgres database' 或 'send slack message' |
详细介绍
mcp-anything
一个 MCP 服务,可以发现并调用全球几乎任何 MCP 服务。

mcp-anything 是一个 元 MCP 服务:你无需在宿主端(Claude Desktop、Claude Code、Cursor 等)配置数十个 MCP 服务,只需配置一个即可。它会在本地索引 官方 MCP 注册表,并提供五个小型元工具,让模型即时搜索服务、查看服务信息并调用其工具,而无需将数千个工具架构加载到上下文窗口中。
Host / LLM
│ (5 meta-tools, constant context cost)
▼
mcp-anything ──── local BM25 index ◄──┬── official MCP registry (moderated, richest metadata)
│ (cross-source dedupe, ├── PulseMCP (~22k servers, stars & downloads)
│ popularity-boosted ├── npm (~67k packages tagged mcp)
│ ranking) └── Glama (~75k indexed servers)
│
│ security policy: SSRF guard · stdio allowlist · secrets injection · timeouts
▼
downstream MCP servers (streamable-http / sse / stdio via npx·uvx)
为什么使用
- 发现:MCP 服务已有数千个,但你的宿主端只知道你手动配置的那些。
- 上下文:加载许多服务会占用上下文窗口。元工具让成本保持恒定——模型分两个阶段搜索功能(搜索 → 查看 → 调用),采用与 Anthropic 的 Tool Search 相同的模式。
- 一份配置:在 MCP 客户端配置中只需添加一个条目,而非每个服务一个。
快速开始
# Run directly (Node >= 20):
npx mcp-anything sync # first-time index download (~few seconds)
npx mcp-anything serve # start the meta-MCP server on stdio
Claude Code
claude mcp add anything -- npx -y mcp-anything serve
Claude Desktop / 其他宿主端
{
"mcpServers": {
"anything": {
"command": "npx",
"args": ["-y", "mcp-anything", "serve"]
}
}
}
然后,只需向模型提出类似 “查找一个可以查询 Postgres 并列出其工具的 MCP 服务” 的请求,它就会自行使用元工具。
HTTP 模式与托管发现
mcp-anything serve --http # streamable HTTP on :8080 (POST /mcp)
mcp-anything serve --http --discovery-only # safe for public hosting: search/describe only
启用执行功能的公共实例会成为开放代理——切勿将完整实例托管在公共网络上。Dockerfile 默认仅启用发现功能,正是出于这个原因。托管的发现实例可以让任何 MCP 客户端搜索整个生态系统;实际连接并调用工具则应使用本地安装。
CLI
mcp-anything sync # refresh the registry index
mcp-anything search "weather" # search the index from your terminal
mcp-anything serve # stdio MCP server (default command)
元工具
| 工具 | 功能 |
|---|---|
search_mcp_servers | 在已索引的注册表中进行关键词搜索(BM25 + 模糊匹配)。返回候选项及其可连接性判定。 |
describe_mcp_server | 完整的注册表元数据:传输方式、软件包、所需环境变量 / 密钥、策略判定。 |
list_mcp_tools | 根据策略实时连接,并列出该服务的实际工具及其 JSON 架构。 |
call_mcp_tool | 在下游服务上执行一个工具。会话会被汇集并重复使用。 |
sync_registry | 强制刷新索引(否则会在 TTL 到期时自动刷新)。 |
安全模型
默认情况下,将大模型连接到公共注册表中的任意服务存在风险。mcp-anything 采用保守的默认设置,并要求明确配置每一项放宽措施:
- 远程服务(streamable-http / sse):允许连接,但会阻止私有 / 环回 / 链路本地地址(包括
169.254.169.254等云元数据端点)以及纯http:地址——以此防止注册表条目指向你的网络时发生 SSRF。可通过remote.allowPrivateNetwork选择退出此限制(仅适用于本地开发)。 - Stdio 服务(启动
npx/uvx进程):**默认禁用。**从公共注册表运行软件包,相当于在你的机器上执行任意代码。只有配置明确的逐软件包允许列表后,才可启用。 - 密钥:API 密钥绝不会被索引或暴露给模型。你可以在配置中为每个服务单独映射密钥;连接时会注入密钥(远程服务通过标头,stdio 服务通过环境变量)。
- 不可信输出:下游服务返回的结果和工具描述会标记为第三方数据,让模型将其视为数据而非指令。这会降低提示词注入风险,但无法消除风险——参见 SECURITY.md。
- 限制:连接 / 调用超时、响应大小截断、会话池容量上限。
配置
~/.config/mcp-anything/config.json(或 --config <path>,或 MCP_ANYTHING_CONFIG):
{
"registryUrl": "https://registry.modelcontextprotocol.io",
"sources": ["official"],
"qualityFilter": true,
"cacheTtlHours": 24,
"maxServers": 10000,
"policy": {
"remote": {
"enabled": true,
"allowPrivateNetwork": false,
"headers": {
"io.github.example/github": { "Authorization": "Bearer ghp_..." }
}
},
"stdio": {
"enabled": false,
"allowPackages": ["@modelcontextprotocol/server-filesystem"],
"env": {
"io.github.example/postgres": { "DATABASE_URL": "postgres://..." }
}
},
"limits": {
"callTimeoutMs": 60000,
"connectTimeoutMs": 20000,
"maxSessions": 8,
"maxResultChars": 100000
}
}
}
所有字段均为可选;若不提供任何配置,使用的就是上述默认值(不包括示例中的 headers/env)。registryUrl 可使用任何实现官方 REST API 的注册表,包括私有或可自托管的注册表。
索引来源——拓展覆盖范围
sources 控制索引涵盖的生态规模:
| 来源 | 规模 | 添加的内容 |
|---|---|---|
official (默认) | 数千 | 经审核的条目,元数据最丰富(传输方式、环境变量、版本) |
pulsemcp | ~22k | 广泛的目录,以及 GitHub 星标数和下载量(用于排名) |
npm | ~67k 个带标签的包 | 最大的原始 stdio 服务池,包含每月下载量 |
glama | ~75k | 覆盖最广的索引(尽力而为的适配器) |
{ "sources": ["official", "pulsemcp", "npm"] }
在多个目录中出现的条目会根据规范化的仓库 URL 和包标识符进行去重;最可信的来源决定条目的身份,其他来源则补充元数据,星标数和下载量会累加。随后,排名会结合 BM25 相关性与按对数缩放的人气加成(以及官方注册表条目的额外加分),因此 search_mcp_servers 会优先显示某项功能的维护中实现,而不是第 100 个已弃用的克隆版本。qualityFilter(默认开启)会剔除无法连接且没有可用描述的条目——对于广泛的来源,只有确保垃圾内容不会挤进前 5 条结果,更多才更有价值。某个来源失效时会优雅降级:同步会保留其他来源返回的所有内容,并报告故障。
设计说明
- 词法搜索,而非嵌入。 完全本地运行,零 API 费用,无需构建索引步骤;在工具发现方面,带模糊匹配的关键词搜索在实践中的表现不相上下(Anthropic 的 Tool Search 也采用了同样的 BM25/regex 方案)。
- 会话,而非无状态调用。 MCP 以会话为导向(初始化握手、能力协商)。下游连接会被汇集,并在多次调用间重复使用,同时通过 LRU 淘汰机制管理。
- 优雅降级。 如果无法访问注册表,上次同步的缓存仍可继续使用。
相关工作与定位
这一领域正蓬勃发展:MetaMCP 和其他网关会聚由你配置的服务;Composio 的 Rube 会将请求路由到其自有的精选目录;各类宿主正在扩展原生工具搜索。mcp-anything 的定位在于开放组合:将公共注册表作为目录,采用本地优先的单一二进制文件,并设有明确的安全策略——无需云账户,不受策展限制,可针对私有注册表进行自托管。
路线图
- 在排名中加入实时健康检查和结果质量信号
- 通过为热门服务索引
tools/list,支持按工具(而不只是按服务)搜索 - 为需要 OAuth 的远程服务传递 OAuth 流程
- 为 stdio 服务提供容器/Wasm 沙箱,作为允许列表的替代方案
- 支持多个注册表并实现联邦与去重
- 可选的 streamable-http 服务模式(用于共享/团队部署)
开发
npm install
npm test # unit + end-to-end (mock registry + real downstream MCP server)
npm run typecheck
npm run build
node scripts/smoke.mjs # spawns the built CLI as a real stdio MCP server
请参阅 CONTRIBUTING.md。采用 MIT 许可证。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。