Datadog集成服务器

一个基于模型上下文协议(MCP)的Datadog集成服务器,使AI助手能够与Datadog的日志、监控、指标、事件和仪表板进行交互。

  • by viamus
  • C#
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 viamus/mcp-datadog

使用说明

MCP数据狗服务器

A. 模型上下文协议(MCP) 用于Datadog集成的服务器,使AI助手能够与Datadog日志、监视器、指标、事件和仪表板进行交互。


快速开始

只需3个步骤即可开始跑步:

1.克隆和配置

git clone https://github.com/viamus/mcp-datadog.git
cd mcp-datadog

使用您的Datadog凭据复制和编辑环境文件:

cp .env.example .env

编辑 .env 使用您的Datadog API密钥:

DATADOG_API_KEY=your-api-key-here
DATADOG_APPLICATION_KEY=your-application-key-here
DATADOG_SITE=api.datadoghq.com

需要API密钥吗? 看 正在创建数据狗API密钥 在......下面

2.运行服务器

选项A-Docker(推荐):

docker compose up -d
# Server runs at http://localhost:8081

选项B-。NET-CLI:

dotnet run --project src/Viamus.DataDog.Mcp.Server
# Server runs at http://localhost:5100

3.验证它是否正常工作

# Docker
curl http://localhost:8081/health

# .NET CLI
curl http://localhost:5100/health

您应该看到: Healthy


关于

此项目实现了一个MCP服务器,该服务器公开了用于查询和管理Datadog中的日志、监视器、指标、事件和仪表板的工具。它可以与任何兼容的MCP客户端一起使用,例如Claude Desktop、Claude Code或支持该协议的其他助手。


可用工具

日志工具

工具 说明
search_logs 使用具有时间范围和分页的Datadog查询语法搜索日志

监控工具

工具 说明
list_monitors 列出所有具有可选过滤器(名称、标签、状态)的监视器
get_monitor 按ID获取特定监视器的详细信息,包括阈值和状态

度量工具

工具 说明
query_metrics 使用Datadog查询语法查询时间序列度量数据
list_metrics 列出可用的度量名称,可选择按主机筛选
get_metric_metadata 获取特定度量(类型、描述、单位)的元数据

事件工具

工具 说明
list_incidents 按页码列出事件
get_incident 获取特定事件的详细信息

仪表板工具

工具 说明
list_dashboards 列出所有包含基本信息的仪表板
get_dashboard 获取包括小部件在内的详细仪表板配置

先决条件

要求 版本 注释
.NET SDK 10.0+ 当地发展所需
码头工人 最新 推荐跑步
数据狗帐户 - 带有API和应用程序密钥

正在创建数据狗API密钥

  1. 转到Datadog组织设置: https://app.datadoghq.com/organization-settings/api-keys
  2. 点击 +新密钥 创建API密钥
  3. 转到应用程序密钥: https://app.datadoghq.com/organization-settings/application-keys
  4. 点击 +新密钥 创建应用程序密钥

所需范围:

范围 权限 需要
日志 读取 日志搜索操作
监视器 阅读 监视器列表和详细信息
度量 读取 度量查询和元数据
事件 阅读 事件列表和详细信息
仪表板 阅读 仪表板列表和详细信息
  1. 立即复制两个密钥(您将不会再看到它们!)

数据狗网站:

地区 网站URL
US1(默认) datadoghq.com
美国3 us3.datadoghq.com
美国5 us5.datadoghq.com
欧盟 datadoghq.eu
AP1 ap1.datadoghq.com

运行选项

选项1:Docker Compose(推荐)

最适合:生产使用,无需快速设置。NET已安装

docker compose up -d

服务器URL: http://localhost:8081

有用的命令:

docker compose logs -f          # View logs
docker compose down             # Stop the server
docker compose up -d --build    # Rebuild and start

选项2:。NET-CLI

最适合:开发、调试

# Set environment variables
export Datadog__ApiKey="your-api-key"
export Datadog__ApplicationKey="your-application-key"

# Run the server
dotnet run --project src/Viamus.DataDog.Mcp.Server

服务器URL: http://localhost:5100

选项3:独立可执行文件

最适合:无需部署。NET运行时

# Windows
dotnet publish src/Viamus.DataDog.Mcp.Server -c Release -r win-x64 -o ./publish/win-x64

# Linux
dotnet publish src/Viamus.DataDog.Mcp.Server -c Release -r linux-x64 -o ./publish/linux-x64

# macOS (Intel)
dotnet publish src/Viamus.DataDog.Mcp.Server -c Release -r osx-x64 -o ./publish/osx-x64

# macOS (Apple Silicon)
dotnet publish src/Viamus.DataDog.Mcp.Server -c Release -r osx-arm64 -o ./publish/osx-arm64

然后直接运行可执行文件:

# Windows
./publish/win-x64/Viamus.DataDog.Mcp.Server.exe

# Linux/macOS
./publish/linux-x64/Viamus.DataDog.Mcp.Server

客户端配置

克劳德桌面

选项A-使用CLI(推荐):

claude mcp add datadog --transport http http://localhost:8081

选项B-手动配置:

编辑 claude_desktop_config.json:

  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "datadog": {
      "url": "http://localhost:8081"
    }
  }
}

克劳德代码

从项目目录运行:

claude mcp add datadog --transport http http://localhost:8081

或手动添加到 .claude/settings.json:

{
  "mcpServers": {
    "datadog": {
      "type": "http",
      "url": "http://localhost:8081"
    }
  }
}

备注:使用端口 5100 如果跑步。NET CLI,或 8081 如果使用Docker运行。


使用示例

配置MCP客户端后,您可以提出以下问题:

日志

  • “搜索过去一小时的错误日志”
  • “从service:api查找状态为错误的日志”
  • “显示包含'timeout'的最新日志”
  • “搜索过去15分钟内来自主机web-server-01的日志”

监视器

  • “列出当前正在发出警报的所有监视器”
  • “显示标记为env:production的监视器”
  • “获取监视器#12345的详细信息”
  • “哪些监视器处于警告状态?”
  • “查找名称中带有‘CPU’的监视器”

指标

  • “查询过去一小时内所有主机的平均CPU使用率”
  • “显示主机web-01的内存使用情况”
  • “列出所有可用指标”
  • “获取system.cpu.user度量的元数据”
  • “过去24小时内按服务划分的查询请求延迟”

事件

  • “列出所有活动事件”
  • “显示上周发生的事件”
  • “获取INC-123事件的详细信息”
  • “目前影响生产的事件是什么?”

仪表盘

  • “列出所有可用的仪表板”
  • “显示‘生产概述’仪表板的详细信息”
  • “仪表板abc-123上有哪些小部件?”

配置选项

环境变量

变量 必填 默认 描述
Datadog__ApiKey 是 - 您的Datadog API密钥
Datadog__ApplicationKey 是 - 您的Datadog应用程序密钥
Datadog__Site 没有 api.datadoghq.com Datadog站点/地区

应用程序参数

{
  "Datadog": {
    "ApiKey": "your-api-key",
    "ApplicationKey": "your-application-key",
    "Site": "api.datadoghq.com"
  }
}

用户秘密(开发)

cd src/Viamus.DataDog.Mcp.Server
dotnet user-secrets set "Datadog:ApiKey" "your-api-key"
dotnet user-secrets set "Datadog:ApplicationKey" "your-application-key"

故障排除

常见问题

Health check returns error or connection refused
  1. 验证服务器是否正在运行:

    # Docker
    docker compose ps
    
    # Check if port is in use
    netstat -an | grep 8081  # or 5100
    
  2. 检查日志是否有错误:

    # Docker
    docker compose logs
    
    # .NET CLI - errors appear in terminal
    
Authentication failed / 403 Forbidden
  1. 验证您的API密钥和应用程序密钥是否正确
  2. 检查Datadog中的密钥是否未被撤销
  3. 确保密钥具有所需的范围/权限
  4. 验证Datadog网站是否适合您所在的地区
No data returned from queries
  1. 验证时间范围是否包含数据
  2. 检查您的查询语法是否与Datadog的查询语言匹配
  3. 确保您的API密钥可以访问请求的数据
Docker: Container exits immediately
  1. 检查是否 .env 文件存在并且具有所需的凭据
  2. 查看日志: docker compose logs
  3. 确保端口8081未被其他应用程序使用
.NET CLI: dotnet run fails
  1. 核实。NET 10 SDK已安装: dotnet --version
  2. 还原包: dotnet restore
  3. 检查环境变量是否设置正确

项目结构

mcp-datadog/
├── src/
│   └── Viamus.DataDog.Mcp.Server/
│       ├── Configuration/      # App configuration classes
│       ├── Models/             # DTOs and data models
│       ├── Services/           # Datadog API client
│       ├── Tools/              # MCP tool implementations
│       ├── Program.cs          # Entry point
│       ├── appsettings.json    # App settings
│       └── Dockerfile          # Container definition
├── tests/
│   └── Viamus.DataDog.Mcp.Server.Tests/
├── .github/                    # GitHub templates
├── .env.example                # Environment template
├── docker-compose.yml          # Docker orchestration
└── LICENSE                     # MIT License

API 参考

记录DTO

日志搜索响应

搜索结果包含带有元数据和分页光标的日志条目。

日志条目

带有Id、类型和属性(时间戳、状态、服务、主机、消息、标签)的单个日志条目。

监控DTO

数据监视器

完整的监视器详细信息,包括Id、名称、类型、查询、消息、总体状态、标签、优先级、选项和状态。

监视器选项

监控配置,包括阈值(严重、警告、正常)、通知设置和超时。

度量DTO

MetricQuery响应

查询结果包含时间序列数据,包括状态、查询、时间范围和序列数据。

公制系列

具有度量名称、显示名称、单位、范围、标签、聚合和数据点的单个度量系列。

度量元数据

度量元数据,包括类型、描述、单位和统计间隔。

事故DTO

事件

事件详细信息,包括Id、标题、严重性、状态、受影响的客户、时间戳(创建、检测、解决)和时间度量(TimeToDetect、TimeToResolve)。

仪表板DTO

仪表板摘要

仪表板概述,包括Id、标题、描述、布局类型、URL和作者信息。

仪表盘

包含所有配置的完整仪表板,包括小部件、模板变量和NotifyList。

仪表板小部件

小部件配置,包括定义(类型、标题、请求/查询)和布局(位置和大小)。


发展

运行测试

# Run all tests
dotnet test

# Run with coverage
dotnet test --collect:"XPlat Code Coverage"

建筑

# Debug build
dotnet build

# Release build
dotnet build -c Release

许可证

该项目根据 MIT许可证.


链接