关于 MCPfinder - MCP Server Discovery
MCPfinder 是本地 MCP 服务,为 AI 客户端提供 MCP 服务目录搜索、详情查看和安装配置生成。它索引 Official MCP Registry 与 Glama,并通过快照启动和定期更新目录。
主要功能
- 01跨目录搜索 MCP 服务
- 02查看信任信号与安装信息
- 03生成客户端安装配置
- 04按类别浏览服务
适用场景
- 01按关键词查找可用 MCP 服务
- 02安装前检查服务信息与警告
- 03生成客户端可用的配置片段
MCP 相关
它向 MCP 客户端提供搜索、详情、安装配置和分类浏览工具,帮助 Agent 发现并配置其他 MCP 服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | number | 否 | 返回的最大结果数(默认值:10,最大值:50) |
| query | string | 否 | 搜索查询——关键词(例如,"filesystem")、用例("query databases")或技术("postgres")。支持常见别名:"gh" → github,"pg" → postgres,"k8s" → kubernetes,"db" → database。留空可查看最热门的服务。 |
| registryType | enum | 否 | 按包注册表类型筛选npm | pypi | oci | any |
| transportType | enum | 否 | 按传输类型筛选stdio | streamable-http | sse | any |
| registrySource | enum | 否 | 按注册表来源筛选official | glama | smithery | any |
详细介绍
@mcpfinder/server
用于查找 MCP 服务的 MCP 服务。AI 的工具应用商店。
MCPfinder 是一个本地 MCP 服务,可提供可搜索的索引,涵盖 Official MCP Registry 和 Glama 中的 MCP 服务。 只需将它作为一项功能安装到 AI 客户端中,之后助手就能按需发现、检查和安装任何 MCP 服务,无需手动浏览。
快速安装
将以下代码片段添加到客户端的 MCP 配置文件中。首次运行时会从 https://mcpfinder.dev/api/v1/snapshot 下载预构建的压缩快照,因此通常只需下载一次,无需进行耗时 10 分钟的实时同步。服务优先使用 brotli 文件(比 gzip 文件小约 21%);如果无法获取、解压或验证该文件,则会回退到 gzip,此时会下载两次。因此,仅 brotli 下载失败不会导致初始化失败;如果两个文件都下载失败,则下载失败,服务会回退到实时同步,而不会就此停止。设置 MCPFINDER_SNAPSHOT_NO_BROTLI=1 可强制使用 gzip。两种文件的大小都随索引语料库的变化而变化,并会随语料库增长;当前大小可在快照清单的 sizeBytes 和 brotli.sizeBytes 字段中查看:https://mcpfinder.dev/api/v1/snapshot/manifest.json。
下载不会阻塞启动:服务会立即响应 initialize,并在后台获取快照,因此客户端握手超时不会在下载中途终止服务。如果目录仍为空时(快照正在下载期间,以及安装快照时切换句柄期间)收到工具调用,服务会返回包含进度的简短“仍在准备中”提示,而不会一直等待或回答“未找到”。该响应会报告 status: "preparing" 和 retry_after_seconds,绝不会报告 found: false,因此结构化输出的使用方不会把“尚未就绪”误认为“不存在”。文件下载完成后会进行验证(sha256),并在无需重启的情况下切换启用。任何时刻发生的网络故障都会被记录,服务会降级为实时同步,不会因此停止。
多个客户端,共用一个数据目录
Claude Desktop、Cursor 和 Claude Code 各自会针对 ~/.mcpfinder 启动自己的 mcpfinder 进程,因此不会有任何文件被原地替换。每个快照都是独立的不可变文件 data-<sha16>.db,并由一个指针(<data-dir>/data.db.snapshot.json)记录当前文件;进程只会新增文件,而使用旧文件提供服务的同伴进程不会受到影响。
保留策略之后会删除已被取代的数据库文件,而且很长一段时间内只删除该文件:在 POSIX 上,仍打开该文件的同伴进程会继续通过其 inode 正常运行,而其 -wal/-shm 文件——真正会因丢失而导致损坏的部分——会保留下来。即使数据库已被删除,这条规则也仍然适用:孤立的日志文件与仍在运行的同伴进程需要的日志文件无法区分,因此永远不会被回收。
这些文件并非没有成本——一次抓取会作为一个事务提交,一次实测安装中,323MB 的数据库旁有一个 40MB 的 -wal 和一个 1MB 的 -shm——但服务会在每次成功同步后精简 WAL,并妥善关闭已退役的句柄,因此日志不会再一直膨胀到整个抓取的大小。关闭失败时会重试——先快速重试三次,然后通过一个不引用事件循环的计时器每分钟重试一次,且无限持续——而不是放弃:stdio 服务的生命周期与启动它的客户端相同,因此放弃关闭会让文件描述符和 WAL 锁在已被取代的文件上滞留数天。
SIGKILL 是 MCP 客户端通常停止 stdio 服务的方式,无法拦截,因此自上次检查点以来累积的内容会造成已知的泄漏。请参阅 @mcpfinder/core,了解随之而来的两种情况:删除操作可能失败,因此只要无法移除打开文件的名称,过时快照就会滞留;附属文件也可能比其所属的数据库存活更久。
在进程内部,切换时会先打开新文件,再退役旧句柄,因此始终有可用的数据库,且任何工具调用都不会等待切换完成。早期版本安装的实例会继续使用现有的 data.db 运行——它永远不会被重命名或删除——直到第一个较新的快照为指针提供一个带版本号的文件,供其切换使用。
只有在已不再被指针指向,且在 MCPFINDER_SNAPSHOT_RETAIN_HOURS(默认值为 48)指定的时长内未被触碰的文件,才会被回收;无论当前文件的年龄多大,都不会将其删除。这里有意做出的权衡是:如果一个进程切换到较新的快照时,另一个进程正处于实时同步过程中,那么后者也切换时,其同步结果就会丢弃。已发布的快照是目录的唯一事实来源,因此最多只会因此多进行一次后续重新同步。
此后,每天会重新检查已安装的快照(每个周期会轮询四次陈旧阈值,因此即使检查略微提前,也不会将刷新推迟到下一个周期)。检查后若未发现更新,只需发送一个清单请求。若清单公布了不同的摘要值,则会接着请求数据库:对于 gzip 端点,请求是有条件的(使用指针记录的 ETag 发送 If-None-Match——但前提是该 ETag 对应的文件仍在磁盘上,因为修复时重新验证会得到 304 响应,无法安装任何内容);请求可能传输文件,也可能得到 304 响应。对于 brotli 端点,请求是无条件的,因为该制品由自身的摘要值寻址,且不会存储 brotli ETag。brotli 尝试失败时,会额外请求一次 gzip 制品。清单请求始终是无条件的。删除指针会额外产生一次下载,并使进程恢复使用 data.db 这一名义名称——这是安全的:如果该名称对应的文件已被清理,且该名称下只剩同级数据库的日志,resolveCurrentDbPath 会打开一个变体名称,而不会采用被遗留的日志。
需要实时刷新时,注册表会按 Official → Glama 的顺序依次运行,这样后续的去重索引就能看到前面插入的内容。某个来源失败时会报告错误,但不会阻止对其余来源的尝试。
正常的冷启动会使用快照,不会承担实时注册表预算的总和。只有在明确禁用了快照引导,或从空数据库启动时引导失败,才会出现顺序执行的最坏情况;保留该顺序是为了确保跨注册表去重结果确定。
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)
或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"mcpfinder": {
"command": "npx",
"args": ["-y", "@mcpfinder/server"]
}
}
}
重启 Claude Desktop。
Cursor
.cursor/mcp.json(项目级)或 ~/.cursor/mcp.json(全局):
{
"mcpServers": {
"mcpfinder": {
"command": "npx",
"args": ["-y", "@mcpfinder/server"]
}
}
}
Claude Code
.mcp.json(项目级)或 ~/.claude.json(全局)——使用与上方相同的代码片段。
Cline / Roo Code(VS Code)
.vscode/mcp.json:
{
"servers": {
"mcpfinder": {
"command": "npx",
"args": ["-y", "@mcpfinder/server"]
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json——使用与 Cursor 相同的代码片段。
提供的工具
四个规范工具,针对 AI 消费进行了优化(提供类型化的 outputSchema 和 structuredContent 以支持链式调用、警告标记以及置信度细分):
| 工具 | 用途 |
|---|---|
search_mcp_servers | 按关键词、技术或使用场景进行排序的全文搜索。 |
get_server_details | 安装前查看信任信号、环境变量、工具清单和警告。 |
get_install_config | 为 Claude Desktop、Cursor、Claude Code、Cline 或 Windsurf 提供可直接粘贴的 JSON 配置。 |
browse_categories | 单次调用即可浏览类别(省略 category 可列出类别;传入 category 可查看热门服务)。 |
MCPfinder 会向你的 AI 返回什么
- 按
confidenceScore排序的结果,以及透明的confidenceBreakdown(base、official、verified、popularity、multiSource、penalties)。自 2.0.0 起,verified和popularity始终为 0(详情中的useCount/verified也分别为 0/false):Smithery 是这两项数据的唯一来源,现已停止同步 — 参见 更新日志。 warningFlags:deprecated-npm、archived-repo、stale-over-18-months、single-source-only、missing-repository-url、install-method-unclear。- 安装元数据:各操作系统对应的目标文件路径、必需的环境变量(标记机密信息)以及
safe_to_autoinstall和requires_user_secrets信号。 - 生成的配置中的
env块只包含值,不包含说明文字:机密信息使用<YOUR_VALUE>,其他变量依次使用注册表发布的default、placeholder,最后使用<VALUE>。说明会保留在代码片段下方的“必需环境变量”部分。 - 注册表中的
isSecret标记只可能存在或不存在;不存在表示未标注,并不表示非机密。名称看起来像凭据(GITHUB_TOKEN、OPENAI_API_KEY等)的未标注变量会在环境变量列表中附带提示(“看起来像凭据(注册表未标记为机密);请按机密信息处理”),并列入get_install_config的possible_unlabeled_secrets。这仅为提示:其配置值仍与任何未标记变量完全相同(注册表的default,然后是placeholder,最后是<VALUE>);启发式判断不会更改该值,而requires_user_secrets仍只表示注册表中的含义。
2.0.1:目录页面链接不是远程端点
Glama 为每个服务发布一个目录页面(https://glama.ai/mcp/servers/<id>),
而不是 MCP 端点。自 2.0.1 起,该页面会显示为服务的目录页,
仅在 Glama 中收录的服务不再标记为远程服务;如果某个服务既没有软件包也没有远程端点,
get_install_config 会回答“未找到已知安装方式”(并附上仓库和目录页链接)。发布的目录中,
当两个 Official Registry 条目列出相同端点时,只保留一个条目。
升级到 2.0.0
2.0.0 移除了 Smithery 这一数据来源:其注册表 API、代理和托管服务 URL 将于 2026-10-31
停止工作(https://smithery.ai/future)。现在的实时同步只调用 Official MCP Registry 和 Glama,
registrySource: "smithery" 已移除;不再提供已退役 Smithery 主机上的远程 URL;首次打开时,
会清理 1.x 本地目录(移除仅来自 Smithery 的服务,清除 Smithery URL 和人气度/已验证值)。
详情请参见更新日志。
配置
| 环境变量 | 默认值 | 作用 |
|---|---|---|
MCPFINDER_DATA_DIR | ~/.mcpfinder/ | 本地 SQLite 数据库的存放位置。 |
MCPFINDER_DISABLE_SNAPSHOT | 未设置 | 设为 1 可跳过快照引导,改为实时同步。 |
MCPFINDER_SNAPSHOT_NO_BROTLI | 未设置 | 设为 1 可忽略清单中的 brotli 文件,始终下载 gzip 文件。 |
MCPFINDER_SNAPSHOT_BASE | https://mcpfinder.dev/api/v1/snapshot | 为镜像站点或测试覆盖快照主机。 |
MCPFINDER_SNAPSHOT_REFRESH_HOURS | 24 | 已安装快照在根据清单重新检查前可保持的最长时间。0 仅会停用定期重新检查——尚无快照的安装始终会进行引导。 |
MCPFINDER_SNAPSHOT_RETAIN_HOURS | 48 | 被取代的快照文件删除前的宽限期。如果长期运行 mcpfinder 进程,请调高此值。 |
MCPFINDER_SNAPSHOT_DOWNLOAD_STALE_HOURS | 6 | 被放弃的部分下载删除前的宽限期。 |
MCPFINDER_SNAPSHOT_MANIFEST_TIMEOUT_MS | 10000 | 小型清单请求的超时时间。 |
MCPFINDER_SNAPSHOT_STALL_TIMEOUT_MS | 60000 | 数据库下载的非活动时限——只有在此期间未收到任何字节后才会中止,因此不会中断速度较慢但运行正常的连接。 |
MCPFINDER_SNAPSHOT_FRESH_MINUTES | 360 | 新安装的快照可被视为新鲜同步的时长,之后将恢复实时注册表刷新。 |
GLAMA_API_KEY | 未设置 | Glama 注册表的 API 密钥(创建密钥)。未设置时,实时刷新会完全跳过 Glama——同步仅包含 Official,并将 Glama 记录为 skipped。已发布的快照始终包含 Glama 数据:发布时要求涵盖每个注册表,因此无法同步 Glama 的构建不会发布任何内容,客户端会保留上一个完整快照(请查看清单中的 publishedAt 和 counts)。 |
Glama 的 API 数据许可要求,在每个展示通过其 API 获取的数据的页面上显著标注 Glama 归属信息
(https://glama.ai/policies/terms-of-service)——任何呈现 sources 包含 glama 的服务端的界面都必须标注该信息。
链接
- 源代码 + 问题反馈: https://github.com/mcpfinder/mcpfinder
- MCP 注册表:
dev.mcpfinder/server - 网站: https://mcpfinder.dev
- 面向 AI 的摘要: https://mcpfinder.dev/llms.txt
许可证
AGPL-3.0-or-later — 可免费用于个人、内部和商业用途;作为网络服务提供的修改版本必须以相同许可证发布。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。