MCP 官方开源 Registry 注册服务:基于 Go 和 MongoDB 构建

前言

随着人工智能的快速发展,大型语言模型(LLM)在各类场景中的应用日益广泛。而如何让这些模型高效地与外部数据源和工具交互,成为一个重要课题。Model Context Protocol(MCP)作为开放协议,为 LLM 提供了标准化接口,简化了与外部系统的集成。

为更好地管理和发现 MCP 服务器,registry 项目应运而生。作为一个社区驱动的开源注册服务,registry 提供集中式存储和管理功能,帮助开发者轻松发现和管理 MCP 服务器及其相关元数据、配置和功能。

作为 registry 项目的贡献者,我很高兴能参与这个社区驱动的开源项目,也期待它不断发展壮大。本文将对 registry 服务进行介绍,为项目的推广尽一份绵薄之力。

准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。

Registry

registry 项目是一个由社区驱动的注册服务,用于管理和发现 Model Context Protocol (MCP) 服务器。而 MCP 是一个开放协议,旨在促进大型语言模型(LLM)与外部数据源和工具的无缝集成。

registry 服务提供了一个集中式的存储库,用于管理 MCP 服务器的条目。它允许发现和管理各种 MCP 服务器及其相关的元数据、配置和功能。

Github 地址:MCP registry

主要功能

  • RESTful API:用于对 MCP 服务的注册信息进行管理,包括:
    • 查看服务列表(List
    • 获取单个服务信息(Get
    • 添加服务(Create
    • 修改服务信息(Update
    • 删除服务(Delete
  • 健康检查端点:用于服务监控。
  • 环境配置支持:支持多种环境配置。
  • 优雅的关闭处理:确保服务的平稳关闭。
  • 数据库支持:支持 MongoDB 和内存数据库。
  • API 文档:提供全面的 API 文档。
  • 分页支持:支持分页查询所注册 mcp服务条目。

部署与使用

我们可以通过两种方式启动 Registry 项目:本地运行docker 部署

本地运行

**前置条件:**需要安装 Go 1.18+ 的环境和运行 MongoDB

首先,我们需要将 registry 项目的源码下载到本地,然后在项目根目录下通过以下命令运行项目:

bash 复制代码
go run ./cmd/registry

默认访问地址为:http://localhost:8080

Docker 部署

运行以下命令将创建两个容器分别用于启动 MongoDBRegistry 服务:

bash 复制代码
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 支持两种数据库类型:mongodbmemory。其中,memory 为内存数据库,适合测试或轻量级场景。
  • 种子文件导入MCP_REGISTRY_SEED_FILE_PATHMCP_REGISTRY_SEED_IMPORT 允许您在首次运行时自动导入初始数据,方便快速启动服务。
  • GitHub 集成 :如果需要使用 GitHub 相关功能,可以通过设置 MCP_REGISTRY_GITHUB_CLIENT_IDMCP_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 项目的贡献者,我很高兴能参与这个社区驱动的开源项目,也期待它不断发展壮大。


你好,我是陈明勇,一名热爱技术、乐于分享的开发者,同时也是开源爱好者。

我专注于分享 Go 语言相关的技术知识,同时也会深入探讨 AI 领域的前沿技术。

成功的路上并不拥挤,有没有兴趣结个伴?

Go 开源库代表作go-mongoxgo-optioner

相关推荐
Shawn_Shawn3 小时前
人工智能入门概念介绍
人工智能
极限实验室3 小时前
程序员爆哭!我们让 COCO AI 接管 GitLab 审查后,团队直接起飞:连 CTO 都说“这玩意儿比人靠谱多了
人工智能·gitlab
Maynor9964 小时前
Z-Image: 100% Free AI Image Generator
人工智能
码事漫谈4 小时前
C++ 多线程开发:从零开始的完整指南
后端
9ilk4 小时前
【C++】--- 特殊类设计
开发语言·c++·后端
爬点儿啥4 小时前
[Ai Agent] 10 MCP基础:快速编写你自己的MCP服务器(Server)
人工智能·ai·langchain·agent·transport·mcp
码事漫谈4 小时前
十字路口的抉择:B端与C端C++开发者的职业路径全解析
后端
张人玉5 小时前
百度 AI 图像识别 WinForms 应用代码分析笔记
人工智能·笔记·百度
测试人社区-小明5 小时前
智能弹性伸缩算法在测试环境中的实践与验证
人工智能·测试工具·算法·机器学习·金融·机器人·量子计算
Spring AI学习5 小时前
Spring AI深度解析(9/50):可观测性与监控体系实战
java·人工智能·spring