Mastra MCP Registry Registry:统一检索 MCP 服务器注册中心的开源目录与 MCP 服务端 Mastra MCP Registry Registry统一检索 MCP 服务器注册中心的开源目录与 MCP 服务端【免费下载链接】mastraMastra is the modern TypeScript framework for AI-powered applications and agents.项目地址: https://gitcode.com/GitHub_Trending/ma/mastramastra/mcp-registry-registry是 Mastra 生态中用于聚合公开 Model Context ProtocolMCP注册中心的工具包它将 Apify、Smithery、Pulse MCP、MCP.so、Docker MCP Catalog 等数十个第三方 MCP 服务器注册中心汇总为一份可搜索的目录并对外暴露registryData数据目录以及一套名为registryList/registryServers的 MCP Server 工具。通过它开发者无需逐一对接每个注册中心的私有 API即可在 Mastra Agent、Workflow 或其他 MCP 客户端中统一发现、过滤并检索 MCP 服务器。读完本文你将掌握该包的安装方式、编程式调用 API、目录数据结构、内置注册中心清单、MCP Server 的接入方式以及背后的源码级实现原理。包定位与核心概念从源码结构看该包主要包含三块能力见 src静态目录数据registryData定义于 src/registry/registry.ts一份内嵌的、描述 31 个注册中心的元数据清单编程式查询 APIlist-registries列出/过滤注册中心与fetch-servers拉取某注册中心下的服务器列表统一由 src/registry/index.ts 导出MCP Server基于官方modelcontextprotocol/sdk实现的 stdio 服务对外暴露registryList与registryServers两个工具入口见 src/server.ts 与 src/stdio.ts。其中 registry注册中心指提供 MCP 服务器清单的第三方平台或目录而 server服务器指注册中心里收录的具体 MCP 服务器条目——这是理解整个包的一对关键概念。安装包已发布到 npm可通过任意包管理器安装npm install mastra/mcp-registry-registry包以 ESM 形式发布main指向dist/index.jstypes指向dist/index.d.ts并声明了node 22.13.0的运行时要求见 package.json。它同时提供一个bin入口dist/stdio.js可直接以命令行方式启动 MCP Server详见后文。安装后包自身依赖仅有modelcontextprotocol/sdk与zod并以mastra/core 1.0.0-0 2.0.0-0作为 peerDependency用于在 Mastra 框架内集成。编程式使用读取与过滤目录最直接的使用方式是从包中导入registryData像过滤任何普通数组一样筛选注册中心。README 给出了官方示例——筛选出带verified标签的注册中心并打印名称与 URLimport { registryData } from mastra/mcp-registry-registry; const verifiedRegistries registryData.registries.filter(registry registry.tags?.includes(verified)); for (const registry of verifiedRegistries) { console.log(${registry.name}: ${registry.url}); }运行该示例会输出类似API Tracker: https://apitracker.com/、Docker MCP Catalog: https://hub.docker.com/catalogs/mcp、Apify: https://apify.com/store等条目。tags是可选字段从数据定义看取值主要包括verified平台官方或人工核验过的注册中心如 Cursor MCP Registry、Smithery、Zapier MCP 等open-source开源维护的目录如 Awesome MCP servers、Glama、mcpget 等official官方参考实现如modelcontextprotocol/servers部分注册中心没有 tags 字段如 MCP Market、Remote OpenClaw。目录的数据结构RegistryEntryregistryData的类型定义位于 src/registry/types.ts每条注册中心条目RegistryEntry包含以下字段字段类型说明idstring注册中心的唯一标识供查询/过滤使用如apify、pulse、mcprunnamestring展示名称descriptionstring一句话简介urlstring注册中心主页servers_urlstring可选服务器清单的 JSON 接口地址缺失时无法拉取服务器列表tagsstring[]可选分类标签countnumber \| string可选收录服务器数量的自报值可能为字符串如17000、1800postProcessServers函数可选针对该注册中心返回数据格式定制的后处理函数将原始 JSON 归一化为ServerEntry[]而具体服务器的条目ServerEntry由 zod 模式ServerEntrySchema约束包含id、name、description、createdAt、updatedAt五个字段。后处理函数正是负责把不同注册中心五花八门的原始 JSON 统一映射到这一规范结构上。内置注册中心清单registryData内嵌了 31 个注册中心条目见 src/registry/registry.ts覆盖主流 MCP 生态目录通用聚合目录MCP Bar约 4429、mcpindex、MCP Market约 12454、MCP Repository、MCP Resolver、MCP Servers约 212、MCP.so约 7682、MCP Store、OpenTools约 171、Remote OpenClaw约 13870、Smithery约 4274等平台/厂商托管API Tracker、Apify Store17000、Cline.bot、Cursor MCP Registry1800、Gumloop、Klavis AI、Make MCP、MCP Composio100、Pipedream MCP、Zapier MCP、Supermachine 等开源社区目录Awesome MCP servers约 370、Glama约 3457、mcpget约 69、modelcontextprotocol/servers官方参考实现约 307等Docker 形态Docker MCP Catalog以 Docker 镜像形式分发的一批高质量 MCP 服务器垂直平台FleurClaude 应用商店、MCP Run、Pulse MCP约 3653。其中带有servers_url的注册中心如 API Tracker、Docker、Apify、Fleur、MCP Run、Pulse MCP、Smithery具备实时拉取服务器清单的能力其余仅提供元数据主页 URL 与数量自报值这些 count 数字来自各平台自报并非本包实时核验的结果。拉取服务器列表与数据归一化fetch-servers 源码剖析对于配置了servers_url的注册中心包提供了异步拉取并归一化服务器清单的完整流程实现在 src/registry/fetch-servers.ts按registryId在registryData.registries中定位注册中心找不到会抛出Registry with ID xxx not found.校验该注册中心是否存在servers_url否则抛出does not have a servers endpoint使用原生fetch请求该接口非 2xx 响应会抛出携带状态文本的错误将响应解析为 JSON 后调用该注册中心配置的postProcessServers后处理函数把原始数据统一转换成ServerEntry[]若未配置后处理函数则抛出No post-processor found。各注册中心的后处理函数位于 src/registry/processors包括apify.ts、apitracker.ts、docker.ts、fleur.ts、mcprun.ts、pulse.ts以及默认的default.ts。以 mcprun.ts 为例它过滤掉缺少slug字段的条目然后把每个服务器映射为{ id: item.slug, name: item.slug, description: item?.meta?.description, createdAt: item?.created_at, updatedAt: item?.updated_at }可以看出不同注册中心的字段命名差异正是需要后处理函数的原因。此外fetch-servers.ts还提供了filterServers支持按search关键词对服务器的name/description做不区分大小写的子串匹配getServersFromRegistry则把“拉取 过滤”串成一步。列出注册中心list-registries 源码剖析与拉取服务器相对的是查询注册中心本身的能力实现在 src/registry/list-registries.tsloadRegistryData()用 zod 模式RegistryFileSchema校验并返回registryData。值得注意校验失败时不会抛错而是记录错误并返回空目录{ registries: [] }保证下游调用不因数据异常直接崩溃filterRegistries()支持按id精确匹配、按tag标签包含匹配、按name不区分大小写的子串匹配三种过滤方式formatRegistryResponse()提供两种输出形态——detailed: false时仅返回id/name/description的摘要视图detailed: true时额外返回servers_url、tags、count等完整字段getRegistryListings()把“加载 → 过滤 → 格式化”串成一步是工具层的统一入口。以 MCP Server 方式接入registryList 与 registryServers除了编程式调用本包还内置了一个完整的 MCP Serversrc/server.ts。它基于modelcontextprotocol/sdk构建服务名为Registry Registry Server版本号在启动时从包内package.json读取仅声明tools能力。请求处理逻辑如下ListToolsRequestSchema向客户端通告registryList与registryServers两个工具其输入模式由 zod 模式经toJSONSchema转换为 JSON SchemaCallToolRequestSchema按工具名分派先以 zod 模式校验参数再执行对应工具参数校验失败会返回Invalid arguments: path: message格式的错误内容未知工具返回Unknown tool: xxx。工具一registryList定义于 src/tools/list.ts用于列出并过滤注册中心。输入参数参数类型说明idstring可选按注册中心 id 精确过滤tagstring可选按标签过滤如verifiednamestring可选按名称子串过滤detailedboolean可选默认false是否返回完整字段执行时调用getRegistryListings结果以格式化 JSON 文本返回。例如向 agent 询问“有哪些经过核验的 MCP 注册中心”即可用{tag: verified, detailed: true}调用。工具二registryServers定义于 src/tools/servers.ts用于从指定注册中心拉取服务器列表。输入参数参数类型说明registryIdstring必填目标注册中心 id如pulse、smithery、apifytagstring可选预留的按标签过滤参数searchstring可选按名称/描述搜索关键词执行时调用getServersFromRegistry实时请求该注册中心的servers_url并归一化返回。由于涉及网络请求该工具的实际可用性取决于对应注册中心接口的可达性与响应格式。以 stdio 方式启动包在 package.json 中声明了bin: dist/stdio.js因此可全局或经npx直接启动一个 stdio 传输的 MCP Servernpx mastra/mcp-registry-registrysrc/stdio.ts 的实现很简洁调用runServer()内部创建StdioServerTransport并connect启动失败时打印错误并以非零码退出。这使得任何支持 MCP 的客户端Claude Desktop、Cursor、Mastra 等都可以把该命令注册为一个 MCP server从而把 31 个注册中心的能力聚合暴露给 agent。在 Mastra 中通常是在mastra.config.ts里通过mastra/mcp的MCP配置指向该 stdio 命令或直接 import 工具定义完成注册MCP 集成能力来自同仓库的 packages/mcp。测试与质量保障包内置了完整的 vitest 测试见 src/registry/testslist-registries.test.ts验证注册中心数据的加载、过滤与格式化fetch-servers.test.ts验证服务器拉取流程processors/目录下针对apify、apitracker、docker、fleur、mcprun、pulse各后处理函数的数据归一化测试。package.json的test脚本为vitest run且pretest会先用 turbo 构建本包确保测试始终针对最新构建产物运行。这些测试是理解各注册中心原始数据形态与归一化规则的最佳参考。小结与典型使用路径mastra/mcp-registry-registry的价值在于“一次接入、全局可搜”无论你是想在代码里直接消费目录数据registryDatafilter还是想通过getRegistryListings/getServersFromRegistry做结构化查询抑或是把它作为标准 MCP Server 挂到任意客户端registryList/registryServers都不需要为每个注册中心单独写 API 客户端。需要说明的是服务器清单的实时拉取依赖各注册中心公开接口的可用性目录中部分注册中心仅提供元数据count 数字为各平台自报值。更多版本历史可参考包的 CHANGELOG。【免费下载链接】mastraMastra is the modern TypeScript framework for AI-powered applications and agents.项目地址: https://gitcode.com/GitHub_Trending/ma/mastra创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考