MCP注册API

基于OpenAPI规范的MCP服务器注册API实现,提供服务器列表、版本管理及详情查询功能。

  • by dstamand-msft
  • C#
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 dstamand-msft/MCPRegistry

使用说明

MCP注册API

这是基于官方OpenAPI规范的模型上下文协议(MCP)服务器注册API的实现。 有关更多信息,请参见 GitHub MCP注册表文档.

特性

  • 列出MCP服务器 -通过分页、筛选和搜索浏览所有已注册的MCP服务器
  • 列出服务器版本 -查看特定MCP服务器的所有可用版本
  • 获取服务器详细信息 -检索特定服务器版本的详细信息
  • 删除服务器版本 -用于删除特定服务器版本的可选端点
  • 样品数据 -包括用于测试的示例服务器(文件系统和Brave Search)

API终点

所有端点都以前缀 /v0.1 (不是 /v0 如原始规范所示):

GET/v0.1/服务器

列出所有具有可选过滤和分页功能的MCP服务器。

查询参数:

  • cursor -下一页结果的分页光标
  • limit -要返回的最大项目数(默认值:30)
  • search -按名称搜索服务器(子字符串匹配)
  • updated_since -自时间戳(RFC3339日期时间)以来更新的筛选服务器
  • version -按版本筛选(“最新”表示最新版本,或确切版本)

例子:

GET /v0.1/servers?search=filesystem&limit=10

GET/v0.1/servers/{serverName}/版本

按发布日期(最新版本优先)列出特定MCP服务器的所有版本。

路径参数:

  • serverName -URL编码的服务器名称(例如。, io.modelcontextprotocol%2Ffilesystem)

例子:

GET /v0.1/servers/io.modelcontextprotocol%2Ffilesystem/versions

GET/v0.1/servers/{serverName}/versions/{version}

获取特定版本MCP服务器的详细信息。

路径参数:

  • serverName -URL编码的服务器名称
  • version -版本号或 latest 对于最新版本

例子:

GET /v0.1/servers/io.modelcontextprotocol%2Ffilesystem/versions/1.0.2
GET /v0.1/servers/io.modelcontextprotocol%2Ffilesystem/versions/latest

DELETE/v0.1/服务器/{serverName}/版本/{version}

删除特定版本的MCP服务器(可选端点)。

路径参数:

  • serverName -URL编码的服务器名称
  • version -要删除的版本号

例子:

DELETE /v0.1/servers/io.modelcontextprotocol%2Ffilesystem/versions/1.0.1

运行应用程序

先决条件

  • .NET 10.0 SDK

构建

dotnet build

跑

dotnet run

API将在以下网址提供:

  • HTTPS: https://localhost:7000
  • Swagger用户界面: https://localhost:7000/swagger (处于开发模式)

测试

使用随附的 MCPRegistry.http 文件直接从VS代码(需要REST客户端扩展)或在Visual Studio中本机测试API端点。

样品数据

API附带了以下用于测试的示例服务器(请参阅 data/sample-seed-data.json):

  1. Azure MCP服务器 (com.microsoft/azure)

    • 标题:Azure MCP服务器
    • 描述:所有Azure MCP工具,用于在AI代理和Azure服务之间创建无缝连接。
    • 版本:2.0.0-beta.6
    • 网站:https://azure.microsoft.com/
    • 包:npm(@azure/mcp),nuget(azure.mcp)
  2. Azure DevOps MCP服务器 (com.microsoft/azure-devops-mcp)

    • 标题:Azure DevOps MCP服务器
    • 描述:Azure DevOps工作项、存储库、管道、测试计划、维基、搜索等。
    • 版本:2.2.2
    • 网站:https://github.com/microsoft/azure-devops-mcp
    • 包:npm(@azure devops/mcp)
  3. 微软学习 MCP (com.microsoft/microsoft-learn-mcp)

    • 标题:微软学习MCP
    • 描述:官方Microsoft Learn MCP服务器-AI和LLM的实时、可信的文档和代码示例。
    • 版本:1.0.0
    • 网站:https://github.com/MicrosoftDocs/mcp
    • 遥控器:https://learn.microsoft.com/api/mcp
  4. Atlassian MCP服务器 (com.atlassian/atlassian-mcp-server)

    • 说明:连接到Jira和Confluence进行问题跟踪和记录。
    • 版本:1.0.0
    • 遥控器:https://mcp.atlassian.com/v1/sse
  5. GitHub MCP服务器 (io.github.github/github-mcp-server)

    • 说明:官方GitHub Remote MCP Server为GitHub集成提供默认工具集。
    • 版本:1.0.0
    • 网站:https://github.com/github/github-mcp-server
    • 遥控器:https://api.githubcopilot.com/mcp/

添加新服务器示例

要添加新服务器,您可以使用中的格式 data/new-version-data.json例如,要添加新的Azure MCP服务器版本:

[
  {
    "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
    "name": "com.microsoft/azure",
    "description": "All Azure MCP tools to create a seamless connection between AI agents and Azure services.",
    "title": "Azure MCP Server",
    "repository": {
      "url": "https://github.com/microsoft/mcp",
      "source": "github",
      "subfolder": "servers/Azure.Mcp.Server"
    },
    "version": "2.0.0-beta.7",
    "websiteUrl": "https://azure.microsoft.com/",
    "packages": [
      {
        "registryType": "npm",
        "registryBaseUrl": "https://registry.npmjs.org",
        "identifier": "@azure/mcp",
        "version": "2.0.0-beta.7",
        "transport": {
          "$transport-type": "stdio",
          "type": "stdio"
        },
        "packageArguments": [
          { "value": "server", "type": "positional" },
          { "value": "start", "type": "positional" }
        ]
      },
      {
        "registryType": "nuget",
        "identifier": "Azure.Mcp",
        "version": "2.0.0-beta.7",
        "transport": {
          "$transport-type": "stdio",
          "type": "stdio"
        },
        "packageArguments": [
          { "value": "server", "type": "positional" },
          { "value": "start", "type": "positional" }
        ]
      }
    ]
  }
]

您可以将此JSON POST到适当的端点(在实现时),也可以将其用作向注册表的数据存储添加新服务器的模板。

建筑

  • 型号/ -与OpenAPI模式匹配的数据传输对象(DTO)
  • 服务项目/ -服务器注册表管理的业务逻辑
  • 控制器/ -API端点实现
  • 数据/ -数据访问层,包括存储库接口和实现
  • SQL项目/ -包含用于架构和迁移的SQL Server数据库项目

开发者指南

有关详细的设置说明、本地开发工作流、Azure部署步骤和故障排除,请参阅 开发者指南.

数据存储实施

当前的实现使用基于SQL Server的数据存储来实现服务器注册表持久性。数据访问是通过 IServerRepository 接口(MCPRegistry.Data.IServerRepository),定义了管理服务器及其版本所需的所有操作。默认实现, SqlServerServerRepository,提供了与SQL Server的具体集成。

该解决方案包括 SQLProject 包含SQL Server数据库项目的目录,该项目管理注册表数据的模式和迁移。

可扩展性

要支持其他数据存储(例如PostgreSQL、MongoDB、内存中等),请实现 IServerRepository 与您自己的数据访问逻辑接口。在依赖注入容器中注册您的实现,以替换或扩展默认的基于SQL Server的存储库。此设计允许在不更改业务逻辑或API控制器的情况下轻松交换或扩展数据存储后端。

关键扩展点:

  • 实施 IServerRepository 接口,以添加对新数据存储的支持。

服务器元数据和状态

服务器元数据通常为 不可变的 一旦出版,除了 status 现场。状态可能会更新以反映生命周期的变化,例如 "deprecated" 或 "deleted".

根据 MCP注册表聚合器文档,聚合器应保持每个服务器状态的副本最新。

状态值

  • active :服务器版本可用且功能正常。
  • deprecated :不再建议使用服务器版本。
  • deleted :服务器违反了MCP。IO注册表许可审核策略(例如垃圾邮件、恶意软件或非法内容)。您可能更愿意从索引注册表中完全删除这些服务器。

备注

  • 帖子 /v0.1/publish 端点是 未实现
  • 所有端点使用 /v0.1 前缀而不是 /v0
  • DELETE端点是可选的,成功时返回200(注册表在软模式下支持删除)
  • URL中的服务器名称必须进行URL编码(正斜杠变为 %2F)
  • 如果要使用VSCode进行本地测试,请设置 chat.mcp.gallery.serviceUrl 在VSCode设置中设置以指向您的本地实例(例如。, https://localhost:7160/v0.1/servers)