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

相关推荐
考虑考虑13 分钟前
JDK17中的Sealed Classes
java·后端·java ee
moonsims16 分钟前
高开放性具身智能AIBOX平台—专为高校实验室与科研项目打造的边缘计算基座(让高校和科研院所聚焦核心算法)
人工智能
前端日常开发17 分钟前
0 费用使用免费服务器部署 NestJS 项目
前端·后端
nbsaas-boot20 分钟前
技术选型指南:如何选择更适合项目的开源语言及其生态系统
人工智能·架构
ASDyushui24 分钟前
初识 Flask 框架
后端·python·flask
火鸟226 分钟前
Rust 通用代码生成器:莲花,红莲尝鲜版三十六,哑数据模式图片初始化功能介绍
开发语言·后端·rust·通用代码生成器·莲花·红莲·图片初始化功能
写bug写bug28 分钟前
深入理解Unsafe类
java·后端
AI-星辰29 分钟前
始理解NLP:我的第一章学习心得
人工智能·大模型·llm·nlp
The god of big data35 分钟前
为什么在1080p的屏幕下,通常观看4K视频要比1080p的视频来的清晰?
人工智能·音视频
nice-wyh41 分钟前
三维重建之colmap+openmvs
人工智能·深度学习·3d