MCP 官方开源 Registry 注册服务:基于 Go 和 MongoDB 构建
作者:陈明勇,一名热爱技术、乐于分享的开发者,同时也是开源爱好者。
我专注于分享
Go语言相关的技术知识,同时也会深入探讨AI领域的前沿技术。成功的路上并不拥挤,有没有兴趣结个伴?
Go开源库代表作:go-mongox 、go-optioner。文章持续更新,如果本文能让您有所收获,欢迎关注本号。
微信阅读可搜《程序员陈明勇》。
前言
随着人工智能的快速发展,大型语言模型(LLM)在各类场景中的应用日益广泛。而如何让这些模型高效地与外部数据源和工具交互,成为一个重要课题。Model Context Protocol(MCP)作为开放协议,为 LLM 提供了标准化接口,简化了与外部系统的集成。
为更好地管理和发现 MCP 服务器,registry 项目应运而生。作为一个社区驱动的开源注册服务,registry 提供集中式存储和管理功能,帮助开发者轻松发现和管理 MCP 服务器及其相关元数据、配置和功能。
作为 registry 项目的贡献者,我很高兴能参与这个社区驱动的开源项目,也期待它不断发展壮大。本文将对 registry 服务进行介绍,为项目的推广尽一份绵薄之力。
准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。
Registry
registry 项目是一个由社区驱动的注册服务,用于管理和发现 Model Context Protocol (MCP) 服务器。而 MCP 是一个开放协议,旨在促进大型语言模型(LLM)与外部数据源和工具的无缝集成。
registry 服务提供了一个集中式的存储库,用于管理 MCP 服务器的条目。它允许发现和管理各种 MCP 服务器及其相关的元数据、配置和功能。
Github 地址:https://github.com/modelcontextprotocol/registry
主要功能
RESTful API:用于对MCP服务的注册信息进行管理,包括:- 查看服务列表(
List) - 获取单个服务信息(
Get) - 添加服务(
Create) - 修改服务信息(
Update) - 删除服务(
Delete)
- 查看服务列表(
- 健康检查端点:用于服务监控。
- 环境配置支持:支持多种环境配置。
- 优雅的关闭处理:确保服务的平稳关闭。
- 数据库支持:支持
MongoDB和内存数据库。 API文档:提供全面的API文档。- 分页支持:支持分页查询所注册
mcp服务条目。
部署与使用
我们可以通过两种方式启动 Registry 项目:本地运行 和 docker 部署。
本地运行
**前置条件:**需要安装
Go 1.18+的环境和运行MongoDB
首先,我们需要将 registry 项目的源码下载到本地,然后在项目根目录下通过以下命令运行项目:
go run ./cmd/registry
默认访问地址为:http://localhost:8080。
Docker 部署
运行以下命令将创建两个容器分别用于启动 MongoDB 和 Registry 服务:
docker compose up -d
默认将通过端口 8080 提供服务。
配置
registry 服务支持通过环境变量进行灵活配置,以适应不同的运行环境和需求。以下是支持的环境变量及其默认值说明:
| 变量名 | 描述 | 默认值 |
|---|---|---|
MCP_REGISTRY_APP_VERSION |
应用程序版本 | dev |
MCP_REGISTRY_DATABASE_TYPE |
数据库类型 | mongodb |
MCP_REGISTRY_COLLECTION_NAME |
MongoDB 集合名称 | servers_v2 |
MCP_REGISTRY_DATABASE_NAME |
MongoDB 数据库名称 | mcp-registry |
MCP_REGISTRY_DATABASE_URL |
MongoDB 连接字符串 | mongodb://localhost:27017 |
MCP_REGISTRY_GITHUB_CLIENT_ID |
GitHub 应用程序客户端 ID | |
MCP_REGISTRY_GITHUB_CLIENT_SECRET |
GitHub 应用程序客户端密钥 | |
MCP_REGISTRY_LOG_LEVEL |
日志级别 | info |
MCP_REGISTRY_SEED_FILE_PATH |
导入种子文件的路径 | data/seed.json |
MCP_REGISTRY_SEED_IMPORT |
首次运行时是否导入种子文件 | true |
MCP_REGISTRY_SERVER_ADDRESS |
服务监听地址 | :8080 |
配置说明
- 灵活性:通过环境变量,您可以轻松调整服务的运行参数,例如切换数据库类型、修改日志级别或更改服务监听地址。
- 数据库类型:
MCP_REGISTRY_DATABASE_TYPE支持两种数据库类型:mongodb和memory。其中,memory为内存数据库,适合测试或轻量级场景。 - 种子文件导入:
MCP_REGISTRY_SEED_FILE_PATH和MCP_REGISTRY_SEED_IMPORT允许您在首次运行时自动导入初始数据,方便快速启动服务。 - GitHub 集成:如果需要使用 GitHub 相关功能,可以通过设置
MCP_REGISTRY_GITHUB_CLIENT_ID和MCP_REGISTRY_GITHUB_CLIENT_SECRET来完成配置。 - 日志管理:通过
MCP_REGISTRY_LOG_LEVEL,您可以控制日志的详细程度,例如设置为debug以便调试。
通过合理配置这些环境变量,您可以根据实际需求定制 registry 服务的行为。
Swagger API 文档
在启动 registry 项目之后,我们可以通过 /v0/swagger/index.html 端点访问 Swagger API 文档:

通过这个文档,你可以查看每个接口的请求方法、参数说明、响应格式等详细信息,还可以直接在浏览器中发送请求进行调试。
小结
registry 项目作为一个社区驱动的开源注册服务,为 MCP 生态系统提供了集中式的管理和发现能力。无论是通过 RESTful API 管理 MCP 服务器条目,还是通过灵活的环境变量配置,registry 都展现了其强大的功能和适应性。此外,支持 MongoDB 和内存数据库的多样化存储选项,以及直观的 Swagger API 文档,都让开发者能够快速上手并高效使用。
虽然项目仍处于早期开发阶段,但它已经为 MCP 生态系统奠定了坚实的基础。作为 registry 项目的贡献者,我很高兴能参与这个社区驱动的开源项目,也期待它不断发展壮大。
- 点赞
- 收藏
- 关注作者
评论(0)