Datadog MCP服务器
一种模型上下文协议(MCP)服务器,使LLM能够通过自然语言查询搜索和分析Datadog日志和跟踪。
特性
- 日志搜索:使用完整的查询语法支持在所有Datadog日志中搜索
- 跟踪搜索:查询跟踪和跨度以调查应用程序性能
- 灵活的格式:以人类可读的Markdown或结构化JSON格式获取结果
- 智能截断:自动响应截断,提供有用的指导
- 清除错误处理:可操作的错误消息,指导您找到解决方案
- 费率限制管理:内置重试逻辑和清除速率限制消息
先决条件
- Python 3.10或更高版本
- 依赖管理诗
- Datadog帐户:
- API密钥 - 程序键 - 访问日志和/或跟踪
安装
- 克隆或下载此存储库:
cd datadog-mcp- 使用Poetry安装依赖项:
poetry install配置
1.获取Datadog API凭据
您需要从Datadog帐户中获取三条信息:
- Datadog网站:您的Datadog网站URL(例如。,
datadoghq.com,datadoghq.eu)
- 在您的Datadog URL中找到这个: https://app.datadoghq.com → 网站是 datadoghq.com
- API密钥:从 API密钥设置
- 如果需要创建密钥,请单击“新建密钥” - 复制键值
- 程序键:从 应用程序密钥设置
- 如果需要创建密钥,请单击“新建密钥” - 复制键值
2.设置环境变量
创建一个 .env 项目根目录中的文件(复制自 .env.example):
cp .env.example .env编辑 .env 并添加您的凭据:
DD_SITE=datadoghq.com
DD_API_KEY=your_actual_api_key_here
DD_APP_KEY=your_actual_app_key_here或者,将它们导出到shell中:
export DD_SITE=datadoghq.com
export DD_API_KEY=your_actual_api_key_here
export DD_APP_KEY=your_actual_app_key_here用法
运行服务器
MCP服务器作为一个通过stdio进行通信的长期进程运行:
poetry run python -m datadog_mcp.server服务器将在启动时验证您的配置,并显示任何错误。
可用工具
1.数据狗搜索日志
在Datadog中搜索日志。
参数:
query(必填):使用Datadog语法搜索查询from_time(可选):开始时间(默认值:“现在-15米”)to_time(可选):结束时间(默认值:“现在”)limit(可选):最大结果(默认值:50,最大值:1000)response_format(可选):“markdown”或“json”(默认:“markdown”)
示例:
# Search for errors in the last hour
{
"query": "status:error",
"from_time": "now-1h"
}
# Search specific service
{
"query": "service:web-app AND @http.status_code:500",
"from_time": "2024-01-01T00:00:00Z",
"to_time": "2024-01-01T23:59:59Z"
}
# Get JSON output
{
"query": "env:production error",
"response_format": "json"
}2.数据搜索跟踪
在Datadog中搜索痕迹和跨度。
参数:
query(必填):使用Datadog语法搜索查询from_time(可选):开始时间(默认值:“现在-15米”)to_time(可选):结束时间(默认值:“现在”)limit(可选):最大结果(默认值:50,最大值:1000)response_format(可选):“markdown”或“json”(默认:“markdown”)
示例:
# Find errors in a service
{
"query": "service:web-app error:true",
"from_time": "now-1h"
}
# Find slow API calls
{
"query": "resource_name:GET /api/* @duration:>1000000000",
"from_time": "now-30m"
}
# Get JSON output for analysis
{
"query": "service:python*",
"response_format": "json"
}查询句法
这两个工具都支持完整的Datadog查询语法:
基本查询:
- 简单文本:
error - 字段搜索:
service:web-app - 布尔运算符
service:web AND status:error - 通配符:
service:python*
面部:
- HTTP状态:
@http.status_code:500 - 自定义属性:
@user.email:john@example.com
标签:
- 环境:
env:production - 多个标签:
env:prod team:backend
时间格式:
- 日期数学:
now-15m,now-1h,now-1d,now-7d - ISO8601:
2024-01-01T00:00:00Z - 纪元毫秒:
1704067200000
了解更多:
与MCP客户端集成
克劳德
添加到您的Claude配置文件中:
{
"mcpServers": {
"datadog": {
"command": "poetry",
"args": ["run", "python", "-m", "datadog_mcp.server"],
"cwd": "/absolute/path/to/datadog-mcp",
"env": {
"DD_SITE": "datadoghq.com",
"DD_API_KEY": "your_api_key",
"DD_APP_KEY": "your_app_key"
}
}
}
}替换 /absolute/path/to/datadog-mcp 与这个项目的实际路径。
其他MCP客户端
服务器使用stdio传输并遵循MCP协议规范。有关集成说明,请参阅MCP客户端文档。
速率限制
- 日志API:慷慨的利率限制(通常不是问题)
- 追踪API:每小时300个请求
如果您达到速率限制,服务器将返回一条明确的错误消息,其中包含重试指导。
故障排除
配置错误
错误:缺少必需的环境变量
- 确保
DD_SITE,DD_API_KEY,以及DD_APP_KEY已设定 - 检查你的
.env文件或环境变量 - 验证变量名中没有拼写错误
身份验证错误
错误:权限被拒绝
- 验证API密钥和应用程序密钥是否正确
- 确保密钥对日志/跟踪具有适当的权限
- 检查钥匙是否已旋转或过期
- 如果需要,从Datadog设置生成新密钥
查询错误
错误:请求错误
- 检查查询语法
- 请参阅Datadog查询语法文档
- 尝试简化查询以隔离问题
- 删除可能需要转义的特殊字符
速率限制
错误:超出速率限制
- 在发出更多请求之前等待(特别是跟踪:300/小时)
- 使用更具体的查询来减少请求数
- 考虑在客户端缓存结果
- 在请求之间增加更长的时间延迟
空结果
如果你没有得到任何结果,但期待一些结果:
- 使用验证时间范围
from_time和to_time - 检查Datadog UI中是否存在查询的日志/跟踪
- 确保您正在搜索正确的服务名称
- 先尝试更广泛的查询,然后缩小范围
发展
项目结构
datadog-mcp/
├── datadog_mcp/
│ ├── __init__.py # Package initialization
│ ├── server.py # Main MCP server with tool registrations
│ ├── config.py # Configuration and environment validation
│ ├── models.py # Pydantic input validation models
│ ├── client.py # Datadog API client wrapper
│ ├── formatters.py # Response formatting (Markdown/JSON)
│ └── errors.py # Error handling utilities
├── pyproject.toml # Poetry dependencies
├── README.md # This file
└── .env.example # Environment variable template代码质量
代码库遵循以下标准:
- 带有Python类型注释的完整类型提示
- Pydantic v2用于输入验证
- 全面的文档字符串(Sphinx风格)
- 异步/等待所有I/O操作
- 共享公用设施的干燥原则
- 清晰的错误信息和可操作的指导
测试
要验证实施,请执行以下操作:
# Check Python syntax
poetry run python -m py_compile datadog_mcp/*.py
# Test server startup (will wait for requests)
poetry run python -m datadog_mcp.server许可证
此项目按原样提供,用于通过模型上下文协议与Datadog服务集成。
支持
关于以下问题:
- MCP协议:参见 MCP文件
- 数据狗API:参见 Datadog API文档
- 此服务器:在此存储库中打开一个问题
致谢
内置:
