Token导航 LogoToken导航TokenDH.com
Cubeapm MCP logo
运维云端未说明官方级别未说明来源级核验

Cubeapm MCP

MCP Server

CubeAPM MCP服务器是一个模型上下文协议服务器,允许AI助手通过自然语言查询CubeAPM的观测数据(包括日志、指标和追踪)。

工具数

6

提示词数

0

GitHub Stars

0

资源数

0
JavaScriptClaude日志分析Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

TechnicalRhino

提供方

TechnicalRhino

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

CubeAPM MCP服务器

](https://www.npmjs.com/package/cubeapm-mcp) ![License: MIT](https://opensource.org/licenses/MIT) ![MCP Server](https://lobehub.com/mcp/technicalrhino-cubeapm-mcp)

A. 模型上下文协议(MCP) 服务器 CubeAPM -使像Claude这样的人工智能助手能够查询您的可观察性数据,包括跟踪、指标和日志。

这是什么?

此MCP服务器将AI助手(如Claude)连接到您的CubeAPM实例,允许您:

  • 查询日志 使用翻译成LogsQL的自然语言
  • 分析指标 与PromQL兼容的查询
  • 搜索和检查痕迹 调试分布式系统
  • 监控您的服务 通过对话式界面

安装

来自NPM(推荐)

npm install -g cubeapm-mcp

源自源头

git clone https://github.com/TechnicalRhino/cubeapm-mcp.git
cd cubeapm-mcp
npm install
npm run build

快速开始

1.配置克劳德代码

添加到您的克劳德代码设置(~/.claude/settings.json):

{
  "mcpServers": {
    "cubeapm": {
      "command": "npx",
      "args": ["-y", "cubeapm-mcp"],
      "env": {
        "CUBEAPM_HOST": "your-cubeapm-server.com"
      }
    }
  }
}

2.重新启动克劳德代码

更新设置后,重新启动Claude Code以加载MCP服务器。

3.开始查询

现在,您可以向Claude提出以下问题:

  • *“显示最近一小时支付服务的错误日志”*
  • *“签出API的p99延迟是多少?”*
  • *“查找生产中持续时间>5s的痕迹”*
  • *“获取跟踪ID abc123def456的完整跟踪”*

配置

环境变量默认值描述
CUBEAPM_URL-CubeAPM的完整URL(例如。, https://cube.example.com).优先于HOST/PORT设置。
CUBEAPM_HOSTlocalhostCubeAPM服务器主机名或IP(如果未设置CUBEAM_URL,则使用)
CUBEAPM_QUERY_PORT3140用于查询API(跟踪、指标、日志)的端口
CUBEAPM_INGEST_PORT3130摄入API端口

示例配置

地方发展:

{
  "mcpServers": {
    "cubeapm": {
      "command": "npx",
      "args": ["-y", "cubeapm-mcp"],
      "env": {
        "CUBEAPM_HOST": "localhost"
      }
    }
  }
}

生产(带完整URL):

{
  "mcpServers": {
    "cubeapm": {
      "command": "npx",
      "args": ["-y", "cubeapm-mcp"],
      "env": {
        "CUBEAPM_URL": "https://cubeapm.internal.company.com"
      }
    }
  }
}

生产(带主机/端口):

{
  "mcpServers": {
    "cubeapm": {
      "command": "npx",
      "args": ["-y", "cubeapm-mcp"],
      "env": {
        "CUBEAPM_HOST": "cubeapm.internal.company.com",
        "CUBEAPM_QUERY_PORT": "3140"
      }
    }
  }
}

可用工具

日志

工具说明
query_logs使用带有时间范围和限制的LogsQL语法查询日志

参数:

  • query -LogsQL查询字符串(例如。, {service="api"} error)
  • start -开始时间(RFC3339或Unix时间戳)
  • end -结束时间(RFC3339或Unix时间戳)
  • limit -返回的最大条目数(默认值:100)

指标

工具说明
query_metrics_instant在单个时间点执行PromQL查询
query_metrics_range在一定时间范围内执行PromQL查询

即时查询参数:

  • query -PromQL表达式
  • time -评估时间戳
  • step -可选时间窗口(秒)

范围查询参数:

  • query -PromQL表达式
  • start / end -时间范围
  • step -分辨率(秒)

痕迹

工具说明
search_traces按服务、环境或自定义查询搜索跟踪
get_trace按跟踪ID获取完整的跟踪详细信息

搜索参数(必填):

  • query -搜索查询(默认值: * 对于通配符)
  • env -环境过滤器(默认值: UNSET)
  • service -服务名称筛选器(必需的,区分大小写)
  • start / end -时间范围(RFC3339或Unix时间戳)

搜索参数(可选):

  • limit -最大结果(默认值:20)
  • spanKind -按跨度类型筛选: server, client, consumer, producer
  • sortBy -排序方式: duration (可用于查找慢速痕迹)

获取跟踪参数:

  • trace_id -十六进制编码的跟踪ID
  • start / end -搜索时间范围

摄入

工具说明
ingest_metrics_prometheus以Prometheus文本展示格式发送指标

提示

常见可观察性任务的预定义模板:

提示描述
investigate-service全面的服务调查-检查错误、延迟和跟踪
check-latency获取服务的P50、P95、P99延迟百分比
find-slow-traces查找最慢的跟踪以识别性能瓶颈

使用示例:

Use the investigate-service prompt for Kratos-Prod

资源

公开CubeAPM数据和配置的可读资源:

资源URI描述
cubeapm://config当前CubeAPM连接配置
cubeapm://query-patterns查询模式和命名约定参考

CubeAPM查询模式

度量(PromQL/MetricsQL)

CubeAPM使用与标准OpenTetry不同的特定命名约定:

什么CubeAPM会议
公制前缀cube_apm_* (例如。, cube_apm_calls_total, cube_apm_latency_bucket)
服务标签service (不是 serverservice_name)
常见标签env, service, span_kind, status_code, http_code

直方图查询(P50、P90、P95、P99)

CubeAPM使用 VictoriaMetrics风格直方图 随着 vmrange 标签而不是普罗米修斯 le 水桶:

# ✅ Correct - Use histogram_quantiles() with vmrange
histogram_quantiles("phi", 0.95, sum by (vmrange, service) (
  increase(cube_apm_latency_bucket{service="MyService", span_kind="server"}[5m])
))

# ❌ Wrong - Standard Prometheus syntax won't work
histogram_quantile(0.95, sum by (le) (rate(http_request_duration_bucket[5m])))
注: 延迟值在中返回 (0.05=50ms)

日志(LogsQL)

流选择器

日志标签因来源而异。使用 * 首先查询以发现可用标签:

来源常用标签
Lambda函数faas.name, faas.arn, env, aws.lambda_request_id
服务项目service_name, level, host
# Discover all labels
*

# Lambda function logs
{faas.name="my-lambda-prod"}

# Regex match
{faas.name=~".*-prod"}

# Text filter with boolean operators
{faas.name=~".*"} AND "error" AND NOT "retry"

管道操作员

任何查询后的链 |:

管道语法描述
copy`\copy src AS dst`复制字段值
drop`\drop field1, field2`从输出中删除字段
extract_regexp`\extract_regexp "(?Pre)"`通过指定的捕获组提取
join`\join by (field) (...subquery...)`使用子查询结果连接
keep`\keep field1, field2`仅保留指定字段
limit`\limit N`最多返回N个结果
math`\math result = f1 + f2`算术(+、-、\*、/、%)
rename`\rename src AS dst`重命名字段
replace`\replace (field, "old", "new")`更换变电站
replace_regexp`\replace_regexp (field, "re", "repl")`正则表达式替换
sort`\sort by (field) [asc\desc]`对结果进行排序
stats`\stats as alias [by (fields)]`汇总结果
unpack_json`\unpack_json`从JSON正文中提取字段

统计功能

| stats 管道:

功能说明
avg(field)算术平均值
count()匹配条目总数
count_empty(field)字段为空的条目
count_uniq(field)独特的价值观
max(field)最大值
median(field)中位数(第50百分位)
min(field)最小值
quantile(p, field)第p分位数(例如。, quantile(0.95, duration))
sum(field)值之和

日志查询示例

# Count errors per Lambda function
{faas.name=~".*"} AND "error" | stats count() as errors by (faas.name)

# Top 10 slowest requests
{service_name="my-service"} | sort by (duration) desc | limit 10

# Extract and aggregate from JSON logs
{service_name="api"} | unpack_json | stats avg(response_time) as avg_rt by (endpoint)

痕迹

跟踪查询使用与日志相同的管道语法: {stream_selector} | pipe1 | pipe2

重要提示:

  • query, env, service 是必需的参数
  • 持续时间为 毫秒 (不是像指标那样的秒数)
  • p95 不是有效的统计函数--使用 quantile(0.95, duration)
  • 服务名称区分大小写(例如。, "Kratos-Prod""kratos")

跟踪查询示例

# P95 latency for a service
{service="Kratos-Prod", span_kind="server"} | stats quantile(0.95, duration) as p95_ms

# Error count by endpoint
{service="Kratos-Prod", status_code="ERROR"} | stats count() as errors by (http_route)

# Slowest spans
{service="Kratos-Prod"} | sort by (duration) desc | limit 20

自然语言查询示例

日志

"Show me logs from webhook-lambda-prod"
"Find all logs containing 'timeout' in the last hour"
"Count errors per Lambda function in the last 24h"

指标

"What's the P95 latency for Kratos-Prod service?"
"Show me error rate for all services"
"List all available services in CubeAPM"

痕迹

"Find the P95 latency for Kratos-Prod using trace stats"
"Show me traces with errors in the production environment"
"Get the full waterfall for trace ID abc123"

发展

# Clone the repository
git clone https://github.com/TechnicalRhino/cubeapm-mcp.git
cd cubeapm-mcp

# Install dependencies
npm install

# Run in development mode (with hot reload)
npm run dev

# Build for production
npm run build

# Test the build
npm start

运作原理

┌─────────────────┐     MCP Protocol     ┌─────────────────┐     HTTP API     ┌─────────────────┐
│  Claude / AI    │◄───────────────────►│  cubeapm-mcp    │◄────────────────►│    CubeAPM      │
│   Assistant     │   (stdio transport)  │   MCP Server    │   (REST calls)   │    Server       │
└─────────────────┘                      └─────────────────┘                  └─────────────────┘

MCP服务器:

  1. 通过stdio接收来自AI助手的工具调用
  2. 将它们转换为CubeAPM HTTP API请求
  3. 将格式化的结果返回给助手

需求

  • Node.js 18+
  • CubeAPM 实例(自托管或云)
  • 克劳德代码 或任何MCP兼容客户端

相关链接

贡献

欢迎投稿!请随时提交拉取请求。

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

目录标签

目录标签

JavaScriptClaude日志分析APM本地部署自然语言查询观测数据AI助手

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP