该项目已被归档。Tempo本身集成了一个MCP服务器。请在Tempo仓库中提交问题和PR。
这是一个基于Go的服务器实现,用于Model Context Protocol (MCP),并集成了Grafana Tempo。
此MCP服务器允许AI助手查询和分析来自Grafana Tempo的分布式追踪数据。它遵循Model Context Protocol提供工具定义,这些定义可以被兼容的AI客户端(如Claude Desktop)使用。
构建并运行服务器:
# 构建服务器
go build -o tempo-mcp-server ./cmd/server
# 运行服务器
./tempo-mcp-server
或者直接用Go运行:
go run ./cmd/server
该服务器现在支持两种通信模式:
HTTP服务器的默认端口是8080,但可以通过SSE_PORT环境变量进行配置。
当以HTTP模式运行时,服务器暴露以下端点:
http://localhost:8080/sse - 用于实时事件流传输http://localhost:8080/mcp - 用于MCP协议消息传递您可以使用Docker构建和运行MCP服务器:
# 构建Docker镜像
docker build -t tempo-mcp-server .
# 运行服务器
docker run -p 8080:8080 --rm -i tempo-mcp-server
或者,您可以使用Docker Compose来构建完整的测试环境:
# 使用Docker Compose构建和运行
docker-compose up --build
.
├── cmd/
│ ├── server/ # MCP服务器实现
│ └── client/ # 测试MCP服务器的客户端
├── internal/
│ └── handlers/ # 工具处理器
├── pkg/
│ └── utils/ # 实用函数和共享代码
└── go.mod # Go模块定义
Tempo MCP服务器实现了Model Context Protocol (MCP),并提供了以下工具:
tempo_query工具允许您查询Grafana Tempo跟踪数据:
query: Tempo查询字符串(例如,{service.name="frontend"},{duration>1s})url: Tempo服务器URL(默认:从环境变量TEMPO_URL或http://localhost:3200获取)start: 查询的起始时间(默认:1小时前)end: 查询的结束时间(默认:现在)limit: 返回的最大跟踪数(默认:20)username: 基本认证用户名(可选)password: 基本认证密码(可选)token: 认证的Bearer令牌(可选)Tempo查询工具支持以下环境变量:
TEMPO_URL: 如果请求中未指定,则使用的默认Tempo服务器URLSSE_PORT: HTTP/SSE服务器端口(默认:8080)./run-client.sh tempo_query "{resource.service.name=\\\"example-service\\\"}"
您可以将此MCP服务器与Claude Desktop结合使用,添加Tempo查询工具。请按照以下步骤操作:
示例Claude Desktop配置:
{
"mcpServers": {
"temposerver": {
"command": "path/to/tempo-mcp-server",
"args": [],
"env": {
"TEMPO_URL": "http://localhost:3200"
},
"disabled": false,
"autoApprove": ["tempo_query"]
}
}
}
对于Docker:
{
"mcpServers": {
"temposerver": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "TEMPO_URL=http://host.docker.internal:3200", "tempo-mcp-server"],
"disabled": false,
"autoApprove": ["tempo_query"]
}
}
}
Claude Desktop配置文件的位置如下:
~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.json您还可以将Tempo MCP服务器与Cursor编辑器集成。为此,请在您的Cursor设置中添加以下配置:
{
"mcpServers": {
"tempo-mcp-server": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "TEMPO_URL=http://host.docker.internal:3200", "tempo-mcp-server:latest"]
}
}
}
要将Tempo MCP服务器与n8n结合使用,您可以使用MCP客户端工具节点连接到它:
在n8n工作流程中添加一个MCP客户端工具节点
使用以下参数配置节点:
http://your-server-address:8080/sse(替换为您实际的服务器地址)将MCP客户端工具节点连接到将使用Tempo查询功能的AI代理节点
示例工作流程: 触发器 → MCP客户端工具(Tempo服务器)→ AI代理(Claude)
配置完成后,您可以在Claude中使用查询工具,例如:
{duration>1s}的跟踪"{service.name=\"frontend\"}在Tempo中查找前端服务的跟踪"{http.status_code=500}的Tempo跟踪"本项目采用MIT许可证。