基于Go的Azure Cosmos DB MCP服务器的实现
它与Azure Cosmos DB服务和 vNext仿真器,并公开了以下用于与Azure Cosmos DB交互的工具:
- 列出数据库:检索Cosmos DB帐户中所有数据库的列表。
- 创建数据库:在Cosmos DB帐户中创建一个新数据库。
- 列出容器:检索特定数据库中所有容器的列表。
- 读取容器元数据:获取特定容器的元数据或配置详细信息。
- 创建容器:使用定义的分区键在指定数据库中创建新容器。
- 将项目添加到容器:将新项添加到数据库中的指定容器中。
- 阅读项目:使用容器的ID和分区键从容器中读取特定项目。
- 执行查询:在具有可选分区键作用域的Cosmos DB容器上执行SQL查询。
- 批量创建项目:使用事务批处理操作将多个项目添加到容器中。
▶️ 这是一个使用GitHub Copilot CLI的演示,但同样适用于 Visual Studio代码中的代理模式,或任何其他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服务器使用 DefaultAzureCredential 通过Azure SDK for Go实现与Azure Cosmos DB的身份验证。这意味着您可以使用各种方法进行身份验证,包括环境变量、托管身份或Azure CLI登录等。
此^不适用于本地仿真器,因为它使用众所周知的基于密钥的身份验证。
此MCP服务器支持流式HTTP和Stdio传输。您可以在两种模式下运行MCP服务器:
- 作为HTTP服务器在您的计算机上本地运行,或
stdio过程 - 作为HTTP服务器部署到远程端点(如Azure应用服务、Azure容器应用等)
💻 本地模式
得益于Streamable HTTP支持,您可以在本地计算机上轻松地将此MCP服务器作为HTTP服务器运行。
使用Azure CLI登录(az登录),或Azure开发人员CLI(azd身份验证登录).由于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 文件。
以下是一个示例 mcp.json HTTP服务器的配置:
{
"servers": {
"mcp_azure_cosmosdb_go_http": {
"type": "http",
"url": "http://localhost:9090"
}
}
//other MCP servers...
}如果已配置其他端口,请更改端口。
🖥️ Stdio服务器
以下是一个示例 mcp.json 配置 stdio 模式:
{
"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应用服务、Azure容器应用等),并将其作为HTTP端点公开。Azure服务应支持托管身份,MCP服务器将使用 DefaultAzureCredential 实施。
⛔️ 此执行模式为 未推荐的。仅用于测试目的。这是因为,尽管MCP服务器可以使用托管身份安全地访问Azure Cosmos DB,但它 不 对客户端进行身份验证(或授权)-任何可以访问端点的人都可以在您的Cosmos DB帐户上执行操作。
🧪 本地开发和测试
使用 MCP检查员 - make mcp_inspector


