一个 MCP 服务器整合四个目录的 7.5 万服务器索引,提供搜索、推荐、自动配置功能,解决 MCP 生态的发现难题。
MCP 服务器目前已有数以万计。Glama 收录约 75,000 个,PulseMCP 列出了约 22,000 个,npm 上打上 mcp-server 标签的包更是数以千计。然而我们当下使用 MCP 的方式依然停留在:四处找到一个服务器,把配置粘贴进文件,重启客户端,周而复始。这个流程有两个地方是broken的。
你的 Agent 无法回答"有没有查询 Postgres 的工具"——你必须在对话开始前就知道答案、找到服务器并完成对接。每添加一个服务器就永远占用 context。每个已配置的服务器都会把自己的工具 schema 加载到每次请求中。十个服务器,每个十几个工具,光是打招呼之前就已经烧掉数千个 tokens 了。这就是为什么大多数人的服务器数量都停留在个位数——不是因为他们不需要更多能力,而是因为 context 实在太贵了。
mcp-anything 是一个反转了这一逻辑的 MCP 服务器。它不是让你去配置 N 个服务器,而是给模型提供恰好五个元工具:
search_mcp_servers → 对整个索引生态进行 BM25 搜索
describe_mcp_server → 传输方式、环境变量、安全评估
list_mcp_tools → 实时连接、单一服务器的真实 schema
call_mcp_tool → 执行(会话池化并复用)
sync_registry → 刷新索引
索引是通过同步四个目录构建的——官方 MCP registry、PulseMCP、npm search 和 Glama——按规范化的仓库 URL 和包身份去重,并合并流行度信号(GitHub stars、npm 下载量)。请求一个能力,得到最适合的服务器,拉取其真实 schema,执行。无论生态扩展到多大,context 成本都保持不变。
claude mcp add anything -- npx -y mcp-anything serve
词搜索,而非 embedding。 所有人的第一反应(也包括我的)都是向量数据库。我最终选择了 BM25(MiniSearch)加上对数流行度增强:完全本地化、零 API 成本、无需构建索引——而在工具发现场景下,它的表现不相上下。Anthropic 为 Claude 原生工具搜索做了同样的选择。在 75,000 个服务器面前,真正的排序问题不是语义上的细微差别;而是如何把第一百个被废弃的"gdrive-upload"克隆版挡在前五之外。Stars 和下载量比余弦相似度更能解决这个问题。
会话,而非无状态代理。 MCP 不是无状态的 RPC——它有 initialize 握手和能力协商。把下游调用当作一次性请求会破坏真正的服务器。mcp-anything 用 LRU 淘汰策略池化活跃的客户端会话,这样对同一服务器的重复调用可以复用连接。
安全才是真正的产品。 把 LLM 指向一个公开的任意服务器目录,这是一个细思极恐的想法,我认为任何不把这件事放在首位的聚合器都是不负责任的。默认安全策略如下:
SSRF 防护:拒绝任何 endpoint 指向 loopback、私网段或云元数据地址(169.254.169.254——是的,测试用例里有一个假的"元数据窃取器"服务器作为fixture)的 registry 条目。
代码执行防护:通过 npx/uvx 生成 stdio 服务器默认关闭,开启需显式配置按包名白名单并锁定版本。
密钥永不索引:API keys 只存在于本地配置中,在连接时注入,绝不缓存或暴露给模型。
不可信输出需标记:下游服务器的工具描述和结果标记为第三方数据。这能缓解工具投毒,但无法根治。没有人真正解决了这个问题。SECURITY.md 里明确写了这一点。
公开托管必须有所限制。mcp-anything.onrender.com 有一个托管实例,你可以把任何 MCP 客户端指向它来试用发现功能——但它运行在仅发现模式,只暴露 search/describe。如果在公开实例上启用 call_mcp_tool,那就成了一个开放代理,可以对任何人执行任意操作。Dockerfile 默认配置为仅发现模式,正是出于这个原因。
那些不酷的部分才是真正的工作。npm 对快速翻页限速(429s)——同步需要重试加退避再加上礼貌延迟,一次完整的索引运行才能存活。官方 registry 拒绝超过 100 字符的描述,并对发布在 npm 包内部的 mcpName 字段强制执行大小写敏感的命名空间所有权校验。跨源去重听起来简单,直到同一个服务器以 io.github.acme/weather、pulse/weather-mcp 和 npm/@acme/weather-mcp 三种不同元数据形态出现。还有一个每个人都应该问的诚实定位问题:像 MetaMCP 这样的网关聚合的是你已经配置好的服务器;Composio 的 Rube 路由到它自己托管的目录;客户端原生工具搜索搜的是已经连接的工具。开放的组合——以公共 registry 为目录、本地优先的单二进制、明确的安全策略、可对抗私有 registry——才是那个空白。无论这空白还会存在多久是个公平的问题;无论如何它都是 MIT 许可的。
下一步的方向:按工具索引(搜索热门服务器的实际工具名/schema,而不仅是服务器描述)、排名中的实时健康信号,以及作为白名单替代方案的 stdio 容器沙箱化。如果这些听起来有意思,repo 里有一些 good-first-issues。
Repo: https://github.com/Dror-Bengal/mcp-anything · 立即试用发现功能:https://mcp-anything.onrender.com · 49 个测试,CI 绿灯,无遥测,无云账号。
声明:这是一个完全开放构建的项目,在大量 AI 结对编程的帮助下完成——每个设计决策都经过 review,每行代码都经过测试。