模型上下文协议服务器

Uptrace MCP服务器是一个基于Go语言开发的模型上下文协议服务器,用于向AI助手和LLM工具提供Uptrace的可观测性数据。

  • by uptrace
  • Go
  • 本地部署
  • 5 星标
  • 更新于

使用说明

升级MCP服务器

一种模型上下文协议(MCP)服务器 上升记录用Go写的。

概述

此服务器实现 模型上下文协议 将Uptrace可观察性数据暴露给人工智能助手和LLM驱动的工具。

先决条件

  • 转到1.21+
  • 访问Uptrace实例

入门指南

克隆仓库

git clone git@github.com:uptrace/mcp.git
cd mcp

初始化子模块

git submodule update --init --recursive

构建

go build -o mcp-server ./cmd/mcp-server

配置

创建配置文件:

cp config.yaml.example config.yaml

编辑 config.yaml 使用您的Uprace凭据:

uptrace:
  api_url: "https://api.uptrace.dev"
  api_token: "<your-api-token>"
  project_id: 1

跑

标准模式 (适用于克劳德代码/桌面):

./mcp-server --config config.yaml

HTTP模式 (适用于web客户端):

./mcp-server --config config.yaml --http :8080

添加到克劳德代码

Claude Code支持MCP服务器的两种传输模式:

选项1:标准模式(推荐)

Claude将服务器作为子进程生成。添加到 ~/.claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "uptrace": {
      "command": "/path/to/mcp-server",
      "args": ["--config", "/path/to/config.yaml"]
    }
  }
}

替换 /path/to/mcp-server 和 /path/to/config.yaml 绝对路径。

选项2:HTTP模式

单独运行服务器并通过HTTP连接。这有助于:

  • 跨多个客户端共享一台服务器
  • 在远程计算机上运行服务器
  • 热重载开发(task dev)
  1. 启动服务器:

    ./mcp-server --config config.yaml --http :8888
    
  2. 通过CLI添加到Claude代码:

    claude mcp add --transport http uptrace http://localhost:8888/mcp
    

    或者在配置文件中手动配置:

    {
      "mcpServers": {
        "uptrace": {
          "url": "http://localhost:8888/mcp"
        }
      }
    }
    

可用工具

工具 说明
list_span_groups 使用UQL(Uptrace查询语言)聚合跨度。按属性对跨度进行分组和分析。
list_spans 列表来自Uptrace。支持时间范围过滤、跟踪ID过滤和分页。
list_monitors 列出Uptrace的监视器。查看已配置的警报和监控规则。

list_span_groups

使用UQL(Uptrace查询语言)进行分组和分析的聚合跨度。

参数:

  • time_start (可选):RFC3339格式的开始时间,默认为1小时前
  • time_end (可选):结束时间,默认为现在
  • query (可选):UQL查询字符串
  • search (可选):搜索筛选器
  • duration_gte (可选):持续时间>=值(纳秒)的过滤器跨度
  • duration_lt (可选):持续时间<值(纳秒)的过滤器跨度
  • limit (可选):返回的最大组数(默认值:100,最大值:10000)

UQL查询示例:

  • group by host_name -按主机名划分的组跨度
  • group by service_name -按服务划分的组跨度
  • where _status_code = "error" | group by service_name -按服务分组错误
  • group by service_name | having count() > 100 -跨度大于100的服务
  • where _dur_ms > 1s | group by _name -操作缓慢

Claude中的示例用法:

“按服务名称划分的组跨度” “按主机显示错误率”

list_span

从Uptrace获取跨度以分析分布式跟踪。

参数:

  • time_start (可选):RFC3339格式的开始时间,默认为1小时前
  • time_end (可选):结束时间,默认为现在
  • trace_id (可选):按特定跟踪ID筛选
  • limit (可选):要返回的最大跨度数(默认值:100)

Claude中的示例用法:

“显示上个小时的跨度” “查找跟踪ID abc123的跨度”

list_monitors

从Uptrace获取已配置的监视器(警报)。

参数: 无(使用配置中的project_id)

Claude中的示例用法:

“列出所有监视器” “显示已配置的警报”

配置

字段 必填 描述
uptrace.dsn 无 DSN连接字符串(可替代单个字段)
uptrace.api_url 是 正常运行API URL
uptrace.api_token 是 用于身份验证的API令牌
uptrace.project_id 是 Uptrace项目ID
logging.level 否 日志级别:调试、信息、警告、错误(默认值:信息)
logging.max_body_size 否 日志记录的最大正文大小
service.start_timeout 否 服务启动超时(默认值:15秒)
service.stop_timeout 否 服务停止超时(默认值:15秒)

发展

# Run with hot-reload
task dev

# Run tests
task test

# Regenerate API client
task generate

看 代理商.md 用于编码指南和项目文档。

许可证

看 许可证 了解详情。