关于 MCP server for Azure Cosmos DB using the Go SDK
这是一个基于 Go SDK 构建的 Azure Cosmos DB MCP 服务,面向 AI 工具开发者,也可作为学习 Azure Go SDK 与 MCP Go SDK 的示例。它提供数据库、容器和项目的管理及查询工具。
主要功能
- 01列出和创建数据库
- 02列出、读取和创建容器
- 03读取及添加项目
- 04执行 SQL 查询
- 05事务批量创建项目
- 06支持 HTTP 与 Stdio 传输
适用场景
- 01在 MCP 客户端中管理 Cosmos DB 数据库和容器
- 02通过工具读取、写入或查询容器数据
- 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 交互的工具:
- 列出数据库:检索 Cosmos DB 帐户中的所有数据库列表。
- 创建数据库:在 Cosmos DB 帐户中创建一个新数据库。
- 列出容器:检索指定数据库中的所有容器列表。
- 读取容器元数据:获取指定容器的元数据或配置详情。
- 创建容器:在指定数据库中创建一个具有指定分区键的新容器。
- 向容器添加项:向数据库中的指定容器添加一个新项。
- 读取项:使用项 ID 和分区键从容器中读取指定项。
- 执行查询:在 Cosmos DB 容器上执行 SQL 查询,可选择限定分区键范围。
- 批量创建项:使用事务批处理操作向容器添加多个项。
⚠️ 此项目并非旨在取代 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):
🚀 如何运行
首先,克隆 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

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