Datadog服务器监控工具

一个通过MCP协议向AI助手和代码编辑器提供Datadog监控数据访问的服务器工具,支持指标查询、日志搜索、事件监控等功能。

  • by micaelmalta
  • JavaScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 micaelmalta/mcp-server-datadog

使用说明

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)对于您知道有流量的服务,不返回任何结果:

  1. 相同的Datadog组织 –MCP服务器使用 DATADOG_API_KEY, DATADOG_APP_KEY,并且可选 DATADOG_SITE。确保这些指向 相同 Datadog组织和您的应用程序(如文档中心)发送日志的网站。
  2. 在Datadog中进行比较 –In Datadog日志资源管理器,运行 相同的过滤器和时间范围 (例如。 service:document-center env:production status:error,过去7天)。如果您在那里看到日志,但没有通过MCP看到,则env/site或密钥可能不同。
  3. 精确的过滤器语法 –确认应用程序发送的属性名称和值(例如。 service, env, status).尝试不 env:production 或与 env:prod,或仅搜索 service:document-center 查看是否出现任何日志。
  4. 保留和索引 –日志必须位于API密钥可以读取的索引中;检查 日志索引 和保留。

文档

  • 自述文件 (此文件)-设置、用法、结构。
  • CLAUDE.md –贡献者的项目约定和模式。
  • docs/ –其他指南(如性能、安全)(如有)。

贡献

  1. 遵循现有风格(npm run lint, npm run format).
  2. 添加新行为的测试。
  3. 跑 npm run validate 在承诺之前。
  4. 使用常规提交: feat, fix, docs, chore, refactor, test.

链接