mcpField
M
MCP server for Azure Cosmos DB using the Go SDK

MCP server for Azure Cosmos DB using the Go SDK

本地服务
abhirockzz.github.io开发工具629 周前更新

关于 MCP server for Azure Cosmos DB using the Go SDK

这是一个基于 Go SDK 构建的 Azure Cosmos DB MCP 服务,面向 AI 工具开发者,也可作为学习 Azure Go SDK 与 MCP Go SDK 的示例。它提供数据库、容器和项目的管理及查询工具。

主要功能

  1. 01列出和创建数据库
  2. 02列出、读取和创建容器
  3. 03读取及添加项目
  4. 04执行 SQL 查询
  5. 05事务批量创建项目
  6. 06支持 HTTP 与 Stdio 传输

适用场景

  1. 01在 MCP 客户端中管理 Cosmos DB 数据库和容器
  2. 02通过工具读取、写入或查询容器数据
  3. 03使用 vNext 模拟器进行本地开发测试

MCP 相关

向 MCP 客户端开放 Azure Cosmos DB 的数据库、容器和项目操作工具,包括查询与事务批量创建。支持 Streamable HTTP 和 Stdio;远程端点尚未实现客户端身份验证或授权。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

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

详细介绍

基于 Go 的 Azure Cosmos DB MCP 服务实现

这是一个基于 Go 的 Azure Cosmos DB MCP 服务实现,使用 Azure SDK for Go 和官方的 MCP Go SDK。

它适用于 Azure Cosmos DB 服务和 vNext 模拟器,并提供以下用于与 Azure Cosmos DB 交互的工具:

  1. 列出数据库:检索 Cosmos DB 帐户中的所有数据库列表。
  2. 创建数据库:在 Cosmos DB 帐户中创建一个新数据库。
  3. 列出容器:检索指定数据库中的所有容器列表。
  4. 读取容器元数据:获取指定容器的元数据或配置详情。
  5. 创建容器:在指定数据库中创建一个具有指定分区键的新容器。
  6. 向容器添加项:向数据库中的指定容器添加一个新项。
  7. 读取项:使用项 ID 和分区键从容器中读取指定项。
  8. 执行查询:在 Cosmos DB 容器上执行 SQL 查询,可选择限定分区键范围。
  9. 批量创建项:使用事务批处理操作向容器添加多个项。

⚠️ 此项目并非旨在取代 Azure MCP Server 或 Azure Cosmos DB MCP Toolkit,而是一个实验性的学习工具,展示如何结合 Azure Go SDK 和 MCP Go SDK,为 Azure Cosmos DB 构建 AI 工具。

▶️ 以下是使用 GitHub Copilot CLI 的演示,同样的方法也适用于 Visual Studio Code 中的 Agent 模式或任何其他兼容 MCP 的工具(如 Claude Code):

MCP 服务演示

🚀 如何运行

首先,克隆 GitHub 仓库并构建二进制文件:

git clone https://github.com/abhirockzz/mcp_cosmosdb_go
cd mcp_cosmosdb_go

go build -o mcp_azure_cosmosdb_go main.go

注意:MCP 服务使用 Azure SDK for Go 中的 DefaultAzureCredential 实现来通过身份验证连接 Azure Cosmos DB。这意味着你可以使用多种方式进行身份验证,包括环境变量、托管标识或 Azure CLI 登录等。

此设置不适用于本地模拟器,因为它使用众所周知的基于密钥的身份验证方式。

此 MCP 服务支持 Streamable HTTP 和 Stdio 传输。你可以通过以下两种模式运行 MCP 服务:

  • 在本地计算机上作为 HTTP 服务或 stdio 进程运行
  • 部署到远程端点(例如 Azure App Service、Azure Container Apps 等),作为 HTTP(s) 服务运行
💻 本地模式

得益于对 Streamable HTTP 的支持,你可以轻松地在本机上将此 MCP 服务作为 HTTP 服务运行。

使用 Azure CLI(az login)或 Azure Developer CLI(azd auth login)登录。由于 MCP 服务使用 DefaultAzureCredential,它会以登录 Azure CLI 或 Azure Developer CLI 的身份进行身份验证。

你登录使用的用户主体(身份)应具有相应权限(控制平面和数据平面),以便对数据库、容器和项执行 CRUD 操作。

🌐 HTTP 服务

启动服务:

export COSMOSDB_MCP_SERVER_MODE=http
./mcp_azure_cosmosdb_go

默认情况下,服务将在端口 9090 上启动。你可以通过设置 PORT 环境变量来更改端口。

MCP 服务的配置方式会因你使用的 MCP 客户端/工具而异。对于 VS Code,你可以按照这些说明,使用 mcp.json 文件配置此服务。

以下是 HTTP 服务的 mcp.json 配置示例:

{
  "servers": {
    "mcp_azure_cosmosdb_go_http": {
      "type": "http",
      "url": "http://localhost:9090"
    }
  }
  //other MCP servers...
}

如果你配置了其他端口,请更改端口。

🖥️ Stdio 服务

以下是 stdio 模式的 mcp.json 配置示例:

{
  "servers": {
    "mcp_azure_cosmosdb_go_stdio": {
      "type": "stdio",
      "command": "./mcp_azure_cosmosdb_go"
    }
  }
  //other MCP servers...
}

在工具中配置 MCP 服务后,你就可以开始使用它与 Azure Cosmos DB 交互(就像上面的演示所示)。对于 Claude Code、Claude Desktop 等其他工具,请参阅各自的文档,了解如何配置 MCP HTTP/stdio 服务。

大语言模型(LLM)本质上具有非确定性,可能会出错。根据结果做出任何决策前,务必验证结果和查询。

对于这两种情况,如果你想使用 vNext 模拟器,请确保它已在本机上运行:docker run -p 8081:8081 -p 1234:1234 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview

☁️ 远程终结点

你也可以将此 MCP 服务部署到任何云服务(例如 Azure App Service、Azure Container Apps 等),并将其公开为 HTTP(s) 终结点。Azure 服务应支持 Managed Identity,MCP 服务会通过 DefaultAzureCredential 实现自动获取凭据。

⛔️ 不建议使用此执行模式。仅将其用于测试。这是因为,虽然 MCP 服务可以使用 Managed Identity 安全地访问 Azure Cosmos DB,但它目前不会对客户端进行身份验证(或授权)——任何能够访问该终结点的人都可以对你的 Cosmos DB 帐户执行操作。

🧪 本地开发和测试

使用 MCP inspector - make mcp_inspector

README 配图

评论

支持 Markdown

第一次接触 MCP?

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

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