返回市场
MCP服务器DataDog

MCP服务器DataDog

作者:ndevvy2 星标更新:2025-04-16

项目介绍

Datadog MCP Server

用于Datadog API的MCP服务器,支持事件管理和更多功能。从https://github.com/winor30/mcp-server-datadog 分支而来。

功能

  • 可观测性工具:提供一种机制,通过MCP服务器利用Datadog监控的关键特性,如事件、监视器、日志、仪表板和指标。
  • 可扩展设计:设计易于集成到额外的Datadog API中,允许无缝地扩展未来功能。

工具

  1. list_incidents

    • 从Datadog检索事件列表。
    • 输入
      • pageSize(可选数字):每页返回的最大事件数。
      • pageOffset(可选数字):分页偏移量。
    • 返回:Datadog事件及其相关元数据数组。
  2. get_incident

    • 检索特定Datadog事件的详细信息。
    • 输入
      • incidentId(字符串):要获取详细信息的事件ID。
    • 返回:详细的事件信息(标题、状态、时间戳等)。
  3. get_monitors

    • 获取Datadog监视器的状态。
    • 输入
      • groupStates(可选数组):过滤状态(例如,告警、警告、无数据、正常)。
      • name(可选字符串):按名称过滤。
      • tags(可选数组):按标签过滤。
    • 返回:监视器数据及其状态摘要。
  4. get_logs

    • 在Datadog中搜索并检索日志。
    • 输入
      • query(可选字符串):Datadog日志查询字符串。
      • from(数字):开始时间(以纪元秒为单位)。
      • to(数字):结束时间(以纪元秒为单位)。
      • limit(可选数字):返回的最大日志数(默认为100)。
    • 返回:匹配的日志数组。
  5. list_dashboards

    • 从Datadog获取仪表板列表。
    • 输入
      • name(可选字符串):按名称过滤仪表板。
      • tags(可选数组):按标签过滤仪表板。
    • 返回:带有URL引用的仪表板数组。
  6. get_dashboard

    • 从Datadog检索特定仪表板。
    • 输入
      • dashboardId(字符串):要获取的仪表板ID。
    • 返回:包括标题、小部件等在内的仪表板详细信息。
  7. create_dashboard

    • 在Datadog中创建新的仪表板。
    • 输入
      • title(字符串):仪表板的标题。
      • description(可选字符串):仪表板的描述。
      • layoutType(可选字符串):布局类型('ordered'或'free',默认为'ordered')。
      • widgets(可选数组):要添加到仪表板的小部件。
      • tags(可选数组):与仪表板关联的标签列表。
    • 返回:包括ID和URL在内的已创建仪表板的详细信息。
  8. query_metrics

    • 从Datadog检索指标数据。
    • 输入
      • query(字符串):指标查询字符串(例如,“avg:system.cpu.user{*}”)。
      • from(数字):开始时间(以纪元秒为单位)。
      • to(数字):结束时间(以纪元秒为单位)。
    • 返回:查询时间段内的指标数据。
  9. get_metric_metadata

    • 获取Datadog中特定指标的元数据。
    • 输入
      • metricName(字符串):要获取元数据的指标名称。
    • 返回:指定指标的元数据信息。
  10. get_active_metrics

    • 获取活动指标列表,并可选地通过主机、标签和搜索查询进行过滤。
    • 输入
      • query(字符串):用于查找指标的搜索查询字符串。
      • from(可选数字):开始查询的时间戳(默认:24小时前)。
      • host(可选字符串):按主机过滤指标。
      • tagFilter(可选字符串):按标签过滤指标(例如“env:prod,region:us-east”)。
    • 返回:匹配搜索查询的指标列表以及基于过滤器的活动指标。
  11. analyze_tag_relationships

    • 展示跨指标的标签之间的层级关系。
    • 输入
      • from(可选数字):开始分析标签的时间戳(默认:现在 - 1天)。
      • limit(可选数字):要分析的最大标签关系数(默认:50)。
      • metricPrefix(可选字符串):用于过滤指标的可选前缀(例如,“system.”或“aws.”)。
    • 返回:标签关系的分析结果,展示标签如何层级相关。
  12. analyze_tag_cardinality

    • 识别可能导致性能问题的高基数标签。
    • 输入
      • from(可选数字):开始分析标签的时间戳(默认:现在 - 1天)。
      • limit(可选数字):要分析的最大标签数(默认:50)。
      • metricPrefix(可选字符串):用于过滤指标的可选前缀(例如,“system.”或“aws.”)。
      • minCardinality(可选数字):报告的最小基数阈值(默认:10)。
    • 返回:可能影响性能的高基数标签的分析结果。
  13. visualize_tag_co_occurrence

    • 可视化特定指标的标签经常一起出现的情况。
    • 输入
      • metricName(字符串):要分析标签的指标名称。
      • from(可选数字):开始分析标签的时间戳(默认:现在 - 1天)。
      • limit(可选数字):要分析的最大标签对数(默认:20)。
    • 返回:指定指标的标签共现模式的可视化结果。
  14. search_events

    • 在Datadog中搜索事件。
    • 输入
      • query(字符串):Datadog事件查询字符串。
      • from(可选字符串):开始时间,可以是纪元秒或相对时间(例如,“now-40m”)(默认:“now-24h”)。
      • to(可选字符串):结束时间,可以是纪元秒或相对时间(例如,“now”)(默认:“now”)。
      • limit(可选数字):返回的最大事件数(默认:100)。
      • sort(可选字符串):事件排序顺序(默认:“-timestamp”)。
    • 返回:来自Datadog的匹配事件数组。
  15. list_traces

    • 从Datadog检索APM跟踪列表。
    • 输入
      • query(字符串):Datadog APM跟踪查询字符串。
      • from(数字):开始时间(以纪元秒为单位)。
      • to(数字):结束时间(以纪元秒为单位)。
      • limit(可选数字):返回的最大跟踪数(默认为100)。
      • sort(可选字符串):跟踪排序顺序(默认为'-timestamp')。
      • service(可选字符串):按服务名称过滤。
      • operation(可选字符串):按操作名称过滤。
    • 返回:来自Datadog APM的匹配跟踪数组。
  16. list_apm_services

    • 从Datadog获取APM服务列表。
    • 输入
      • limit(可选数字):返回的最大服务数(默认为100)。
    • 返回:可用的APM服务列表。
  17. list_apm_resources

    • 从Datadog获取特定服务的APM资源列表。
    • 输入
      • service(字符串):要筛选资源的服务名称。
      • entry_spans_only(可选布尔值):仅显示服务入口跨度。
      • limit(可选数字):返回的最大资源数(默认为100)。
      • search_query(可选字符串):用于筛选资源名称的搜索查询。
    • 返回:指定服务的资源列表。
  18. list_apm_operations

    • 从Datadog获取特定服务的顶级操作名称列表。
    • 输入
      • service(字符串):要筛选操作的服务名称。
      • entry_spans_only(可选布尔值):仅显示服务入口跨度。
      • limit(可选数字):返回的最大操作数(默认为100)。
    • 返回:指定服务的操作名称列表。
  19. get_resource_hash

    • 获取特定资源名称在服务中的资源哈希。
    • 输入
      • service(字符串):资源所属的服务名称。
      • resource_name(字符串):要获取哈希的资源名称。
    • 返回:资源哈希信息。
  20. get_all_services

    • 从日志中提取所有唯一的服务名称。
    • 输入
      • from(可选数字):开始时间(以纪元秒为单位,默认为24小时前)。
      • to(可选数字):结束时间(以纪元秒为单位,默认为当前时间)。
      • limit(可选数字):要搜索的日志最大数量(默认为1000)。
      • query(可选字符串):用于日志搜索的可选查询过滤器。
    • 返回:在日志中找到的所有唯一服务名称列表。
  21. list_hosts

    • 从Datadog获取主机列表。
    • 输入
      • filter(可选字符串):搜索结果的过滤字符串。
      • sort_field(可选字符串):用于排序主机的字段。
      • sort_dir(可选字符串):排序方向(升序/降序)。
      • start(可选数字):分页的起始偏移量。
      • count(可选数字):要返回的最大主机数(最大:1000)。
      • from(可选数字):从这个UNIX时间戳开始搜索主机。
      • include_muted_hosts_data(可选布尔值):是否包含静音主机的状态和过期时间。
      • include_hosts_metadata(可选布尔值):是否包含主机元数据(版本、平台等)。
    • 返回:带有详细信息的主机数组。
  22. get_active_hosts_count

    • 获取Datadog中活跃主机的总数。
    • 输入
      • from(可选数字):从这个秒数开始获取活跃主机的总数(默认为2小时)。
    • 返回:活跃且在线的主机总数。
  23. mute_host

    • 在Datadog中静音主机。
    • 输入
      • hostname(字符串):要静音的主机名称。
      • message(可选字符串):与该主机静音相关的消息。
      • end(可选数字):静音应结束的POSIX时间戳。
      • override(可选布尔值):如果为真且主机已经静音,则替换现有的结束时间。
    • 返回:成功状态和确认消息。
  24. unmute_host

    • 在Datadog中取消静音主机。
    • 输入
      • hostname(字符串):要取消静音的主机名称。
    • 返回:成功状态和确认消息。
  25. list_notebooks

    • 从Datadog获取笔记本列表。
    • 输入
      • query(可选字符串):返回只有笔记本名称或作者处理程序中包含此查询字符串的笔记本。
      • authorHandle(可选字符串):返回由给定作者处理程序创建的笔记本。
      • excludeAuthorHandle(可选字符串):返回不是由给定作者处理程序创建的笔记本。
      • start(可选数字):要返回的第一个笔记本的索引。
      • count(可选数字):要返回的笔记本数量。
      • sortField(可选字符串):按字段排序(修改、名称、创建)。
      • sortDir(可选字符串):排序方向(升序、降序)。
      • type(可选字符串):只返回具有该元数据类型的笔记本。
      • isTemplate(可选布尔值):真值返回只有模板笔记本。
      • includeCells(可选布尔值):假值排除每个笔记本的单元格和全局时间。
    • 返回:符合指定条件的笔记本列表。
  26. get_notebook

    • 从Datadog获取笔记本。
    • 输入
      • notebookId(数字):要检索的笔记本的唯一ID。
    • 返回:请求笔记本的详细信息,包括单元格和元数据。
  27. create_notebook

    • 在Datadog中创建新的笔记本。
    • 输入
      • name(字符串):笔记本的名称。
      • cells(可选数组):要包含在笔记本中的单元格。
      • time(可选字符串):笔记本的时间设置(默认为'1h')。
      • metadata(可选对象):笔记本的附加元数据。
    • 返回:已创建笔记本的详细信息。
  28. add_cell_to_notebook

    • 向现有Datadog笔记本添加单元格。
    • 输入
      • notebookId(数字):要添加单元格的笔记本ID。
      • cell(对象):要添加的单元格定义。
    • 返回:更新后的笔记本信息。
  29. list_downtimes

    • 列出Datadog中的计划停机时间。
    • 输入
      • currentOnly(可选布尔值):当为真时,仅返回当前活跃的停机时间。
    • 返回:带有详细信息的计划停机时间数组。
  30. schedule_downtime

    • 在Datadog中安排停机时间。
    • 输入
      • scope(字符串):应用停机时间的作用域(例如“host:my-host”)。
      • start(可选数字):停机时间的开始时间(UNIX时间戳)。
      • end(可选数字):停机时间的结束时间(UNIX时间戳)。
      • message(可选字符串):包含在停机时间中的消息。
      • timezone(可选字符串):停机时间的时区。
      • monitorId(可选数字):要静音的监视器ID。
      • monitorTags(可选数组):用于筛选的监视器标签列表。
      • recurrence(可选对象):停机时间的重复设置。
    • 返回:已安排的停机时间详细信息,包括ID和活动状态。
  31. cancel_downtime

    • 取消Datadog中的计划停机时间。
    • 输入
      • downtimeId(数字):要取消的停机时间ID。
    • 返回:停机时间取消的确认信息。

配置

Datadog凭证

需要有效的Datadog API凭证来使用此MCP服务器:

  • DATADOG_API_KEY:您的Datadog API密钥
  • DATADOG_APP_KEY:您的Datadog应用程序密钥
  • DATADOG_SITE(可选):Datadog站点(例如datadoghq.eu

在运行服务器之前,请在环境中导出它们:

export DATADOG_API_KEY="your_api_key"
export DATADOG_APP_KEY="your_app_key"
export DATADOG_SITE="your_datadog_site"

安装

通过Smithery安装

要通过Smithery自动安装Datadog MCP服务器:

npx -y @smithery/cli install @ndevvy/mcp-server-datadog --client claude

手动安装

pnpm install
pnpm build
pnpm watch   # 开发时自动重建

使用

添加到您的claude_desktop_config.json.cursor/mcp.json

{
  "mcpServers": {
    "datadog": {
      "command": "/path/to/mcp-server-datadog/build/index.js",
      "env": {
        "DATADOG_API_KEY": "<YOUR_API_KEY>",
        "DATADOG_APP_KEY": "<YOUR_APP_KEY>",
        "DATADOG_SITE": "<YOUR_SITE>" // 可选
      }
    }
  }
}

调试

由于MCP服务器通过标准输入/输出通信,调试有时可能会很棘手。我们建议使用MCP Inspector。您可以运行检查器:

npm run inspector

检查器将提供一个可以在浏览器中打开的URL,以查看日志并手动发送请求。

许可证

本项目根据Apache License, Version 2.0授权。