Datadog MCP服务器

一个用于与Datadog API交互的模型上下文协议(MCP)服务器,提供监控、仪表板、指标、事件、日志和事件管理等功能。

  • by GeLi2001
  • TypeScript
  • 本地部署
  • 69 星标
  • 更新于
在 GitHub 查看 GeLi2001/datadog-mcp-server

使用说明

Datadog MCP服务器

模型上下文协议(MCP)服务器,用于与数据狗API交互。

特性

  • 监控:访问监视器数据和配置
  • 仪表盘:检索和查看仪表板定义
  • 指标:查询可用指标及其元数据
  • 事件:搜索和检索时间范围内的事件
  • 日志:使用高级过滤和排序选项搜索日志
  • 事件:访问事件管理数据
  • API集成:与Datadog的v1和v2 API直接集成
  • 全面的错误处理:清除API和身份验证问题的错误消息
  • 服务特定端点:支持日志和指标的不同端点

先决条件

  1. Node.js(版本16或更高)
  2. Datadog帐户:
    • API密钥-可在“组织设置”>“API密钥”中找到
    • 应用程序密钥-在组织设置>应用程序密钥中找到

应用关键范围

为了提高安全性,您可以调整应用程序密钥的范围,仅授予此MCP服务器所需的最小权限。默认情况下,应用程序密钥继承了创建它们的用户的所有权限,但 作用域应用程序密钥 允许您遵循最小特权原则。

所需范围

相应功能需要以下范围:

工具 所需范围 说明
get-monitors, get-monitor monitors_read 读取访问权限以监控配置和状态
get-dashboards, get-dashboard dashboards_read 读取仪表板定义的访问权限
get-metrics, get-metric-metadata metrics_read 读取指标列表和元数据的访问权限
get-events events_read 从事件流中读取对事件的访问权限
search-logs, aggregate-logs logs_read_data 读取日志数据以进行搜索和聚合
get-incidents incident_read 读取事件管理数据的访问权限

创建作用域应用程序密钥

  1. 首选 组织设置 > 应用程序密钥
  2. 点击 新密钥
  3. 输入名称(例如,“MCP服务器-只读”)
  4. 在...之下 范围,仅选择所需的权限:
    • 要获得完整功能: monitors_read, dashboards_read, metrics_read, events_read, logs_read_data, incident_read
    • 仅适用于日志: logs_read_data
    • 仅用于监控: monitors_read, dashboards_read, metrics_read
  5. 点击 创建密钥

备注:如果在创建应用程序密钥时未指定任何作用域,则它将具有创建用户的所有权限的完全访问权限。对于生产使用,我们建议始终指定显式范围。

安装

通过npm(推荐)

npm install -g datadog-mcp-server

来自源头

  1. 克隆此存储库
  2. 安装依赖项:
    npm install
    
  3. 构建项目:
    npm run build
    

配置

您可以使用环境变量或命令行参数配置Datadog MCP服务器。

环境变量

创建一个 .env 文件中包含您的Datadog凭据:

DD_API_KEY=your_api_key_here
DD_APP_KEY=your_app_key_here
DD_SITE=datadoghq.com
DD_LOGS_SITE=datadoghq.com
DD_METRICS_SITE=datadoghq.com

备注: DD_LOGS_SITE 和 DD_METRICS_SITE 是可选的,将默认为值 DD_SITE 如果没有指定。

命令行参数

全局站点设置的基本用法:

datadog-mcp-server --apiKey=your_api_key --appKey=your_app_key --site=datadoghq.eu

高级使用特定于服务的端点:

datadog-mcp-server --apiKey=your_api_key --appKey=your_app_key --site=datadoghq.com --logsSite=logs.datadoghq.com --metricsSite=metrics.datadoghq.com

注意:站点参数不需要 https:// -它将自动添加。

区域终点

不同的Datadog区域具有不同的端点:

  • 美国(默认): datadoghq.com
  • 欧盟: datadoghq.eu
  • US3(政府云): ddog-gov.com
  • 美国5: us5.datadoghq.com
  • AP1: ap1.datadoghq.com

使用Claude Desktop

将此添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "datadog": {
      "command": "npx",
      "args": [
        "datadog-mcp-server",
        "--apiKey",
        "<YOUR_API_KEY>",
        "--appKey",
        "<YOUR_APP_KEY>",
        "--site",
        "<YOUR_DD_SITE>(e.g us5.datadoghq.com)"
      ]
    }
  }
}

对于日志和指标具有单独端点的更高级配置:

{
  "mcpServers": {
    "datadog": {
      "command": "npx",
      "args": [
        "datadog-mcp-server",
        "--apiKey",
        "<YOUR_API_KEY>",
        "--appKey",
        "<YOUR_APP_KEY>",
        "--site",
        "<YOUR_DD_SITE>",
        "--logsSite",
        "<YOUR_LOGS_SITE>",
        "--metricsSite",
        "<YOUR_METRICS_SITE>"
      ]
    }
  }
}

Claude Desktop配置文件的位置:

  • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%/Claude/claude_desktop_config.json

使用MCP检查器

要使用MCP检查器工具:

npx @modelcontextprotocol/inspector datadog-mcp-server --apiKey=your_api_key --appKey=your_app_key

可用工具

服务器提供以下MCP工具:

  • 获取监视器:获取具有可选筛选功能的监视器
  • 获取监视器:按ID获取特定监视器的详细信息
  • 获取仪表板:列出所有仪表板
  • 获取仪表板:按ID获取特定仪表板
  • 获取指标:列出可用指标
  • 获取度量元数据:获取特定指标的元数据
  • 获取事件:获取时间范围内的事件
  • 获取事件:列出具有可选筛选的事件
  • 搜索日志:使用高级查询过滤搜索日志
  • 聚合日志:对日志数据进行分析和聚合

例子

示例:获取监视器

{
  "method": "tools/call",
  "params": {
    "name": "get-monitors",
    "arguments": {
      "groupStates": ["alert", "warn"],
      "limit": 5
    }
  }
}

示例:获取仪表板

{
  "method": "tools/call",
  "params": {
    "name": "get-dashboard",
    "arguments": {
      "dashboardId": "abc-def-123"
    }
  }
}

示例:搜索日志

{
  "method": "tools/call",
  "params": {
    "name": "search-logs",
    "arguments": {
      "filter": {
        "query": "service:web-app status:error",
        "from": "now-15m",
        "to": "now"
      },
      "sort": "-timestamp",
      "limit": 20
    }
  }
}

示例:聚合日志

{
  "method": "tools/call",
  "params": {
    "name": "aggregate-logs",
    "arguments": {
      "filter": {
        "query": "service:web-app",
        "from": "now-1h",
        "to": "now"
      },
      "compute": [
        {
          "aggregation": "count"
        }
      ],
      "groupBy": [
        {
          "facet": "status",
          "limit": 10,
          "sort": {
            "aggregation": "count",
            "order": "desc"
          }
        }
      ]
    }
  }
}

示例:获取事件

{
  "method": "tools/call",
  "params": {
    "name": "get-incidents",
    "arguments": {
      "includeArchived": false,
      "query": "state:active",
      "pageSize": 10
    }
  }
}

故障排除

如果遇到403 Forbidden错误,请验证:

  1. 您的API密钥和应用程序密钥正确
  2. 密钥具有访问所请求资源的必要权限
  3. 您的帐户可以访问请求的数据
  4. 您正在使用您所在地区的正确端点(例如。, datadoghq.eu 欧盟客户)

调试

如果遇到问题,请检查Claude Desktop的MCP日志:

# On macOS
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

# On Windows
Get-Content -Path "$env:APPDATA\Claude\Logs\mcp*.log" -Tail 20 -Wait

常见问题:

  • 403禁止:Datadog API密钥的身份验证问题
  • API密钥或应用程序密钥格式无效:请确保使用完整的密钥字符串
  • 站点配置错误:确保您使用的是正确的Datadog域
  • 端点不匹配:如果您对日志和指标使用单独的域,请验证是否正确设置了特定于服务的端点

许可证

麻省理工学院