mcpField
J
Jaeger MCP Server

Jaeger MCP Server

本地服务
github.com/serkan-ozal数据与分析1876 周前更新

关于 Jaeger MCP Server

Jaeger MCP Server 将 MCP 客户端连接到 Jaeger 实例以查询追踪数据,面向排查服务与分布式追踪的开发者。

主要功能

  1. 01列出 Jaeger 服务
  2. 02按服务获取操作
  3. 03按追踪 ID 获取 spans
  4. 04按时间和属性搜索追踪

适用场景

  1. 01查找某服务在指定时间段内的追踪
  2. 02检查已知追踪 ID 对应的 spans

MCP 相关

向 MCP 客户端提供列出服务和操作、获取追踪及搜索追踪的工具。使用 STDIO 传输,并通过 HTTP 或 gRPC 连接 Jaeger。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jaeger": {
"command": "npx",
"args": [
"-y",
"jaeger-mcp-server"
],
"env": {
"JAEGER_URL": "<JAEGER_URL>"
}
}
}
}
启动命令npx -y jaeger-mcp-server
需要配置的环境变量
JAEGER_URL

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmjaeger-mcp-server

工具

4

收录的工具列表 · 更新于 3 周前

参数类型必填说明
servicestring是按服务名称筛选操作(必填)
spanKindenum否按 OpenTelemetry span kind 筛选操作("server"、"client"、"producer"、"consumer"、"internal")(可选) | server | client | producer | consumer | internal

详细介绍

Jaeger MCP 服务

Build Status NPM Version License

适用于 Jaeger 的 MCP 服务。

前提条件

  • Node.js 18+

快速开始

此 MCP 服务(使用 STDIO 传输)可通过 jaeger-mcp-server NPM 包添加到 VS Code、Claude、Cursor、Windsurf Github Copilot 等任意 MCP 客户端。

VS Code
{
  "servers": {
    "jaeger-mcp-server": {
      "command": "npx",
      "args": ["-y", "jaeger-mcp-server"],
      "envFile": "${workspaceFolder}/.env"
    }
  }
}
Claude Desktop
{
  "mcpServers": {
    "jaeger-mcp-server": {
      "command": "npx",
      "args": ["-y", "jaeger-mcp-server"],
      "env": {
        "JAEGER_URL": "<YOUR_JAEGER_HTTP_OR_GRPC_API_URL>"
      }
    }
  }
}

配置

环境变量
  • JAEGER_URL:要访问的 Jaeger 实例的 HTTP API(HTTP JSON(/api/v3/*))或 gRPC API(gRPC/Protobuf(jaeger.api_v3.QueryService))URL。
  • JAEGER_PORT:要访问的 Jaeger 实例的 HTTP 或 gRPC API 端口。gRPC API 的默认值为 16685,HTTP API 的默认值为 16686。
  • JAEGER_AUTHORIZATION_HEADER:查询 Jaeger API 上的跟踪时要添加到请求中的 Authorization HTTP 标头(例如 Basic <Basic Auth Header>)
  • JAEGER_PROTOCOL:要访问的 Jaeger 实例的 API 协议。有效值为 GRPC 和 HTTP。默认值为 GRPC。有效

组件

工具
  • get-operations:以 JSON 对象数组的形式获取操作,每个对象包含 name 和 spanKind 属性。 支持以下输入参数:
    • service:
      • Mandatory:true
      • Type:string
      • Description:按服务名称筛选操作
    • spanKind:
      • Mandatory:false
      • Type:string
      • Description:按 OpenTelemetry Span 类型(server、client、producer、consumer、internal)筛选操作
  • get-services:以 JSON 字符串数组的形式获取服务名称。 不支持输入参数。
  • get-trace:按给定的跟踪 ID 获取 Span,并以 OpenTelemetry 资源 Span 格式的 JSON 对象数组形式返回。
    • traceId:
      • Mandatory:true
      • Type:string
      • Description:按兼容 OpenTelemetry 的跟踪 ID 筛选 Span,格式为 32 个字符的十六进制字符串
    • startTime:
      • Mandatory:false
      • Type:string
      • Description:筛选 Span 的开始时间,格式遵循 RFC 3339 第 5.6 节(例如 2017-07-21T17:32:28Z)
    • endTime:
      • Mandatory:false
      • Type:string
      • Description:筛选 Span 的结束时间,格式遵循 RFC 3339 第 5.6 节(例如 2017-07-21T17:32:28Z)
  • find-traces:搜索 Span,并以 OpenTelemetry 资源 Span 格式的 JSON 对象数组形式返回。
    • serviceName:
      • Mandatory:true
      • Type:string
      • Description:按兼容 OpenTelemetry 的跟踪 ID 筛选 Span,格式为 32 个字符的十六进制字符串
    • operationName:
      • Mandatory:false
      • Type:string
      • Description:筛选 Span 的开始时间,格式遵循 RFC 3339 第 5.6 节(例如 2017-07-21T17:32:28Z)
    • attributes:
      • Mandatory:false
      • Type:map<string, string | number | boolean>
      • Description:按 Span 属性筛选 Span。属性可在 JSON 中以键值格式传入, 键可以是字符串,值可以是字符串、数字(整数或双精度数)或布尔值。 例如
        {
            "stringAttribute": "str",
            "integerAttribute": 123,
            "doubleAttribute": 123.456,
            "booleanAttribute": true,
        }
        
    • startTimeMin:
      • Mandatory:true
      • Type:string
      • Description:查询时间区间的起始时间(包含),格式遵循 RFC 3339 第 5.6 节(例如,2017-07-21T17:32:28Z)。 只返回包含在此时间或之后开始的跨度的追踪。
    • startTimeMax:
      • Mandatory:true
      • Type:string
      • Description:查询时间区间的结束时间(不包含),格式遵循 RFC 3339 第 5.6 节(例如,2017-07-21T17:32:28Z)。 只返回包含在此时间之前开始的跨度的追踪。
    • durationMin:
      • Mandatory:false
      • Type:string
      • Description:追踪中跨度的最短持续时间,单位为毫秒。 只返回持续时间至少达到此值的跨度所在的追踪。
    • durationMax:
      • Mandatory:false
      • Type:string
      • Description:追踪中跨度的最长持续时间,单位为毫秒。 只返回持续时间不超过此值的跨度所在的追踪。
    • searchDepth:
      • Mandatory:false
      • Type:number
      • Description:定义最大搜索深度。 根据后端存储实现,此参数的行为可能类似于 SQL LIMIT 子句。 不过,某些实现可能不支持精确限制, 且较大的值通常会返回更多追踪。
资源

不适用

路线图

  • 支持 HTTP Stream 传输协议(SSE 传输协议已弃用,由该协议取代),以便从远程使用 MCP 服务。
  • 支持更多无法通过 Jaeger API 直接使用的工具(编排和流水线处理多个 API 端点)

问题与反馈

问题 已关闭的问题

如需报告错误、请求功能或寻求支持,请使用 GitHub Issues。

贡献

拉取请求 已关闭的拉取请求 贡献者

如果您想参与贡献,请:

  • 在 GitHub 上 Fork 此仓库,并克隆您的 Fork。
  • 为您的更改创建分支,并在该分支上进行修改。
  • 提交拉取请求,并清楚说明您的贡献内容。

提示: 请检查现有拉取请求,看看是否有类似的贡献, 并考虑在编写代码前提交问题,以讨论提议的功能。

许可证

采用 MIT 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。