Sentry MCP 怎么让 AI 查线上报错并收紧权限

把 Sentry issue 直接喂给 agent,远程 endpoint 与 stdio 两种接法、token 作用域怎么收、返回数据量大时怎么控。

Sentry MCP 怎么让 AI 查线上报错并收紧权限

线上报了个 TypeError,把 Sentry 链接贴进 Cursor,agent 说打不开。sentry mcp 怎么让 ai 查线上报错,配置就一行,要想清楚的是那个 token 能读到什么。

作者CodePass 技术编辑

从一条 issue 链接到一次修复的完整链路

粘一条 https://your-org.sentry.io/issues/6811213890/ 进对话框,接上 MCP 之后 agent 的动作大致是这样:先调工具把这条 issue 的详情取回来,拿到标题、culprit、堆栈帧、所在 release 和 environment;需要更进一步就把堆栈交给 Seer 做根因分析;然后把堆栈里的文件路径和行号映射到本地仓库,对着那个 release 找到嫌疑提交,最后给出改动并跑测试验证。

这条链路的价值在于省掉人肉搬运。以前你要在浏览器里展开堆栈、复制几十行、再贴进对话框,中间还会漏掉 environment 和 release 这些定位关键。工具直接返回结构化结果,agent 拿到的字段比你手动复制的更全。

README 对定位说得很克制:这个服务主要面向人在环路里的编码 agent,工具选择围绕开发和调试工作流,并不打算覆盖 Sentry 的全部功能。它本质上是 Sentry API 上的一层中间件,基于 Cloudflare 的远程 MCP 方案实现。指望用它做报表或者批量管理组织设置,方向就错了。

远程 endpoint 和 stdio 两条接法

远程那条只有一行命令,走 OAuth,不用自己生成 token,授权时在浏览器里点一下就完成,凭证之后由客户端保管。多数人应该从这条开始,配错了重新授权一次即可。

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

Cursor 在设置里新建 MCP Server,填同一个地址;命令行下还能用 cursor-agent mcp login sentry 完成授权:

{
  "mcpServers": {
    "sentry": {
      "url": "https://mcp.sentry.dev/mcp"
    }
  }
}

Codex 是 codex mcp add sentry --url https://mcp.sentry.dev/mcp,官方文档里另外列了 VS Code、Amp、Gemini CLI、OpenCode、Warp、Windsurf、Zed 的写法,URL 都是同一个。Claude Code 还可以装成插件,claude plugin marketplace add getsentry/sentry-mcp 之后再 claude plugin install sentry-mcp@sentry-mcp,会多出一个专门处理 Sentry 提问的子 agent。

stdio 那条要自己带 token,主要给自托管实例用:

npx @sentry/mcp-server@latest --access-token=sentry-user-token

README 明确写了 stdio 传输仍在推进中。两条路的差别不只是形式:远程走 OAuth,授权范围跟着你的 Sentry 账号走;stdio 用的是你手工签发的静态 token,写多大就是多大。

那几个 scope 到底给了 agent 什么

README 列出的 stdio token 所需权限是 org:readproject:readproject:writeteam:readteam:writeevent:write,并注明这是撰写当时的集合。里面有三个是写权限,也就是说按文档照抄签出来的 token 并非只读,它能改项目、改团队、写事件。

再看这个 token 能读到什么。线上异常的 payload 里通常带着请求 URL 和查询参数、请求头、用户标识、breadcrumbs 里的中间状态,以及部分环境上下文。这些内容本来就在 Sentry 里,区别在于接上 MCP 之后它们会被塞进模型上下文,经过你配置的那个大模型服务商。合规上要不要过审,取决于你们对这类数据出境和外发的规定。

Sentry 官方的 auth token 教程还给了另一个信号:它推荐尽量使用组织级 auth token,通过 Organization Settings 里的 Custom Integrations 建一个 internal integration 来签发,理由是这类 token 不绑定到具体用户账号,创建者需要 Manager 或 Admin 角色。README 里给 stdio 的示例说的是 user auth token,两者对不齐时,按组织级 token 走更稳妥。权限清单该怎么盘,AI 代理的 GitHub 权限安全审计 里那套思路可以直接搬过来。

把作用域收小的三个动作

限组织、限项目这一层官方直接支持。在 URL 路径上追加约束,会话里所有能力都只在这个范围内活动:

https://mcp.sentry.dev/mcp/:organization
https://mcp.sentry.dev/mcp/:organization/:project

文档还说明了一个附带效果:带组织约束时 find_organizations 会被隐藏,带项目约束时 find_projects 也会被隐藏。工具列表变短本身就是收敛,agent 不会再去翻你其他项目。

第二个动作是裁工具集。直连远程鉴权时默认暴露全部活跃 skill,可以用 ?skills=inspect,triage 只留需要的几组,或者用 ?disable-skills=seer 关掉某一组。stdio 下对应的是命令行参数 --disable-skills=seer 和环境变量 MCP_DISABLE_SKILLS

第三个动作是自己接管 token 生命周期。远程客户端如果支持自定义 HTTP 头,可以直接透传上游 token:

{
  "mcpServers": {
    "sentry": {
      "url": "https://mcp.sentry.dev/mcp",
      "headers": {
        "Authorization": "Sentry-Bearer ${SENTRY_ACCESS_TOKEN}"
      }
    }
  }
}

Sentry-BearerBearer 是两回事,后者留给 MCP 的 OAuth access token。README 把责任划得很清楚:worker 不存储、不校验、不交换、不刷新这个上游 token,只是把它转发给同一批 Sentry API 调用,token 的有效期和轮换由你自己负责。方便的代价是过期和吊销都得你管。

返回数据量大的时候怎么控

一条完整 trace 的 span 树能有几百个节点,全塞进上下文就把窗口占满了。控制手段主要在提问方式上:给具体的 issue ID 或 issue 链接,比让 agent 去做开放式检索省得多;先取 issue 详情定位到嫌疑帧,确有必要再展开 trace。

另一个变量是 AI 检索类工具。README 说明 search_eventssearch_issues 这类工具依赖一个大模型服务商,用自然语言翻译成 Sentry 的查询语法,没配就不可用,其余工具照常工作。也就是说这几个工具会额外产生一次模型调用,你的查询语句会经过 OpenAI、Azure OpenAI、Anthropic 或 OpenRouter 中的一家。

配置上有个坑值得先记住,多个 provider 的 key 同时存在时必须显式指定:

SENTRY_ACCESS_TOKEN=
EMBEDDED_AGENT_PROVIDER=   # openai / azure-openai / anthropic / openrouter
OPENAI_API_KEY=

README 标注基于 API key 自动探测 provider 的行为已废弃,未来版本会移除,所以现在就把 EMBEDDED_AGENT_PROVIDER 写死。至于哪些 MCP server 的工具描述和返回结构真的适合 agent 消费,MCP Server 可用性评分 那篇里有一套评判标准。

自托管实例和 Seer 缺席的情况

自托管只需要多传一个主机名,注意这里只填主机名,不带协议前缀也不带路径,写成完整 URL 会连不上。内网里只暴露明文 HTTP 的部署要再加一个开关:

npx @sentry/mcp-server@latest --access-token=TOKEN --host=sentry.example.com --insecure-http

留空主机名时 CLI 默认指向 Sentry SaaS,只有自托管才需要覆盖。README 提醒部分功能在自托管实例上可能不可用,Seer 就是典型,遇到这种情况用 --disable-skills=seer 把不支持的工具从列表里摘掉,免得 agent 反复调用一个注定失败的工具。环境变量方式对应 SENTRY_HOSTMCP_DISABLE_SKILLS

项目本身的状态也值得看一眼再决定投入多深:仓库在 getsentry 组织下由官方维护,许可证是 FSL-1.1-Apache-2.0 而非标准开源许可,撰写时 800 多颗星、前一天仍有提交,Sentry 官方产品页把这个服务标为 Beta。接上去之前,先在测试组织里跑通一遍权限最小的配置,比直接对着生产组织授权稳妥。想先摸清 agent 接了 MCP 之后的整体玩法,可以看 Claude Code 和 Cursor 连上 MCP 之后的实际用法

参考资料