项目简介
本项目 'Sentry MCP Server' 是一个 MCP 服务器的实现,它扩展了大型语言模型 (LLM) 的能力,使其能够访问和利用 Sentry 错误监控平台的数据。通过此服务器,LLM 客户端可以调用预定义的工具来查询 Sentry 中的 issue 信息,从而实现更智能的错误分析和问题排查。
主要功能点
- 集成 Sentry: 连接到 Sentry 错误监控平台,利用 Sentry API 获取实时的错误和异常数据。
- 提供 'get_sentry_issue' 工具: 注册并提供名为 'get_sentry_issue' 的工具,允许 LLM 客户端通过 issue ID 或 URL 查询 Sentry 中的错误详情,包括标题、状态、级别、首次/末次发生时间、计数以及详细的堆栈跟踪信息。
- 支持 Stdio 和 SSE 传输协议: 支持通过标准输入输出 (Stdio) 和服务器发送事件 (SSE) 两种传输协议与 MCP 客户端进行通信,满足不同应用场景的需求。
- 返回结构化信息: 工具调用结果以结构化的文本形式返回,方便 LLM 理解和利用 Sentry issue 的关键信息。
安装步骤
-
克隆仓库
git clone https://github.com/ParadeTo/mcp-servers.git cd mcp-servers/sentry -
安装依赖
虽然 'package.json' 文件未在仓库中直接提供,但根据代码内容,可以推断需要安装以下依赖:
npm install @modelcontextprotocol/sdk axios eventsource或者使用 yarn:
yarn add @modelcontextprotocol/sdk axios eventsource注意: 'eventsource' 依赖可能仅在客户端 'chat' 目录的 SSE 模式下需要,服务端 'sentry' 目录可能不需要,但为了完整性安装上。
-
构建项目
npm run build或者
yarn build这将会在 'sentry/dist' 目录生成编译后的 JavaScript 代码。
服务器配置
为了让 MCP 客户端能够连接到 Sentry MCP Server,需要提供服务器的启动命令和参数。以下是 Stdio 和 SSE 两种传输协议的配置示例:
Stdio 模式配置
{ "serverName": "sentry-mcp-server-stdio", "command": "node", "args": [ "./sentry/dist/index.js", "--stdio", "YOUR_SENTRY_BASE_URL", // 请替换为您的 Sentry Base URL,例如 "https://your_sentry_domain/api/0/" "YOUR_SENTRY_API_KEY" // 请替换为您的 Sentry API Key ] }
参数说明:
- 'command': 启动服务器的命令,这里使用 'node' 运行 JavaScript 代码。
- 'args': 传递给服务器的参数列表,包括:
- '"./sentry/dist/index.js"': 编译后的服务器入口文件路径。
- '"--stdio"': 指定使用 Stdio 传输协议。
- '"YOUR_SENTRY_BASE_URL"': [必填] Sentry 组织或项目的 Base URL,通常形如 'https://your_sentry_domain/api/0/'。
- '"YOUR_SENTRY_API_KEY"': [必填] 用于访问 Sentry API 的 API Key,需要具有读取 issue 信息的权限。
SSE 模式配置
{ "serverName": "sentry-mcp-server-sse", "command": "node", "args": [ "./sentry/dist/index.js", "--sse", "3000" // SSE 服务器监听的端口号,默认为 3000 ], "sseUrl": "http://localhost:3000/sse?sentry_base_url=YOUR_SENTRY_BASE_URL&sentry_api_key=YOUR_SENTRY_API_KEY", // 请替换为您的 Sentry Base URL 和 API Key "messageUrl": "http://localhost:3000/messages" }
参数说明:
- 'command': 启动服务器的命令,这里使用 'node' 运行 JavaScript 代码。
- 'args': 传递给服务器的参数列表,包括:
- '"./sentry/dist/index.js"': 编译后的服务器入口文件路径。
- '"--sse"': 指定使用 SSE 传输协议。
- '"3000"': [可选] SSE 服务器监听的端口号,默认为 3000。可以根据需要修改。
- 'sseUrl': [必填] SSE 连接的 URL,包含 Sentry Base URL 和 API Key 作为查询参数,例如 'http://localhost:3000/sse?sentry_base_url=https://your_sentry_domain/api/0/&sentry_api_key=YOUR_SENTRY_API_KEY'。请务必替换 'YOUR_SENTRY_BASE_URL' 和 'YOUR_SENTRY_API_KEY' 为实际值。
- 'messageUrl': [必填] 用于客户端向服务器发送消息的 POST 请求 URL,例如 'http://localhost:3000/messages'。
环境变量配置 (推荐)
为了安全起见,推荐使用环境变量来配置 'SENTRY_BASE_URL' 和 'SENTRY_API_KEY',而不是直接在命令行参数或配置文件中硬编码。
Stdio 模式环境变量配置
启动命令保持不变:
{ "serverName": "sentry-mcp-server-stdio", "command": "node", "args": [ "./sentry/dist/index.js", "--stdio" ] }
在运行 MCP 客户端之前,设置环境变量:
export SENTRY_BASE_URL="YOUR_SENTRY_BASE_URL" export SENTRY_API_KEY="YOUR_SENTRY_API_KEY"
SSE 模式环境变量配置
启动命令保持不变:
{ "serverName": "sentry-mcp-server-sse", "command": "node", "args": [ "./sentry/dist/index.js", "--sse", "3000" ], "sseUrl": "http://localhost:3000/sse", "messageUrl": "http://localhost:3000/messages" }
在运行 MCP 客户端和 SSE 服务器之前,设置环境变量:
export SENTRY_BASE_URL="YOUR_SENTRY_BASE_URL" export SENTRY_API_KEY="YOUR_SENTRY_API_KEY"
SSE 模式下,'sseUrl' 和 'messageUrl' 配置中不再需要包含 'sentry_base_url' 和 'sentry_api_key' 参数。
基本使用方法
-
启动 Sentry MCP Server: 根据选择的传输协议 (Stdio 或 SSE) 和配置,启动 Sentry MCP Server。
-
配置 MCP 客户端: 在 MCP 客户端中,配置连接到 Sentry MCP Server 的相关信息,包括服务器名称、启动命令和参数(或 SSE 连接 URL)。
-
调用 'get_sentry_issue' 工具: 在 LLM 对话或应用逻辑中,当需要获取 Sentry issue 信息时,指示 LLM 客户端调用 'get_sentry_issue' 工具,并提供 issue ID 或 URL 作为参数。
-
获取 Sentry issue 信息: MCP 客户端将请求发送到 Sentry MCP Server,服务器调用 Sentry API 获取 issue 数据,并将结构化的信息返回给客户端,最终传递给 LLM 进行分析和利用。
示例 (MCP 客户端代码片段,参考 'chat/src/client.ts')
import { MCPClient } from './client.js'; async function main() { const client = new MCPClient(); await client.connect('stdio'); // 或 client.connect('http'); const issueIdOrUrl = 'YOUR_SENTRY_ISSUE_ID_OR_URL'; // 替换为实际的 Issue ID 或 URL const sentryIssue = await client.getSentryIssue(issueIdOrUrl); console.log(sentryIssue); // 打印 Sentry issue 的详细信息 } main();
注意: 在实际使用中,'YOUR_SENTRY_ISSUE_ID_OR_URL' 需要由 LLM 根据用户意图或上下文动态生成。
信息
分类
开发者工具