Last9

官方

无缝地将实时生产环境上下文——日志、指标和追踪——引入本地环境,从而更快地自动修复代码。

你可以用 Last9 MCP 做什么?

  • 调查服务健康状态 — 通过 get_service_summary 请求按排名排列的请求数、吞吐量和错误率舰队摘要。

  • 拉取原始服务日志 — 使用 get_service_logs 按严重级别或正文内容检索特定服务的过滤日志行。

  • 追踪数据库性能 — 使用 get_databases 及相关工具发现数据库、慢查询和查询模式。

  • 运行 PromQL 查询 — 使用 prometheus_range_query 或 prometheus_instant_query 对任意指标执行范围或即时查询。

  • 将变更与事件关联 — 获取部署和配置变更事件,以了解哪些操作改变了生产行为,通过 get_change_events。

  • 管理自定义仪表板 — 使用 list_dashboards 和 create_dashboard 以编程方式列出、创建、更新或验证仪表板。

文档

Last9 MCP 服务器

last9 mcp demo

你的 AI 代理不知道生产环境中出了什么问题。这个可以解决。

Last9 MCP 服务器 将 Claude、Cursor、Windsurf 以及任何其他支持 MCP 的 AI 助手直接连接到你的生产可观测性数据——日志、指标、追踪、异常、数据库查询、告警和部署。代理不再猜测,而是直接读取真实信号。


30 秒内开始使用(托管版)

无需安装二进制文件,无需管理令牌。一个 URL,浏览器中完成 OAuth,搞定。

在你的 Last9 URL 中找到你的组织 slug:app.last9.io/<org_slug>/...

Claude Code

claude mcp add --transport http last9 https://app.last9.io/api/v4/organizations/<org_slug>/mcp

输入 /mcp,选择 last9,完成认证。就这样。

Cursor

设置 > MCP > 添加新的 MCP 服务器:

{
  "mcpServers": {
    "last9": {
      "type": "http",
      "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

点击 连接,完成 OAuth。

VS Code

需要 v1.99+。打开命令面板 → MCP: 添加服务器,粘贴 URL,完成认证。

或者直接在 settings.json 中:

{
  "mcp": {
    "servers": {
      "last9": {
        "type": "http",
        "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
      }
    }
  }
}

Windsurf

设置 > Cascade > 打开 MCP 市场 > 齿轮图标(mcp_config.json):

{
  "mcpServers": {
    "last9": {
      "serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

Claude Web/桌面版

设置 > 连接器 > 添加自定义连接器。 命名为 last9,粘贴 URL,完成认证。

需要你的 Claude 组织的管理员权限。


自托管(STDIO)

当你的 MCP 客户端不支持 HTTP 传输,或者你需要服务器在本地运行时,请使用此方式。

安装

Homebrew:

brew install last9/tap/last9-mcp

NPM:

npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest

二进制发布版(Windows / 手动安装):

从 GitHub Releases 下载:

平台归档文件
Windows (x64)last9-mcp-server_Windows_x86_64.zip
Windows (ARM64)last9-mcp-server_Windows_arm64.zip
Linux (x64)last9-mcp-server_Linux_x86_64.tar.gz
Linux (ARM64)last9-mcp-server_Linux_arm64.tar.gz
macOS (x64)last9-mcp-server_Darwin_x86_64.tar.gz
macOS (ARM64)last9-mcp-server_Darwin_arm64.tar.gz

获取刷新令牌

只有管理员才能创建令牌。

  1. 前往 API 访问
  2. 点击 生成令牌,并选择写入权限
  3. 复制令牌

客户端配置

Homebrew:

{
  "mcpServers": {
    "last9": {
      "command": "/opt/homebrew/bin/last9-mcp",
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

NPM:

{
  "mcpServers": {
    "last9": {
      "command": "npx",
      "args": ["-y", "@last9/mcp-server@latest"],
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

粘贴位置:

客户端位置
Claude Web/桌面版设置 > 开发者 > 编辑配置(claude_desktop_config.json)
Cursor设置 > Cursor 设置 > MCP > 添加新的全局 MCP 服务器
Windsurf设置 > Cascade > MCP 市场 > 齿轮图标(mcp_config.json)
VS Code在 settings.json 中包裹在 { "mcp": { "servers": { ... } } } 中 — 详情
VS Code STDIO 配置
{
  "mcp": {
    "servers": {
      "last9": {
        "type": "stdio",
        "command": "/opt/homebrew/bin/last9-mcp",
        "env": {
          "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
        }
      }
    }
  }
}

对于 NPM:使用 "command": "npx" 并添加 "args": ["-y", "@last9/mcp-server@latest"]。

Windows

从 GitHub Releases 下载后,解压并指向完整路径:

{
  "mcpServers": {
    "last9": {
      "command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

在 Windows 上使用 NPM 方式更简单——无需管理路径。

环境变量

变量默认值描述
LAST9_REFRESH_TOKEN(必填)来自 API 访问 的刷新令牌
LAST9_DATASOURCE组织默认值数据源/集群名称——当你有多个 Levitate 集群时很有用
LAST9_API_HOSTapp.last9.io覆盖 API 主机
LAST9_TOOLSETS所有工具逗号分隔的要暴露的工具集(logs、traces、metrics、alerts、dashboards、profiles、grafana、investigate、all)。别名:LAST9_MCP_TOOLSETS
LAST9_MAX_GET_LOGS_ENTRIES5000分块 get_logs 请求的最大条目数
LAST9_USE_LOG_SEARCH_APIfalse设置 true 以通过一次服务器端搜索调用回答 get_logs 和 get_service_logs,而不是客户端分块
LAST9_DEBUG_CHUNKINGfalse设置 true 以记录 get_logs、get_service_logs、get_traces 的分块规划详情
LAST9_DISABLE_TELEMETRYtrue设置 false 以启用内部 OTel 追踪
OTEL_SDK_DISABLED—标准 OTel 环境变量。覆盖 LAST9_DISABLE_TELEMETRY
OTEL_EXPORTER_OTLP_ENDPOINT—OTLP 收集器端点(仅在启用遥测时)
OTEL_EXPORTER_OTLP_HEADERS—OTLP 认证头(仅在启用遥测时)

它能做什么

服务健康

  • get_service_summary — 按排名排列的舰队 (service, env) 行:区间请求数、吞吐量(每分钟请求数)、HTTP 4xx/5xx 计数和 gRPC 错误计数
  • get_service_environments — 你的服务可用的环境。先运行这个——其他 APM 工具需要从这里获取 env
  • get_service_performance_details — 完整分解:吞吐量、错误率、p50/p90/p95/平均/最大、apdex、可用性
  • get_service_operations_summary — 按 HTTP 端点、数据库调用、消息传递、HTTP 客户端分组的操作
  • get_service_dependency_graph — 依赖关系图,包含上游/下游/基础设施的吞吐量、延迟和错误率
  • get_apm_service_deviations — 将当前窗口与等时长基线进行比较:回归/改进、Apdex 对账以及最终结果(舰队或单个服务)
  • get_exceptions — 服务器端异常,支持服务和跨度过滤器

数据库可观测性

四个直接针对数据库性能的工具,源自 OpenTelemetry 追踪跨度,在缺少追踪时则使用 CloudWatch 等基础设施指标。如果你已经在使用 OTel,则无需额外插桩。

  • get_databases — 发现你基础设施中的所有数据库:数据库类型、主机、吞吐量(每分钟查询数)、p95 延迟、错误率、依赖服务数量。还可以从 CloudWatch 等基础设施指标中发现数据库,无需追踪插桩——这些行带有活动值而非追踪指标
  • get_database_slow_queries — 实际最慢的查询执行,按持续时间排序,带有用于深入查看完整追踪的追踪 ID
  • get_database_queries — 查询模式和聚合:查询运行频率、平均/p95 持续时间、错误率
  • get_database_server_metrics — 来自数据库主机本身的服务器端指标(CPU、连接数、缓冲区命中率——取决于你的数据库系统)

支持 PostgreSQL、MySQL、MongoDB、Redis、Aerospike,以及任何其他带有 db_system 属性的 OTel 追踪——此外还包括从 CloudWatch 等基础设施指标中发现的数据库,这些行带有活动值而非追踪指标。

Prometheus / PromQL

  • prometheus_range_query — 对任何指标执行 PromQL 范围查询
  • prometheus_instant_query — 即时查询;使用 avg_over_time、sum_over_time 等聚合函数
  • prometheus_label_values — 给定序列的标签值
  • prometheus_labels — 序列可用的所有标签

通过设置 LAST9_DATASOURCE 将这些指向与默认不同的数据源/集群。

日志

  • get_logs — 完整的 JSON 管道日志查询(聚合、过滤器、字段提取)
  • get_service_logs — 服务的原始日志行,可按严重级别和正文内容过滤
  • get_log_attributes — 时间窗口内日志模式中属性的全局目录
  • get_log_attributes_for_pipeline — 进行中管道实际存在的日志字段(范围发现),每个字段带有其精确的 filter_field
  • get_drop_rules — 来自 Last9 控制平面 的日志丢弃规则
  • add_drop_rule — 创建新的丢弃规则以从源头削减日志量

追踪

  • get_traces — JSON 管道追踪查询,用于广泛搜索和聚合
  • get_service_traces — 按精确追踪 ID 或服务名称查找追踪。当你拥有追踪 ID 时使用此工具——速度更快
  • get_trace_attributes — 追踪模式中属性的全局目录
  • get_trace_attributes_for_pipeline — 进行中管道实际存在的属性(范围发现),每个属性带有其精确的 filter_field
  • get_trace_attribute_values — 追踪属性的不同值,可选择限定到管道
  • get_trace_attribute_deviations — 对两个有界跨度队列(慢与快、错误与非错误,或两个时间窗口)之间不同的属性值进行排名。相关性,而非因果性
  • get_trace_waterfall — 一条精确的追踪,以父/子瀑布图形式展示,包含区间并集自身时间、最慢跨度和图警告

变更事件与告警

  • get_change_events — 部署、配置变更、回滚。将事件与变更内容关联起来
  • get_alert_groups — 已配置的 Compass 告警组,包含元数据标签、团队、层级和规则计数——包括零规则组和未触发组
  • get_alert_config — 告警规则配置——可按名称、严重级别、类型、标签搜索
  • get_alerts — 时间窗口内当前触发的告警
  • get_alert_rule_state — 时间范围内每个告警规则的历史触发状态(1/0),按 rule_id 分组。可按告警组、规则名称、标签过滤器和状态过滤。
  • get_notification_channels — 已配置的通知渠道(Slack、PagerDuty、电子邮件等)

自定义仪表板

  • list_dashboards — 你组织中的所有自定义仪表板:ID、名称和元数据
  • get_dashboard — 按 ID 获取完整仪表板定义,包括面板和查询
  • validate_dashboard — 对保存的仪表板 ID 或内联 dashboard_definition 在 ≤24 小时窗口内执行只读 lint + 执行 + 分类。绝不创建或更新仪表板
  • create_dashboard — 一次性创建全新的自定义仪表板(面板、查询、元数据)。返回 ID 后,使用 update_dashboard 进行细化。
  • update_dashboard — 按 ID 细化现有仪表板(完全替换;只读系统仪表板返回错误)
  • delete_dashboard — 按 ID 删除自定义仪表板
  • list_dashboard_snapshots — 仪表板的冻结时间点快照(仅元数据)
  • get_dashboard_snapshot — 完整冻结快照,包括用于 RCA/可共享视图的面板数据
  • delete_dashboard_snapshot — 按 ID 删除冻结快照

持续性能分析

需要为组织启用持续性能分析。首先使用 get_profile_services 发现服务,然后拉取火焰图或排名函数。

  • get_profile_services — 在窗口内具有性能分析数据的服务(查询前先索引)
  • get_flamegraph — 单个服务的嵌套火焰图树(默认 cpu;也支持 alloc、wall)
  • get_top_functions — 单个服务最热函数的自身采样排名
  • get_profile_summary — 单个服务性能分析的简短自然语言分类

Grafana 仪表板

针对组织 Grafana 实例的只读工具(通过 Last9 的 Grafana 代理)。凭据字段永远不会返回给模型。使用 LAST9_TOOLSETS=grafana 启用(或保持工具集未设置以启用所有工具)。

  • grafana_search_dashboards — 按标题子字符串搜索仪表盘(分页;达到上限时返回 truncated: true)
  • grafana_get_dashboard — 按 uid 获取仪表盘摘要(面板、变量、PromQL 目标);full_json=true 用于获取原始 Grafana JSON
  • grafana_list_folders — 文件夹树
  • grafana_list_folder_dashboards — 单个文件夹中的仪表盘(分页)
  • grafana_list_datasources — 不含凭据的数据源清单

模糊名称解析

  • did_you_mean — 当代理不确定实体名称时,此工具从您的目录中返回最接近的匹配项(服务、环境、主机、数据库、K8s 部署/命名空间、作业)。最多返回 3 条建议及相似度分数。当名称查找返回空结果时,服务器会在大多数工具之前自动调用此功能。

服务画像

  • get_service_profile — 在查询之前,了解服务的遥测数据实际形态:存在哪些信号、语言和运行时、部署环境、日志的形态,以及适用的推荐摄取修复方案。当服务没有追踪数据时,让代理跳过追踪工具;当 SeverityText 为空时,从日志正文解析严重级别,而不是过滤后一无所获。

工作原理

每个响应都包含深度链接。 每个工具都返回一个 deep_link 字段——一个直接指向 Last9 仪表盘中该确切查询和时间范围的 URL。代理可以将链接交给您;您点击即可直达。

工具集。 默认情况下,服务器暴露所有工具。仅需调查(日志/追踪/指标/画像)的自动化主机可以设置 LAST9_TOOLSETS=investigate(或传递 --toolsets=investigate),以便 tools/list 保持精简,而无需在客户端进行批量禁用。命名包:logs、traces、metrics、alerts、dashboards、profiles、grafana、investigate、all。未知名称会快速失败。单独的 metrics 包不包含 list_datasources 或 did_you_mean——当您需要这些发现辅助工具时,请使用 investigate(或组合工具集)。

工具参考资源。 较长的 logjson/tracejson/service-logs/metrics 手册是 MCP 资源(last9://reference/logjson、last9://reference/tracejson、last9://reference/service_logs、last9://reference/metrics、last9://reference/investigation),而非常驻的工具描述文本。关键的查询规则保留在工具描述中,以便从不调用 resources/read 的代理仍能获得正确的构建指导。使用 get_log_attributes / get_log_attributes_for_pipeline(以及对应的追踪等价工具)发现组织特定字段——它们不会被注入到描述中。

大结果集分块。 get_logs 和 get_traces 通过分块而非截断来处理大型结果集。日志的默认限制为 5000 条;可通过 LAST9_MAX_GET_LOGS_ENTRIES 配置。


开发

HTTP 模式、curl 测试、从源码构建

以 HTTP 模式运行

export LAST9_REFRESH_TOKEN="your_refresh_token"
export LAST9_HTTP=true
export LAST9_PORT=8080
./last9-mcp-server

服务器启动于 http://localhost:8080/mcp。

使用 curl 测试

Streamable HTTP 处理器以无状态模式运行,因此任何请求都独立处理。initialize 握手和 Mcp-Session-Id 头是可选的——发送它们的客户端仍然可以工作(该头会被接受并忽略),客户端也可以直接跳到 tools/list / tools/call。每个工具都是独立的请求/响应查询;服务器不会发出服务器到客户端的通知,因此 GET /mcp(SSE 流)返回 405。

# List tools — a session handshake is optional in stateless mode
curl -s -X POST http://localhost:8080/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'

# Call a tool
curl -s -X POST http://localhost:8080/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/call",
      "params": {
        "name": "get_service_logs",
        "arguments": {
          "service_name": "your-service-name",
          "lookback_minutes": 30,
          "limit": 10
        }
      }
    }'

从源码构建

git clone https://github.com/last9/last9-mcp-server.git
cd last9-mcp-server
go build -o last9-mcp-server
LAST9_HTTP=true ./last9-mcp-server

LAST9_HTTP=true 用于本地开发。实际使用中,托管 HTTP 端点 更为便捷。


工具参考

所有参数、时间输入标准及详细信息

时间输入

  • 绝对时间(start_time_iso/end_time_iso,或 time_iso)优先于 lookback_minutes。
  • 相对时间窗口:使用 lookback_minutes。
  • 绝对时间窗口:使用 RFC3339/ISO8601 — 2026-02-09T15:04:05Z。
  • 旧版 YYYY-MM-DD HH:MM:SS 仅出于兼容性考虑而被接受。

get_exceptions

  • limit(整数,可选):最大异常数。默认值:20。
  • lookback_minutes(整数,可选):默认值:60。
  • start_time_iso / end_time_iso(字符串,可选):绝对时间范围。
  • service_name(字符串,可选):按服务过滤。
  • span_name(字符串,可选):按 span 名称过滤。
  • env(字符串,可选):按环境过滤。

get_service_summary

  • start_time_iso / end_time_iso(字符串,可选)
  • env(字符串,可选):PromQL 正则表达式。默认为 .*。精确匹配需要锚点(例如 ^prod$)。
  • sort_by(字符串,可选):request_count(默认)、throughput_rpm、http_4xx_count、http_5xx_count 或 grpc_error_count。
  • limit(整数,可选):最大排名行数。省略或 0 表示 10;超过 100 的值将被限制为 100。

get_service_environments

  • start_time_iso / end_time_iso(字符串,可选)

所有其他 APM 工具都需要 env 值。如果此工具返回空,请使用 ""。

get_service_performance_details

  • service_name(字符串,必填)
  • lookback_minutes(整数,可选):默认值:60。
  • start_time_iso / end_time_iso(字符串,可选)
  • env(字符串,可选):默认为 prod。

get_service_operations_summary

  • service_name(字符串,必填)
  • lookback_minutes(整数,可选):默认值:60。
  • start_time_iso / end_time_iso(字符串,可选)
  • env(字符串,可选):默认为 prod。

get_service_dependency_graph

  • service_name(字符串,可选)
  • lookback_minutes(整数,可选):默认值:60。
  • start_time_iso / end_time_iso(字符串,可选)
  • env(字符串,可选):默认为 prod。

get_apm_service_deviations

  • service_name(字符串,可选):省略以获取整个集群范围;提供以获取单个服务及其操作相关性。
  • lookback_minutes(整数,可选):当前窗口。默认值:60。
  • start_time_iso / end_time_iso(字符串,可选):显式当前窗口。
  • baseline_start_time_iso / baseline_end_time_iso(字符串,可选):显式基线。默认为紧邻的前一个等时长窗口。
  • datasource(字符串,可选):将比较限制为单个数据源。
  • env(字符串,可选):默认为 prod。
  • max_services / max_operations(整数,可选):默认 10,每个最大 10。

get_databases

  • env(字符串,可选):按环境过滤。接受正则表达式。默认:全部。
  • lookback_minutes(整数,可选):默认值:60。窗口不得超过 7 天。
  • start_time_iso / end_time_iso(字符串,可选)

get_database_slow_queries

  • db_system(字符串,可选):例如 postgresql、mysql、mongodb、redis。
  • host(字符串,可选):数据库主机(net_peer_name)。
  • service_name(字符串,可选):调用服务名称。
  • env(字符串,可选)
  • min_duration_ms(浮点数,可选):最小查询时长(毫秒)。
  • lookback_minutes(整数,可选):默认值:60。
  • start_time_iso / end_time_iso(字符串,可选)
  • limit(整数,可选):默认值:20。

get_database_queries

  • db_system(字符串,可选)
  • host(字符串,可选)
  • service_name(字符串,可选)
  • env(字符串,可选)
  • lookback_minutes(整数,可选):默认值:60。
  • start_time_iso / end_time_iso(字符串,可选)
  • limit(整数,可选):默认值:20。

get_database_server_metrics

  • db_system(字符串,必填):例如 postgresql、mysql、mongodb、redis、aerospike。
  • host(字符串,可选)
  • lookback_minutes(整数,可选):默认值:60。
  • start_time_iso / end_time_iso(字符串,可选)

prometheus_range_query

  • query(字符串,必填):PromQL 查询。
  • start_time_iso / end_time_iso(字符串,可选):默认为最近 60 分钟。
  • lookback_minutes(浮点数,可选):默认值:60。

prometheus_instant_query

  • query(字符串,必填)
  • time_iso(字符串,可选):默认为当前时间。
  • lookback_minutes(浮点数,可选)

prometheus_label_values

  • match_query(字符串,可选):PromQL 过滤器。
  • label(字符串,必填):标签名称。
  • start_time_iso / end_time_iso(字符串,可选)

prometheus_labels

  • match_query(字符串,可选):PromQL 过滤器。
  • start_time_iso / end_time_iso(字符串,可选)

get_logs

  • logjson_query(数组,必填):JSON 管道查询。
  • lookback_minutes(整数,可选):默认值:5。
  • start_time_iso / end_time_iso(字符串,可选)
  • limit(整数,可选):服务器默认值:5000。
  • index(字符串,可选):physical_index:<name> 或 rehydration_index:<block_name>。

对于基于日志的服务清单,首先查询 physical_index_service_count:

sum by (name, service_name, env) (physical_index_service_count{destination="logs"})

使用 service_name 作为 ServiceName,env 作为环境(当存在时),name 作为物理索引名称。如果 name="default",省略 index;对于用户选择的非默认物理索引,传递 index: "physical_index:<name>"。如果后端拒绝显式物理索引过滤,请在不带 index 的情况下重试,并报告该后端不支持显式物理索引过滤。

get_service_logs

  • service_name(字符串,必填)
  • lookback_minutes(整数,可选):默认值:60。
  • limit(整数,可选):默认值:20。
  • env(字符串,可选)
  • severity_filters(数组,可选):例如 ["error", "warn"]。OR 逻辑。
  • body_filters(数组,可选):例如 ["timeout", "failed"]。OR 逻辑。
  • start_time_iso / end_time_iso(字符串,可选)
  • index(字符串,可选)

多种过滤类型以 AND 组合。每个数组内部使用 OR。 首先使用 get_logs 获取广泛的聚合计数;仅在缩小到服务/环境/索引和小样本集后使用 get_service_logs。

get_log_attributes

  • lookback_minutes(整数,可选):默认值:15。
  • start_time_iso / end_time_iso(字符串,可选)
  • region(字符串,可选)
  • index(字符串,可选)

get_log_attributes_for_pipeline

  • pipeline(数组,必填):用于限定发现范围的先前过滤阶段,例如 [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}]。
  • lookback_minutes(整数,可选):默认值:15。
  • start_time_iso / end_time_iso(字符串,可选)
  • region(字符串,可选)
  • index(字符串,可选)

get_drop_rules

无参数。通过 GET /otel_settings/drop?region=... 列出丢弃规则。

add_drop_rule

  • name(字符串,必填)
  • filters(数组,必填):每个过滤器:key、value、operator(equals/not_equals)、conjunction(and)。
  • 过滤键必须使用 attributes["key_name"] 或 resource.attributes["key_name"](Last9 API 要求)。
  • 通过 POST /otel_settings/drop?region=...&cluster_id=... 创建规则。

get_traces

用于广泛搜索和聚合。对于精确的 trace ID 查找,请使用 get_service_traces。

  • tracejson_query(数组,必填)
  • start_time_iso / end_time_iso(字符串,可选)
  • lookback_minutes(整数,可选):默认值:60。
  • limit(整数,可选):默认值:5000。

get_service_traces

trace_id 或 service_name 中必须且只能提供一个。

  • trace_id (字符串,可选):默认回溯时间:72 小时。
  • service_name (字符串,可选):默认回溯时间:60 分钟。
  • lookback_minutes (整数,可选)
  • start_time_iso / end_time_iso (字符串,可选)
  • limit (整数,可选):默认值:10。
  • env (字符串,可选)

get_trace_attributes

  • lookback_minutes (整数,可选):默认值:15。
  • start_time_iso / end_time_iso (字符串,可选)
  • region (字符串,可选)

get_trace_attributes_for_pipeline

  • pipeline (数组,必填):用于限定发现范围的先前过滤阶段,例如 [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}]。
  • lookback_minutes (整数,可选):默认值:15。
  • start_time_iso / end_time_iso (字符串,可选)
  • region (字符串,可选)

get_trace_attribute_values

  • tag_name (字符串,必填):来自 get_trace_attributes 的属性名称(例如 resource_department 或 attributes['http.method'])。
  • pipeline (数组,可选):用于限定值范围的先前过滤阶段;省略以获取全局值。
  • lookback_minutes (整数,可选):默认值:15。
  • start_time_iso / end_time_iso (字符串,可选):历史 RFC3339 边界;优先于 lookback_minutes。
  • region (字符串,可选)

get_trace_attribute_deviations

  • comparison_mode (字符串,必填):latency、errors 或 time。
  • service_name (字符串,必填)
  • environment (字符串,必填):精确的 deployment.environment 值。
  • operation (字符串,可选)
  • filters (数组,可选):Trace JSON 过滤条件。
  • candidate_attributes (数组,可选):最多 8 个;省略以进行有界发现。
  • latency_threshold_ms (数字,可选):latency 模式必需;其他模式拒绝。
  • start_time_iso / end_time_iso (字符串,可选)
  • lookback_minutes (整数,可选):默认值:15。最大值:15。
  • baseline_start_time_iso / baseline_end_time_iso (字符串,可选):time 模式必需;与目标窗口不重叠且时长相等。
  • minimum_cohort_size (整数,可选):默认值:100。最小值:20。
  • minimum_value_support (整数,可选):默认值:20。最小值:10。
  • limit (整数,可选):默认值:10。最大值:10。

需要启用配套的后端能力。

get_trace_waterfall

  • trace_id (字符串,必填)
  • environment (字符串,可选)
  • start_time_iso / end_time_iso (字符串,可选)
  • lookback_minutes (整数,可选):默认值:4320(72 小时)。
  • selected_span_id (字符串,可选):仅返回该 span 的属性、事件和链接。
  • max_spans (整数,可选):默认值:500。最大值:1000。

返回一个 investigation-evidence/v1 信封;瀑布图位于 data 下。

get_change_events

  • start_time_iso / end_time_iso (字符串,可选)
  • lookback_minutes (整数,可选):默认值:60。
  • service_name (字符串,可选)
  • env (字符串,可选)
  • event_name (字符串,可选):先不带此参数调用以获取 available_event_names。

get_alert_groups

已配置的 Compass 告警组清单,用于变更板/标签覆盖率审计。包括零规则组和未触发组。不返回 PromQL。

  • alert_group_name / alert_group_type / data_source_name (字符串,可选):不区分大小写的子字符串匹配。
  • team / tier (字符串,可选):对已配置元数据的精确不区分大小写匹配。
  • label_key + label_value (字符串,可选):必须同时设置。对单个 metadata.labels 键值对进行精确不区分大小写匹配——键和值都匹配。

返回紧凑的 JSON {"count":N,"groups":[...]},包含 id、name、type、entity_class、team、tier、metadata.labels 和规则计数。空的 team / labels 表示未设置。

get_alert_config

  • search_term (字符串,可选):跨名称、组、数据源、标签的自由文本搜索。
  • rule_name (字符串,可选)
  • severity (字符串,可选)
  • rule_type (字符串,可选):static 或 anomaly。
  • alert_group_name / alert_group_type / data_source_name (字符串,可选)
  • tags (数组,可选):所有条件必须匹配(AND 逻辑)。

get_alerts

  • time_iso (字符串,可选):RFC3339 格式的评估时间。
  • window (整数,可选):回溯秒数。默认值:900。范围:60–86400。
  • lookback_minutes (整数,可选):范围:1–1440。

get_alert_rule_state

  • start_time (整数,必填):范围起始的 Unix 纪元时间(含)。
  • end_time (整数,必填):范围结束的 Unix 纪元时间(含)。
  • step (整数,必填):采样点之间的分辨率(秒)。采样点数量 ((end_time - start_time) / step + 1) 上限为 100。
  • alert_group_id (字符串,可选):按告警组 ID 过滤。
  • rule_name (字符串,可选):按规则名称的正则表达式过滤。
  • alert_group_name (字符串,可选):按告警组名称的正则表达式过滤。
  • label_filters (字符串,可选):逗号分隔的 key=value 标签过滤器。
  • state (字符串,可选):按状态过滤(例如 firing)。

返回 rule_id -> [{timestamp, is_firing}] 的 JSON 映射。规则在上游响应中缺失的时间戳报告为 is_firing=0——这表示“未观察到触发”,而非确认的正常状态。

get_notification_channels

无参数。返回所有已配置的通知渠道(Slack、PagerDuty、电子邮件、Webhook 等)。

did_you_mean

  • query (字符串,必填):要搜索的名称——部分、拼写错误或缩写。
  • type (字符串,可选):限制实体类型:service、environment、host、database、k8s_deployment、k8s_namespace、job。

返回最多 3 个最接近的匹配项及相似度分数。在实体名称不确定的任何工具调用之前使用此功能。如果之前的调用返回空结果,请在重试前尝试此功能。

get_service_profile

  • service_name (字符串,必填):要为其派生遥测配置文件的服务。
  • datasource (字符串,可选):数据源名称。省略以使用默认值。

返回简短的调查摘要,后跟完整的配置文件(原始 JSON):信号存在性(logs/traces/metrics 作为 present、absent 或 unknown)、语言和运行时、部署环境、日志 signal_shape(log_format、severity_set、level_field),以及适用的推荐摄取修复。上游派生并缓存,TTL 约 15 分钟。

在任何服务范围的调查之前调用此功能,以便工具选择与服务的实际遥测匹配——当 traces 为 absent 时跳过 trace 工具,当 severity_set 为 none 或 partial 时,从日志正文中的 level_field 解析严重级别,而不是使用 severity_filters。metrics 始终为 unknown,dependencies 在 v1 中未填充。当 logs 和 traces 均为 absent 时,在得出服务未受监控的结论之前,使用 did_you_mean 确认名称。

list_dashboards

无参数。返回组织中所有自定义仪表板,格式为 JSON 数组,包含 id、name 和元数据。

get_dashboard

  • id (字符串,必填):仪表板 UUID。
  • region (字符串,可选):面板查询填充的区域。默认为已配置的数据源区域。

validate_dashboard

只读。绝不创建或更新仪表板。仅接受 dashboard_id 或 dashboard_definition 之一。

  • dashboard_id (字符串,可选):要验证的已保存仪表板 UUID。
  • dashboard_definition (对象,可选):内联未保存的仪表板正文(真正的干运行)。
  • start_time_iso / end_time_iso (字符串,可选):验证窗口(RFC3339)。必须 ≤ 24 小时。
  • region (字符串,可选):面板查询执行的区域。

返回 dashboard_validation/v1:逐面板 lint + 执行分类(data / no_data / invalid / error)。第 1 天空结果分类为 valid_no_data,不进行诊断探测。

create_dashboard

仅新建。此调用返回 dashboard.id 后,使用 update_dashboard 进行细化——不要再次创建以添加、修剪或修复面板。

  • dashboard (对象,必填):仪表板定义,包含 name 和 panels[]。每个面板需要 name、version、layout(x、y、w、h)、visualization.type 和 queries[]。
  • metadata (对象,可选):仪表板元数据——_category 和 _type 字段(例如 {"_category":"custom","_type":"metrics"})。

update_dashboard

创建后优先使用此功能。按 ID 完全替换(与创建相同的正文)。

  • id (字符串,必填):要更新的仪表板 UUID。
  • dashboard (对象,必填):完全替换的仪表板正文(与创建相同的结构)。
  • metadata (对象,可选):替换元数据。只读系统仪表板返回 403 错误。

delete_dashboard

  • id (字符串,必填):要删除的仪表板 UUID。只读系统仪表板无法删除。

list_dashboard_snapshots

  • dashboard_id (字符串,必填):要列出其快照的仪表板 UUID。

仅返回元数据(id、name、expires_at 等)。使用 get_dashboard_snapshot 获取冻结的面板数据。

get_dashboard_snapshot

  • id (字符串,必填):快照 UUID。

返回完整的冻结快照,包括 dashboard_definition、panel_data、time_range 和 variables。

delete_dashboard_snapshot

  • id (字符串,必填):要删除的快照 UUID。

get_profile_services

  • lookback_minutes / start_time_iso / end_time_iso (可选):窗口;优先使用回溯或显式 ISO 边界(默认 60 分钟)。
  • region (字符串,可选):区域覆盖。

返回窗口内具有分析数据的服务。在 get_flamegraph / get_top_functions / get_profile_summary 之前调用此功能。

get_flamegraph

  • service (字符串,必填):来自 get_profile_services 的服务名称。
  • profile_type (字符串,可选):cpu(默认)、alloc 或 wall。比较窗口时固定类型。
  • env / cluster / namespace / runtime (字符串,可选):范围过滤器。
  • limit (数字,可选):最大聚合堆栈行数(默认 1000,最大 10000)。
  • lookback_minutes / start_time_iso / end_time_iso / region (可选)。

返回嵌套的火焰图树(name / value / self / children)。truncated: true 表示达到 API 行数限制。

get_top_functions

与 get_flamegraph 相同的过滤器。返回最热函数的自采样排名。可能被截断;检查 truncated。

get_profile_summary

与 get_flamegraph 相同的过滤器。返回服务配置文件的简短自然语言分类。

grafana_search_dashboards

  • query (字符串,可选):标题子字符串。空值广泛列出(受 5,000 行上限约束)。

返回 {"dashboards":[…], "truncated":bool},包含 uid、title、uri、url、type、tags。使用 uid 配合 grafana_get_dashboard。

grafana_get_dashboard

  • uid (字符串,必填):Grafana 仪表板 uid。
  • full_json (布尔值,可选):为 true 时,返回原始 Grafana JSON 而非过滤后的摘要。 默认摘要:版本、标签、模板变量,以及每个面板的类型/数据源/gridPos/promQL 目标。未知插件面板类型显示在 unsupportedPanelTypes 中。

grafana_list_folders

无参数。返回文件夹树。

grafana_list_folder_dashboards

  • folder_uid(字符串,必填):Grafana 文件夹 uid。

返回该文件夹中仪表板的 {"dashboards":[…], "truncated":bool}(分页,最多 5,000 条)。

grafana_list_datasources

无参数。返回数据源的安全投影(不含凭据字段)。


测试

参见 TESTING.md 了解集成测试设置和说明。


MseeP.ai Security Assessment Badge