项目简介
该 GitHub 仓库提供了一个基于 OpenTelemetry、Prometheus、Loki 和 Grafana 构建的完整可观测性堆栈,用于监控 Anthropic Claude Code 的使用情况。其核心组件之一是一个专用的 MCP 服务器,能够将实时的使用指标、成本、Token 消耗、缓存效率以及日志和查询能力,以标准化的方式提供给 LLM 客户端。这使得 LLM 能够直接访问并分析自身的运行数据,实现更智能的成本管理和性能优化。
主要功能点
- 成本与用量追踪: 实时监控 Claude Code 的总成本、Token 用量(输入、输出、缓存读写)和缓存命中率。
- 指标与日志查询: 允许执行任意 PromQL 查询 Prometheus 指标数据,以及 LogQL 查询 Loki 日志事件。
- 仪表盘分析: 能够列出 Grafana 仪表盘中的所有面板,按名称搜索面板,提取并解释特定面板的 PromQL/LogQL 查询语句。
- 会话活动洞察: 获取最近的用户 Prompt 提交记录和工具执行结果,包括性能指标。
- 标准化接口: 通过 MCP 协议(JSON-RPC over Stdio 等)提供统一接口,方便 LLM 客户端集成和调用。
安装步骤
由于该仓库主要是一个安装设置指南,具体服务器代码预期位于仓库的子目录中。一般安装流程涉及:
- 克隆本 GitHub 仓库到本地。
- 确保您的系统已安装 'uv' (一个快速的 Python 包安装器和环境管理器) 和 'claude' CLI 工具。
- 按照仓库中提供的详细文档,部署 OpenTelemetry Collector、Prometheus、Loki 和 Grafana 组成的监控堆栈。
- 导航到 MCP 服务器所在的目录 (例如,仓库中的 'mcp-server' 子目录)。
- 使用 'uv run' 命令启动 MCP 服务器。
服务器配置
MCP 客户端(例如 Claude Code 客户端)需要配置服务器信息才能与其连接。您可以通过 'claude mcp add' 命令添加此 MCP 服务器。配置信息示例(JSON 格式):
{ "server_name": "metrics", "transport": "stdio", "scope": "user", "command": "uv", "args": [ "run", "--directory", "/path/to/your/mcp-server", "metrics-server" ], "description": "提供 Claude Code 使用指标的 MCP 服务器,基于 OpenTelemetry、Prometheus 和 Loki。", "notes": "请务必将 'command' 字段中的 '/path/to/your/mcp-server' 替换为 MCP 服务器代码在您系统上的实际路径。" }
- 'server_name': 服务器的唯一标识符,此处为 'metrics'。
- 'transport': 服务器与客户端通信的传输协议,此处为 'stdio' (标准输入输出)。
- 'scope': 服务器的作用域,此处为 'user' (用户级别)。
- 'command': 启动 MCP 服务器的执行命令,此处为 'uv' (一个 Python 运行时)。
- 'args': 传递给 'command' 的参数列表,用于指定运行目录和服务器主程序 'metrics-server'。
- 'description': 服务器功能的简要描述。
- 'notes': 重要的配置说明,提示用户替换路径。
基本使用方法
一旦 MCP 服务器启动并被客户端成功添加,LLM 客户端即可通过调用服务器提供的“工具”(Tools)来获取数据和执行操作。例如,LLM 可以:
- 查询当前总成本: 调用 'get_current_cost' 工具,获取今天总的美元花费。
- 获取 Token 用量细分: 调用 'get_token_usage' 工具,查看输入、输出、缓存读写等不同类型的 Token 用量。
- 执行 PromQL 查询: 调用 'query_prometheus' 工具,并传入自定义的 PromQL 语句,查询 Prometheus 中的指标数据。
- 解释 PromQL 语句: 调用 'explain_promql_query' 工具,获取 PromQL 查询的结构和含义。
通过这些工具,LLM 可以实时了解自身的运行状态、优化资源使用,并根据性能数据做出智能决策。
信息
分类
开发者工具