使用说明
升级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)
-
启动服务器:
./mcp-server --config config.yaml --http :8888 -
通过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 用于编码指南和项目文档。
许可证
看 许可证 了解详情。