mcpField
M
mcp-anything

mcp-anything

本地服务
dror-bengal.github.io开发工具310 周前更新

关于 mcp-anything

mcp-anything 是面向 MCP 用户的元 MCP 服务,帮助用户发现和调用服务,而无需逐一配置。它索引公共注册表,并提供搜索、检查和调用工具,同时明确控制连接策略。

主要功能

  1. 01搜索已索引的 MCP 注册表
  2. 02检查服务元数据和工具
  3. 03调用下游服务工具
  4. 04去重并排序注册表条目
  5. 05执行连接与运行策略

适用场景

  1. 01查找具备所需能力的服务
  2. 02连接前检查服务提供的工具
  3. 03通过一份 MCP 配置调用下游工具
  4. 04托管仅供发现的注册表搜索端点

MCP 相关

它向 MCP 客户端提供元工具,用于查找、检查和调用其他 MCP 服务。下游连接受策略控制,并通过会话池复用连接。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dror-bengal-mcp-anything": {
"command": "npx",
"args": [
"-y",
"mcp-anything"
]
}
}
}
启动命令npx -y mcp-anything

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-anything0.2.0

工具

5

收录的工具列表 · 更新于 2 周前

参数类型必填说明
limitinteger否结果数量上限(默认值为 5)
querystring是你想执行的操作,例如 'query postgres database' 或 'send slack message'

详细介绍

mcp-anything

CI npm License: MIT Node >= 20

一个 MCP 服务,可以发现并调用全球几乎任何 MCP 服务。

mcp-anything 演示:从终端搜索 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 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。