mcpField
M
MCP Registry

MCP Registry

已认证本地服务
github.com开发工具7.4k1 天前更新

关于 MCP Registry

MCP Registry 是一个由社区驱动的 Model Context Protocol (MCP) 服务注册中心,为 MCP 客户端提供可用服务列表,类似 MCP 服务的应用商店。项目目前处于预览阶段,面向服务开发者与集成方。

主要功能

  1. 01MCP 服务的目录与查询接口
  2. 02通过 mcp-publisher 命令行工具发布服务
  3. 03GitHub OAuth、GitHub OIDC、DNS 与 HTTP 等身份验证方式
  4. 04命名空间所有权验证
  5. 05基于 Go 与 PostgreSQL 的本地开发环境

适用场景

  1. 01MCP 客户端查找可用的 MCP 服务
  2. 02开发者使用命令行工具发布自己的 MCP 服务
  3. 03在本地运行注册中心进行开发与测试

MCP 相关

注册中心为 MCP 客户端提供 MCP 服务列表,客户端可据此发现服务,服务开发者需通过 mcp-publisher 发布服务。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"registry": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/modelcontextprotocol/registry:latest"
]
}
}
}
启动命令docker run -i --rm ghcr.io/modelcontextprotocol/registry:latest

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

安装包
ocighcr.io/modelcontextprotocol/registry:latest

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP 注册表

MCP 注册表为 MCP 客户端提供 MCP 服务列表,可视为 MCP 服务的应用商店。

📤 发布我的 MCP 服务 | ⚡️ 在线 API 文档 | 👀 生态愿景 | 📖 完整文档

开发状态

2025-10-24 更新:注册表 API 已进入API 冻结期(v0.1) 🎉。未来一个月或更久,API 将保持稳定,不会有破坏性变更,让集成方可以放心地实现支持。此冻结适用于 v0.1,v0 的开发仍在继续。我们将利用这段时间在真实集成中验证 API,并收集反馈,为 v1 正式发布做好准备。感谢大家的贡献与耐心——正是你们的参与帮助我们走到了今天!

2025-09-08 更新:注册表已启动预览版 🎉(公告博客文章)。虽然系统现在更加稳定,但这仍是预览版,可能会发生破坏性变更或数据重置。之后将发布正式可用(GA)版本。欢迎通过 GitHub 讨论区或 #registry-dev Discord(此处提供加入详情)分享反馈。

注册表工作组:

参与贡献

我们通过多个渠道开展协作——请参阅 modelcontextprotocol.io/community/communication。

想法通常(但不总是)会沿着以下流程推进:

快速开始:
前置条件
  • Docker
  • Go - 版本以 go.mod 中的 go 指令为准;Go 工具链会自动为你获取
  • ko - Go 的容器镜像构建工具(安装说明)
  • golangci-lint - 版本以 ci.yml 中 golangci-lint-action 的固定版本为准,确保本地 lint 与 CI 一致
运行服务
# Start full development environment
make dev-compose

这会使用 PostgreSQL 在 localhost:8080 启动注册表。数据库使用临时存储,每次重启容器时都会重置,确保开发和测试环境保持干净。

注意: 注册表使用 ko 构建容器镜像。make dev-compose 命令会自动使用 ko 构建注册表镜像,并在启动服务前将其加载到本地 Docker 守护进程中。

默认情况下,注册表会从生产 API 获取种子数据,并筛选出部分服务(以缩短启动时间)。这样可以确保本地环境与生产环境行为一致,且所有种子数据都通过验证。对于离线开发,可以通过 MCP_REGISTRY_SEED_FROM=data/seed.json MCP_REGISTRY_ENABLE_REGISTRY_VALIDATION=false make dev-compose 从文件加载种子数据且不进行验证。

可以通过 docker-compose.yml 中的环境变量配置此设置;参考 .env.example。

替代方案:运行预构建的 Docker 镜像

预构建的 Docker 镜像会自动发布到 GitHub Container Registry。请注意,镜像不包含 PostgreSQL,因此你需要自行运行 PostgreSQL,并通过 MCP_REGISTRY_DATABASE_URL 将注册表指向它(可参阅 docker-compose.yml 中的可用示例):

# Run latest stable release
docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:latest

# Run latest from main branch (continuous deployment)
docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main

# Run specific release version
docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0

# Run development build from main branch
docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d

可用标签:

  • 版本发布: latest、v1.0.0、v1.1.0 等。
  • 持续构建: main(最新的 main 分支构建)
  • 开发构建: main-<date>-<sha>(特定提交的构建)
发布服务

发布 MCP 服务并非通过向此仓库提交拉取请求来完成。添加 server.json、服务目录或 data/seed.json 中的条目,都不会发布或列出你的服务,即使拉取请求已合并也不行。请改用你自己的服务项目中的 mcp-publisher CLI。

我们构建了一个简单的 CLI 来发布服务。你可以这样使用:

# Build the latest CLI
make publisher

# Use it!
./bin/mcp-publisher --help

更多详情请参阅发布工具指南。

其他命令
# Run lint, schema validation, and all tests
# Note: this also runs `make dev-down`, stopping any running dev-compose environment
make check

开发时还有一些其他实用命令。运行 make help 了解详情,或查看 Makefile。

架构

项目结构
├── cmd/                     # Application entry points
│   ├── publisher/           # Server publishing tool
│   └── registry/            # Registry API server
├── data/                    # Seed data
├── deploy/                  # Deployment configuration (Pulumi)
├── docs/                    # Documentation
├── internal/                # Private application code
│   ├── api/                 # HTTP handlers and routing
│   ├── auth/                # Authentication (GitHub OAuth, JWT, namespace blocking)
│   ├── config/              # Configuration management
│   ├── database/            # Data persistence (PostgreSQL)
│   ├── importer/            # Seed data import
│   ├── service/             # Business logic
│   ├── telemetry/           # Metrics and monitoring
│   └── validators/          # Input validation
├── pkg/                     # Public packages
│   ├── api/                 # API types and structures
│   │   └── v0/              # Version 0 API types
│   └── model/               # Data models for server.json
├── scripts/                 # Development and testing scripts
├── tests/                   # Integration tests
└── tools/                   # CLI tools and utilities
    └── validate-*.sh        # Schema validation tools
身份验证

发布支持多种身份验证方式:

  • GitHub OAuth——登录 GitHub 后发布
  • GitHub OIDC——从 GitHub Actions 发布
  • DNS 验证——证明对域名及其子域名的所有权
  • HTTP 验证——证明对域名的所有权

注册表会在发布时验证命名空间的所有权。例如,要发布以下服务:

  • io.github.domdomegg/my-cool-mcp,你必须以 domdomegg 的身份登录 GitHub,或在 domdomegg 的仓库中运行 GitHub Action
  • me.adamjones/my-cool-mcp,你必须通过 DNS 或 HTTP 验证证明你拥有 adamjones.me

社区项目

查看社区项目,了解社区创建的值得关注的注册表相关项目。

更多文档

如果这里没有解答你的问题,请参阅文档了解详情!

评论

支持 Markdown

第一次接触 MCP?

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

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