mcpField
D
dashmetrics

dashmetrics

本地服务
github.com/CloudCorpRecords数据与分析02 周前更新

关于 dashmetrics

dashmetrics 是面向运维人员的 Grafana MCP 服务和命令行工具,用于读取仪表板、数据源、指标、日志及已配置的告警。它基于 Grafana 公开的 HTTP API 文档实现。

主要功能

  1. 01搜索和获取仪表板
  2. 02检查已配置的数据源
  3. 03执行 Prometheus 范围查询
  4. 04查询 Loki 日志
  5. 05查看告警规则和联系点

适用场景

  1. 01查找与某项服务相关的仪表板
  2. 02检查 Prometheus 指标和标签
  3. 03在 Loki 中查询日志与标签
  4. 04查看已配置的告警规则和联系点

MCP 相关

它以 stdio MCP 服务运行,并向 MCP 客户端提供仪表板、数据源、Prometheus、Loki 和告警相关工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-dashmetrics": {
"command": "npx",
"args": [
"-y",
"@reneturcios/dashmetrics"
]
}
}
}
启动命令npx -y @reneturcios/dashmetrics

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/dashmetrics0.1.0
ocighcr.io/cloudcorprecords/dashmetrics:0.1.0

工具

14

收录的工具列表 · 更新于 1 周前

参数类型必填说明
typestring否可选的 Grafana 搜索结果类型筛选条件,例如仪表板使用的 'dash-db' 或文件夹使用的 'dash-folder'。
limitnumber否可选的最大搜索结果数(默认值为 100,限制在 1-5000 之间)。
querystring否可选的待搜索标题文本;将返回标题匹配的仪表板和文件夹。

详细介绍

dashmetrics

dashmetrics 让 MCP 客户端或终端能够以只读方式访问 Grafana 实例:搜索和获取仪表板、检查数据源、执行 Prometheus 区间查询并发现指标和标签、执行 Loki 日志 查询并发现标签,以及查看已配置的告警规则和 联系点。它基于 Grafana 的公开 HTTP API 文档,从头重建了 Grafana MCP 工具接口中有文档记录的核心部分。

通过 GRAFANA_URL 指定实例(默认值为 http://localhost:3000),并在 GRAFANA_SERVICE_ACCOUNT_TOKEN 中提供服务账号令牌进行身份验证,该令牌会作为 Bearer 令牌发送。如果未设置主变量,则会将旧版 GRAFANA_API_KEY 变量用作备用值。如果未设置令牌,所有调用都会失败,并显示包含 GRAFANA_SERVICE_ACCOUNT_TOKEN 的错误;如果无法访问实例,错误会显示尝试连接的基础 URL。

安装

npx @reneturcios/dashmetrics list_datasources

或者运行容器镜像:

docker run -i -e GRAFANA_URL -e GRAFANA_SERVICE_ACCOUNT_TOKEN ghcr.io/cloudcorprecords/dashmetrics

容器默认启动 MCP 服务(见下文)。传入 CLI 参数即可将其用作 CLI。

CLI

每个 MCP 工具也都对应一个 CLI 子命令。工具参数通过 --json 传入,内容为一个 JSON 对象:

export GRAFANA_URL=http://localhost:3000
export GRAFANA_SERVICE_ACCOUNT_TOKEN=<redacted>

dashmetrics search_dashboards --json '{"query": "api", "limit": 5}'
dashmetrics get_dashboard_by_uid --json '{"uid": "dash-1"}'
dashmetrics list_datasources
dashmetrics query_prometheus --json '{"datasourceUid": "prom1", "expr": "up", "start": "now-1h", "end": "now", "step": "15s"}'
dashmetrics query_loki_logs --json '{"datasourceUid": "loki1", "query": "{job=\"api\"}"}'
dashmetrics list_alert_rules

dashmetrics --version

结果以 JSON 格式输出。退出码:成功时为 0,API 调用失败(包括缺少令牌)时为 1,用法错误时为 2。

MCP 服务

一个二进制文件提供这两种用法。mcp 子命令会启动一个 stdio MCP 服务:

npx -y @reneturcios/dashmetrics mcp

MCP 客户端配置:

{
  "mcpServers": {
    "dashmetrics": {
      "command": "npx",
      "args": ["-y", "@reneturcios/dashmetrics", "mcp"],
      "env": {
        "GRAFANA_URL": "http://localhost:3000",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "your Grafana service account token"
      }
    }
  }
}
工具
工具输入(粗体为必填项)功能
search_dashboardsquery、limit、type搜索仪表板/文件夹(/api/search)。
get_dashboard_by_uiduid返回一个仪表板。
list_datasources—列出已配置的数据源。
get_datasource_by_uiduid返回一个数据源。
query_prometheusdatasourceUid、expr、start、end、step通过数据源代理执行 Prometheus 区间查询。
list_prometheus_metric_namesdatasourceUid、regex列出符合正则表达式筛选条件的指标名称。
list_prometheus_label_namesdatasourceUid、metric列出标签名称。
list_prometheus_label_valuesdatasourceUid、label、metric列出一个标签的值。
query_loki_logsdatasourceUid、query、start、end、limit通过代理执行 Loki LogQL 区间查询。
list_loki_label_namesdatasourceUid列出 Loki 标签名称。
list_loki_label_valuesdatasourceUid、label列出一个 Loki 标签的值。
list_alert_ruleslimit列出已配置的告警规则。
get_alert_rule_by_uiduid返回一条已配置的告警规则。
list_contact_pointslimit列出已配置的联系点。

Prometheus 和 Loki 调用会通过 Grafana 有文档记录的数据源代理路径 (/api/datasources/proxy/uid/{uid}/...)发出。不在范围内的功能: 创建/更新事件、值班安排、Sift/Asserts,以及 管理员/用户管理——请参阅 BUILD-REPORT.md。

开发

npm install
npm run build   # tsc -> dist/
npm test        # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev     # run the CLI from source via tsx

许可证

MIT — 参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。