Datadog MCP服务器

一个全面的Datadog集成模型上下文协议(MCP)服务器,提供对Datadog API的广泛读写访问,采用现代异步模式构建,支持多种开发工具集成。

  • by GiovanniYuriMita
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 GiovanniYuriMita/datadog-mcp

使用说明

Datadog MCP服务器

用于Datadog集成的全面模型上下文协议(MCP)服务器,提供对具有现代异步模式的Datadog API的广泛读/写访问。使用官方Datadog Python SDK和MCP Python SDK构建。

🚀 特性

  • 🔧 读/写操作 -跨支持的API创建、读取和更新
  • ⚡ 异步操作 -使用AsyncApiClient构建,实现最佳性能
  • 🔄 自动重试 -指数回退的速率限制和错误处理
  • 📊 全面覆盖 -所有主要Datadog API中的44个工具
  • 💾 本地缓存 -结果存储为带时间戳的JSON文件
  • 🔒 类型安全 -全类型提示和Pydantic模型
  • 📈 内置分析 -统计分析、趋势检测和数据汇总
  • 🛡️ 安全第一 -基于环境的凭证管理

📋 先决条件

  • Python 3.8+
  • 有效的Datadog API和应用程序密钥
  • MCP兼容客户端(VS Code、Cursor、Claude Desktop等)

快速开始

# Install dependencies
pip install -r requirements.txt

# Set environment variables
export DATADOG_API_KEY="your_api_key"
export DATADOG_APP_KEY="your_app_key"
export DATADOG_SITE="datadoghq.com"  # Optional

# Run the server
python server.py

MCP客户端集成

VS代码并继续

  1. 在VS代码中安装Continue扩展
  2. 添加到您的继续配置(~/.continue/config.json):
{
  "mcpServers": {
    "datadog": {
      "command": "python",
      "args": ["/path/to/datadog-mcp-python/server.py"],
      "env": {
        "DATADOG_API_KEY": "your_api_key",
        "DATADOG_APP_KEY": "your_app_key"
      }
    }
  }
}

光标

  1. 打开光标设置
  2. 添加MCP服务器配置:
{
  "mcp.servers": {
    "datadog": {
      "command": "python",
      "args": ["/path/to/datadog-mcp-python/server.py"],
      "env": {
        "DATADOG_API_KEY": "your_api_key",
        "DATADOG_APP_KEY": "your_app_key"
      }
    }
  }
}

亚马逊Q开发者

  1. 在Q Developer设置中配置:
{
  "mcpServers": {
    "datadog-mcp": {
      "command": "python3",
      "args": ["/path/to/datadog-mcp-python/server.py"],
      "env": {
        "DATADOG_API_KEY": "your_api_key",
        "DATADOG_APP_KEY": "your_app_key",
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

克劳德桌面版

添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "datadog": {
      "command": "python",
      "args": ["/path/to/datadog-mcp-python/server.py"],
      "env": {
        "DATADOG_API_KEY": "your_api_key",
        "DATADOG_APP_KEY": "your_app_key"
      }
    }
  }
}

Gemini CLI

  1. 安装支持MCP的Gemini CLI
  2. 配置服务器:
gemini mcp add datadog python /path/to/datadog-mcp-python/server.py \
  --env DATADOG_API_KEY=your_api_key \
  --env DATADOG_APP_KEY=your_app_key

通用MCP客户端

对于任何兼容MCP的客户端,请使用以下连接详细信息:

  • 运输标准: stdio
  • 命令: python server.py
  • 工作目录: /path/to/datadog-mcp-python/
  • 环境变量: DATADOG_API_KEY, DATADOG_APP_KEY

可用工具(共44个)

度量与监控(9个工具)

  • validate_api_key -测试API证书
  • get_metrics -查询时间序列数据
  • search_metrics -按模式查找指标
  • get_metric_metadata -获取度量元数据
  • get_monitors -列出监控警报
  • get_monitor -获取特定监视器详细信息
  • create_monitor -创建新的监控警报
  • update_monitor -更新现有监视器
  • delete_monitor -删除监视器

仪表板和可视化(5个工具)

  • get_dashboards -列出所有仪表板
  • get_dashboard -获取仪表板详细信息
  • create_dashboard -创建新仪表板
  • update_dashboard -更新现有仪表板
  • delete_dashboard -删除仪表板

日志和事件(4个工具)

  • search_logs -搜索日志条目
  • get_events -获取系统事件
  • get_event -获取特定事件
  • search_events -搜索事件(v2)

基础设施和标签(5个工具)

  • get_infrastructure -获取主机信息
  • get_service_map -获取服务依赖关系
  • get_tags -获取主机标签
  • get_downtimes -获得预定的停机时间
  • create_downtime -创建计划停机时间

测试和应用(2个工具)

  • get_synthetics_tests -获取合成测试
  • get_rum_applications -获取RUM应用程序

安全与事故(11个工具)

  • get_security_rules -获取安全监控规则
  • get_incidents -获取事件数据(带分页)
  • get_slos -获取服务级别目标
  • get_notebooks -获取Datadog笔记本电脑
  • create_notebook -创建Datadog笔记本
  • update_notebook -更新数据狗笔记本。
  • search_error_tracking_issues -搜索错误跟踪问题
  • get_error_tracking_issue -获取错误跟踪问题详细信息
  • update_error_tracking_issue_state -更新错误跟踪问题状态
  • update_error_tracking_issue_assignee -更新错误跟踪受让人
  • remove_error_tracking_issue_assignee -删除错误跟踪受让人

团队和用户(2个工具)

  • get_teams -组建团队
  • get_users -获取用户

实用程序(2个工具)

  • analyze_data -分析缓存数据
  • cleanup_cache -清理旧缓存文件

用法示例

一旦连接到MCP客户端,您就可以使用自然语言与Datadog进行交互:

监控示例

  • “显示当前正在发出警报的所有监视器”
  • “为超过80%的高CPU使用率创建监视器”
  • “获取system.cpu.user在过去一小时内的指标”
  • “搜索所有与内存相关的指标”

仪表板示例

  • “列出我的所有仪表板”
  • “创建用于系统监控的新仪表板”
  • “在我的主仪表板中显示小部件”

基础设施示例

  • “显示所有主机及其状态”
  • “获取我的应用程序的服务地图”
  • “列出生产主机的所有标签”

事件管理

  • “显示所有活动事件”
  • “获取最新的安全监控规则”
  • “列出所有SLO及其当前状态”

配置

服务器使用最新的Datadog API客户端,具有:

  • AsyncApiClient用于非阻塞操作
  • 根据速率限制自动重试(429个错误)
  • 3次具有指数回退的重试尝试
  • 为分页启用了不稳定操作

🏗️ 建筑

核心组件

  • DatadogMCP服务器:具有API客户端管理功能的主服务器类
  • DatadogConfig:用于配置验证的Pydantic模型
  • 工具操作员:每个API终结点的单独异步函数
  • 数据存储:使用时间戳自动缓存JSON文件
  • 分析引擎:内置数据分析功能

数据流

  1. 请求:带参数的MCP客户端调用工具
  2. API调用:服务器向Datadog API发出经过身份验证的请求
  3. 存储:响应数据缓存到本地JSON文件
  4. 分析:可选的内置数据分析
  5. 回应:摘要和文件路径返回给客户端

📈 演出

异步实现

  • 所有API调用都是异步的
  • 非阻塞文件I/O操作
  • 大型数据集的高效内存使用

速率限制

  • 遵守Datadog API费率限制
  • 具有指数回退的自动重试逻辑
  • 批量操作的高效批处理

代码使用示例

# Create a monitor
create_monitor(
    name="High CPU Usage",
    monitor_type="metric alert", 
    query="avg(last_5m):avg:system.cpu.user{*} > 0.8",
    message="CPU usage is high @slack-alerts"
)

# Create a dashboard
create_dashboard(
    title="System Overview",
    layout_type="ordered",
    widgets=[{
        "definition": {
            "type": "timeseries",
            "requests": [{"q": "avg:system.cpu.user{*}"}]
        }
    }]
)

# Schedule downtime
create_downtime(
    scope=["host:web-server-01"],
    start=1640995200,
    end=1640998800,
    message="Scheduled maintenance"
)

安全和功能

  • 读/写操作 -创建、读取、更新支持
  • 选择性突变 -仅在支持的地方编写工具
  • 本地数据缓存 -所有结果均以JSON文件存储在本地
  • 错误处理 -全面的异常管理
  • 分页支持 -高效处理大型数据集
  • 类型安全性 -完整的类型提示贯穿始终
  • 速率限制 -自动重试API限制

发展

设置

# Install development dependencies
pip install -r requirements.txt
pip install pytest pytest-cov black flake8 mypy

# Format code
black server.py
flake8 server.py --max-line-length=88

# Run tests
cd tests && python -m pytest --cov=../server

添加新工具

  1. 添加新方法 DatadogMCPServer 类
  2. 用…装饰 @self.mcp.tool()
  3. 实施适当的错误处理和数据存储
  4. 添加测试并更新文档

故障排除

常见问题

  1. 认证错误:验证您的 DATADOG_API_KEY 和 DATADOG_APP_KEY 是正确的
  2. 连接问题:确保服务器正在运行且可访问
  3. 权限错误:检查您的API密钥是否具有必要的权限
  4. 速率限制:服务器通过重试自动处理速率限制

调试模式

通过设置启用调试日志记录:

export DATADOG_DEBUG=true

许可证

MIT许可证-有关详细信息,请参阅许可证文件。