使用说明
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密钥
- 转到Datadog组织设置:
https://app.datadoghq.com/organization-settings/api-keys - 点击 +新密钥 创建API密钥
- 转到应用程序密钥:
https://app.datadoghq.com/organization-settings/application-keys - 点击 +新密钥 创建应用程序密钥
所需范围:
| 范围 | 权限 | 需要 |
|---|---|---|
| 日志 | 读取 | 日志搜索操作 |
| 监视器 | 阅读 | 监视器列表和详细信息 |
| 度量 | 读取 | 度量查询和元数据 |
| 事件 | 阅读 | 事件列表和详细信息 |
| 仪表板 | 阅读 | 仪表板列表和详细信息 |
- 立即复制两个密钥(您将不会再看到它们!)
数据狗网站:
| 地区 | 网站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
-
验证服务器是否正在运行:
# Docker docker compose ps # Check if port is in use netstat -an | grep 8081 # or 5100 -
检查日志是否有错误:
# Docker docker compose logs # .NET CLI - errors appear in terminal
Authentication failed / 403 Forbidden
- 验证您的API密钥和应用程序密钥是否正确
- 检查Datadog中的密钥是否未被撤销
- 确保密钥具有所需的范围/权限
- 验证Datadog网站是否适合您所在的地区
No data returned from queries
- 验证时间范围是否包含数据
- 检查您的查询语法是否与Datadog的查询语言匹配
- 确保您的API密钥可以访问请求的数据
Docker: Container exits immediately
- 检查是否
.env文件存在并且具有所需的凭据 - 查看日志:
docker compose logs - 确保端口8081未被其他应用程序使用
.NET CLI: dotnet run fails
- 核实。NET 10 SDK已安装:
dotnet --version - 还原包:
dotnet restore - 检查环境变量是否设置正确
项目结构
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许可证.