使用说明
MCP数据狗服务器
A. 模型上下文协议 (MCP)服务器,通过工具向AI助手和代码编辑器公开Datadog API。
概述
服务器提供MCP工具用于:
- 指标 –查询指标、元数据、列表指标
- 日志 –搜索日志,获取日志详细信息,聚合日志
- 事件 –搜索事件,获取事件详细信息
- 监视器 –列出监视器、获取状态、搜索监视器
- APM/痕迹 –查询跟踪、服务运行状况、服务依赖关系
- 服务 –服务依赖关系(单环境和多环境)
快速开始
先决条件
- Node.js 22+
- npm
使用npx运行(推荐)
无需克隆或安装。使用以下命令将服务器添加到MCP客户端(例如Cursor、Claude) 标准 并从GitHub运行它:
{
"datadog": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:micaelmalta/mcp-server-datadog"],
"env": {
"DATADOG_API_KEY": "your_api_key",
"DATADOG_APP_KEY": "your_app_key"
}
}
}
集 DATADOG_API_KEY 和 DATADOG_APP_KEY (以及可选 DATADOG_SITE,默认值 datadoghq.com).重新启动客户端,以便显示工具。
从终端尝试:
DATADOG_API_KEY=your_key DATADOG_APP_KEY=your_app_key npx -y github:micaelmalta/mcp-server-datadog
从源代码运行
对于开发或固定安装:
git clone https://github.com/micaelmalta/mcp-server-datadog.git
cd mcp-server-datadog
npm install
cp .env.example .env
编辑 .env 并设置 DATADOG_API_KEY 和 DATADOG_APP_KEY.然后:
npm start
# or with NODE_ENV=local: npm run dev
在MCP配置中,使用 标准 和 node 以及通往入口点的路径:
{
"datadog": {
"type": "stdio",
"command": "node",
"args": ["/path/to/mcp-server-datadog/src/index.js"],
"env": {
"DATADOG_API_KEY": "your_api_key",
"DATADOG_APP_KEY": "your_app_key"
}
}
}
工具
| 工具 | 目的 |
|---|---|
query_metrics |
查询指标数据 |
get_metric_metadata |
获取度量元数据 |
list_metrics |
列出指标 |
search_logs |
使用筛选器搜索日志 |
get_log_details |
按ID获取单个日志 |
aggregate_logs |
聚合日志 |
search_events |
搜索事件 |
get_event_details |
按ID获取事件 |
list_monitors |
列出监视器 |
get_monitor_status |
获取监视器状态 |
search_monitors |
搜索监视器 |
query_traces |
查询APM跟踪 |
get_service_health |
服务健康指标 |
get_service_dependencies |
服务依赖关系 |
get_service_dependencies_multi_env |
跨环境的依赖关系 |
示例提示: “显示最近一小时来自服务X的错误日志” → search_logs. “生产中的CPU使用率是多少?” → query_metrics. “API服务运行情况如何?” → get_service_health.
时间范围: 使用ISO 8601或Unix时间戳(度量/事件为秒,日志/APM为毫秒)。 过滤器: Datadog语法,例如。 service:api, status:error, env:production.
项目结构
mcp_datadog/
├── src/
│ ├── clients/ # Datadog API clients (SDK-based)
│ ├── tools/ # MCP tool definitions and handlers
│ ├── utils/ # Environment, errors, logger, toolErrors
│ └── index.js # Server entry point
├── test/ # Vitest tests and fixtures
│ ├── benchmark/ # Tool handler benchmarks (mocked)
│ ├── mocks/ # Datadog SDK mocks
│ └── ...
├── docs/ # Additional documentation
└── package.json
技术栈: Node.js 22+、JavaScript(ESM)、JSDoc、Vitest、ESLint、Prettier、, @模型上下文协议/sdk, @数据狗/数据狗容量.
发展
命令
| 命令 | 描述 |
|---|---|
npm start |
运行服务器 |
npm run dev |
使用NODE_ENV=local运行 |
npm test |
运行测试 |
npm run test:watch |
手表模式下的测试 |
npm run test:coverage |
覆盖测试 |
npm run test:e2e |
E2E测试(真正的Datadog API;见下文) |
npm run benchmark |
运行工具处理程序基准测试(模拟) |
npm run lint |
Lint |
npm run lint:fix |
修复棉绒问题 |
npm run format |
带Prettier的格式 |
npm run format:check |
检查格式(用于CI) |
npm run validate |
棉绒+测试 |
API客户端模式
客户返回 { data, error }:
const { data, error } = await client.queryMetrics(query, from, to);
if (error) {
console.error(error.message, error.statusCode);
} else {
console.log(data);
}
持续集成
GitHub操作(.github/workflows/ci.yml)在推送和拉取请求上运行 main/master:格式检查(prettier --check)、皮棉(ESLint)和测试。本地命令相同: npm run format:check && npm run lint && npm test.
测试
测试使用Vitest和模拟的Datadog SDK(test/mocks/datadogApi.js)和固定装置 test/fixtures/.快跑 npm test 在承诺之前。
E2E测试 (test/e2e/)根据真正的Datadog API运行。它们被跳过,除非 RUN_E2E=1 真实的 DATADOG_API_KEY/DATADOG_APP_KEY 已设置 .env示例: RUN_E2E=1 npm run test:e2e。使用此功能验证文档中心生产错误日志是否可见(例如。 logsDocumentCenter.e2e.test.js).
操作说明
- 登录中: 工具调用记录到 标准错误 作为JSON行(
tool,durationMs,slow).可选:设置MCP_SLOW_TOOL_MS(默认值2000)标记慢速呼叫。一些客户也写信给mcp_datadog.log(参见src/utils/logger.js). - 速率限制: 服务器没有速率限制;工具使用率高可能会达到Datadog API的限制。
- 故障排除: 缺少工具→ 检查MCP配置和环境变量,重新启动客户端。 403/404 → 权限或计划。看 故障排除 对于“无数据”的情况。
故障排除
搜索返回0条日志,但我需要数据
如果 search_logs (或 aggregate_logs)对于您知道有流量的服务,不返回任何结果:
- 相同的Datadog组织 –MCP服务器使用
DATADOG_API_KEY,DATADOG_APP_KEY,并且可选DATADOG_SITE。确保这些指向 相同 Datadog组织和您的应用程序(如文档中心)发送日志的网站。 - 在Datadog中进行比较 –In Datadog日志资源管理器,运行 相同的过滤器和时间范围 (例如。
service:document-center env:production status:error,过去7天)。如果您在那里看到日志,但没有通过MCP看到,则env/site或密钥可能不同。 - 精确的过滤器语法 –确认应用程序发送的属性名称和值(例如。
service,env,status).尝试不env:production或与env:prod,或仅搜索service:document-center查看是否出现任何日志。 - 保留和索引 –日志必须位于API密钥可以读取的索引中;检查 日志索引 和保留。
文档
- 自述文件 (此文件)-设置、用法、结构。
- CLAUDE.md –贡献者的项目约定和模式。
- docs/ –其他指南(如性能、安全)(如有)。
贡献
- 遵循现有风格(
npm run lint,npm run format). - 添加新行为的测试。
- 跑
npm run validate在承诺之前。 - 使用常规提交:
feat,fix,docs,chore,refactor,test.
