Azure Cosmos DB MCP服务器
提供与Azure Cosmos DB无缝集成的模型上下文协议(MCP)服务器。该服务器使AI助手和其他MCP客户端能够通过两者与Cosmos DB数据库进行交互 标准输入输出 (命令行)和 超文本传输协议 接口。
特性
- 文档操作:创建、读取、更新和删除文档
- 查询执行:对Cosmos DB容器运行SQL查询
- 资源发现:浏览数据库和容器信息
- 统计:获取容器统计信息和元数据
- 跨分区支持:跨多个分区执行查询
- 异步操作:采用asyncio构建,实现高性能
- HTTP API:用于web集成的RESTful HTTP接口
- 健康监测:内置健康检查端点
先决条件
- Python 3.8或更高版本
- Azure Cosmos DB帐户和数据库
- 有效的Cosmos DB连接凭据
安装
- 克隆此存储库:
git clone
cd Femcare-MT-GenAI-MCP-Server- 安装依赖项:
pip install -r requirements.txt- 设置环境变量:
cp .env.example .env- 编辑
.env使用您的Cosmos DB凭据创建文件:
# Azure Cosmos DB Configuration
COSMOS_ENDPOINT=https://your-account.documents.azure.com:443/
COSMOS_KEY=your-primary-key
COSMOS_DATABASE_NAME=your-database-name
COSMOS_CONTAINER_NAME=your-container-name
# HTTP Server Configuration (for HTTP mode)
SERVER_HOST=localhost
SERVER_PORT=8000
LOG_LEVEL=info用法
HTTP模式(建议用于Web集成)
启动HTTP服务器:
python main.py服务器将于启动 http://localhost:8000 默认情况下。
HTTP API终结点
- 得到/ -服务器信息
- GET/健康 -健康检查端点
- GET/mcp/资源 -列出可用资源
- GET/mcp/resources/{resource_path} -阅读特定资源
- GET/mcp/工具 -列出可用工具
- POST/mcp/tools/{tool_name} -执行工具
HTTP使用示例
# Check server health
curl http://localhost:8000/health
# List available tools
curl http://localhost:8000/mcp/tools
# Query documents
curl -X POST http://localhost:8000/mcp/tools/query_documents \
-H "Content-Type: application/json" \
-d '{"arguments": {"query": "SELECT * FROM c WHERE c.category = \"example\""}}'
# Create a document
curl -X POST http://localhost:8000/mcp/tools/create_document \
-H "Content-Type: application/json" \
-d '{"arguments": {"document": {"id": "doc1", "name": "Test Document", "category": "example"}}}'配置
所需的环境变量
COSMOS_ENDPOINT:您的Cosmos DB帐户端点URLCOSMOS_KEY:用于身份验证的主密钥或辅助密钥COSMOS_DATABASE_NAME:要连接的数据库的名称COSMOS_CONTAINER_NAME:要操作的容器名称
可选环境变量
COSMOS_CONSISTENCY_LEVEL:一致性级别(默认值:“会话”)COSMOS_CONNECTION_MODE:连接模式(默认:“网关”)
用法
运行服务器
python main.py服务器将启动并通过stdio监听MCP客户端连接。
可用工具
1.查询单据
对Cosmos DB容器执行SQL查询:
{
"name": "query_documents",
"arguments": {
"query": "SELECT * FROM c WHERE c.category = 'electronics'",
"cross_partition": true
}
}2.创建文档
创建新文档:
{
"name": "create_document",
"arguments": {
"document": {
"name": "Product Name",
"category": "electronics",
"price": 99.99
}
}
}3.阅读文档
按ID读取特定文档:
{
"name": "read_document",
"arguments": {
"document_id": "document-id",
"partition_key": "partition-key-value"
}
}4.更新文档
更新现有文档:
{
"name": "update_document",
"arguments": {
"document_id": "document-id",
"document": {
"name": "Updated Product Name",
"price": 89.99
},
"partition_key": "partition-key-value"
}
}5.删除文档
删除文档:
{
"name": "delete_document",
"arguments": {
"document_id": "document-id",
"partition_key": "partition-key-value"
}
}6.获取容器统计信息
获取有关容器的信息:
{
"name": "get_container_statistics",
"arguments": {}
}可用资源
cosmosdb://database:数据库信息cosmosdb://container:容器信息和架构cosmosdb://documents:容器中的示例文件
错误处理
该服务器包括全面的错误处理功能,用于:
- 连接失败
- 身份验证错误
- 无效查询
- 未找到文档场景
- 分区密钥不匹配
安全考虑
- 将敏感凭据存储在环境变量中
- 将Azure密钥库用于生产部署
- 对您的Cosmos DB帐户实施适当的访问控制
- 定期旋转访问键
发展
项目结构
├── main.py # Main MCP server implementation
├── requirements.txt # Python dependencies
├── .env.example # Environment template
├── .gitignore # Git ignore patterns
└── README.md # This file贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
故障排除
常见问题
- 连接失败:验证您的端点URL和访问密钥
- 未找到数据库/容器:确保名称完全匹配
- 分区密钥错误:验证读取/更新/删除操作的分区键值
- 查询超时:为复杂查询启用跨分区查询
日志记录
服务器使用Python的日志模块。通过环境设置日志级别:
export PYTHONPATH=.
export LOG_LEVEL=DEBUG
python main.py许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
支持
对于问题和疑问:
- 在GitHub存储库中创建问题
- 查看Azure Cosmos DB文档
- 审查MCP规范https://modelcontextprotocol.io/
