返回市场
节奏-MCP服务器

节奏-MCP服务器

作者:grafana17 星标更新:2025-11-05

项目介绍

已归档!

该项目已被归档。Tempo本身集成了一个MCP服务器。请在Tempo仓库中提交问题和PR。

Tempo MCP服务器

这是一个基于Go的服务器实现,用于Model Context Protocol (MCP),并集成了Grafana Tempo。

概述

此MCP服务器允许AI助手查询和分析来自Grafana Tempo的分布式追踪数据。它遵循Model Context Protocol提供工具定义,这些定义可以被兼容的AI客户端(如Claude Desktop)使用。

快速开始

先决条件

  • Go 1.21或更高版本
  • Docker和Docker Compose(用于本地测试)

构建和运行

构建并运行服务器:

# 构建服务器
go build -o tempo-mcp-server ./cmd/server

# 运行服务器
./tempo-mcp-server

或者直接用Go运行:

go run ./cmd/server

该服务器现在支持两种通信模式:

  1. 标准输入/输出(stdin/stdout),遵循Model Context Protocol (MCP)
  2. 带有Server-Sent Events (SSE)端点的HTTP服务器,用于与n8n等工具集成

HTTP服务器的默认端口是8080,但可以通过SSE_PORT环境变量进行配置。

服务器端点

当以HTTP模式运行时,服务器暴露以下端点:

  • SSE端点:http://localhost:8080/sse - 用于实时事件流传输
  • MCP端点:http://localhost:8080/mcp - 用于MCP协议消息传递

Docker支持

您可以使用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模块定义

MCP服务器

Tempo MCP服务器实现了Model Context Protocol (MCP),并提供了以下工具:

Tempo查询工具

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服务器URL
  • SSE_PORT: HTTP/SSE服务器端口(默认:8080)

测试

./run-client.sh tempo_query "{resource.service.name=\\\"example-service\\\"}"

与Claude Desktop结合使用

您可以将此MCP服务器与Claude Desktop结合使用,添加Tempo查询工具。请按照以下步骤操作:

  1. 构建服务器或Docker镜像
  2. 配置Claude Desktop以使用服务器,将其添加到您的Claude Desktop配置文件中

示例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配置文件的位置如下:

  • 在macOS上:~/Library/Application Support/Claude/claude_desktop_config.json
  • 在Windows上:%APPDATA%\Claude\claude_desktop_config.json
  • 在Linux上:~/.config/Claude/claude_desktop_config.json

与Cursor结合使用

您还可以将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"]
    }
  }
}

与n8n结合使用

要将Tempo MCP服务器与n8n结合使用,您可以使用MCP客户端工具节点连接到它:

  1. 在n8n工作流程中添加一个MCP客户端工具节点

  2. 使用以下参数配置节点:

    • SSE端点: http://your-server-address:8080/sse(替换为您实际的服务器地址)
    • 认证: 如需选择适当的认证方式
    • 包含的工具: 选择要向AI代理暴露的哪些Tempo工具
  3. 将MCP客户端工具节点连接到将使用Tempo查询功能的AI代理节点

示例工作流程: 触发器 → MCP客户端工具(Tempo服务器)→ AI代理(Claude)

示例用法

配置完成后,您可以在Claude中使用查询工具,例如:

  • "查询Tempo中具有{duration>1s}的跟踪"
  • "使用查询{service.name=\"frontend\"}在Tempo中查找前端服务的跟踪"
  • "显示最近50个具有{http.status_code=500}的Tempo跟踪"
<img width="991" alt="2025-04-11 下午5:24:03截图" src="https://gips3.baidu.com/it/u=3710255921,2471791735&fm=3081&app=3081&f=PNG?w=1982&h=1694" />

许可证

本项目采用MIT许可证。