Skip to main content
Glama
fers4t

bugsink-mcp

by fers4t

bugsink-mcp

一个完整读写的 MCP 服务器,用于 Bugsink(自托管、兼容 Sentry 协议的错误跟踪平台),直接基于 Bugsink 的 /api/canonical/0/ OpenAPI schema 构建。

它存在的意义在于:npm 上现有的 bugsink-mcp 包只封装了 API 的只读部分(list/get)。而本项目覆盖了完整的 canonical API 接口面:解决(resolving)、静音(muting)、重新打开(reopening)和删除(deleting issues)、添加评论(commenting),以及创建/更新团队、项目和发布版本——并相对原版做了几处正确性修复(见 相对原版的修复)。

安装

要求 Node.js 18.17+。

  1. 在 Bugsink 中进入 Account Settings → Auth Tokens,创建一个 token。

  2. 把服务器添加到你的 MCP 客户端。

Claude Code

使用 claude mcp CLI 一行搞定:

claude mcp add bugsink \
  -e BUGSINK_URL=https://bugs.example.com \
  -e BUGSINK_TOKEN=<your token> \
  -- npx -y github:fers4t/bugsink-mcp

这会把等价的配置写入 ~/.claude.json(或传入 --scope project,改为写入项目共享的 .mcp.json,而不是用户级配置):

{
  "mcpServers": {
    "bugsink": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "github:fers4t/bugsink-mcp"],
      "env": {
        "BUGSINK_URL": "https://bugs.example.com",
        "BUGSINK_TOKEN": "<your token>"
      }
    }
  }
}

完成后重启 Claude Code(或新开一个会话)——MCP 工具列表在会话启动时加载,对话中途不会读取新的配置变更。

其他 MCP 客户端

任何能读取 mcpServers 映射的客户端(Cursor、Windsurf 等)都可以使用上面展示的同一份 JSON 结构——把 command: npx、args: ["-y", "github:fers4t/bugsink-mcp"] 以及两个必需的环境变量填上即可。

npx 直接从 GitHub 安装(不经过 npm 发布),首次使用时运行 prepare 脚本编译 TypeScript,后续启动直接复用本地缓存。

环境变量

变量

必填

说明

BUGSINK_URL

是

你的 Bugsink 实例的基础 URL,例如 https://bugs.example.com

BUGSINK_TOKEN

是

个人 API token(Bearer 认证)

BUGSINK_TIMEOUT_MS

否

每个请求的超时时间(毫秒),默认 15000,限制在 1000–120000 之间

参见 .env.example。切勿把真实 token 提交到版本库——服务器只从环境中读取它。

Related MCP server: Sierra Navigator Cloud

工具

连通性

工具

说明

test_connection

验证 URL/token 是否可用,并报告能看到多少个团队

团队

工具

说明

list_teams

列出所有团队

get_team

按 UUID 获取团队

create_team

创建团队

update_team

重命名团队,或修改其可见性

项目

工具

说明

list_projects

列出项目,可选按团队筛选

get_project

获取项目(包括其 DSN),可选展开团队信息

create_project

在某个团队下创建项目

update_project

更新名称/可见性/告警标记/保留时长/所属团队

Issues

工具

说明

list_issues

列出某个项目的 issues(可按 digest_order、digested_event_count 或 last_seen 排序)

get_issue

按 UUID 或友好 ID(如 PROJ-123)获取 issue

delete_issue

不可逆地删除 issue 及其事件

resolve_issue

立即标记为已解决

resolve_issue_in_next_release

标记为已解决;若后续 release 再次上报,则重新回归(regress)

resolve_issue_in_latest_release

按当前最新 release 标记为已解决

reopen_issue

重新打开已解决的 issue

mute_issue

无限期静音

mute_issue_for

静音 N 个周期(如 3 天)

mute_issue_until

静音,直到某个周期内的事件数量超过阈值

unmute_issue

取消静音

add_issue_comment

为 issue 添加评论

事件

工具

说明

list_events

列出某个 issue 的事件(occurrences)

get_event

获取事件完整详情,包括 tags/contexts/原始 payload

get_stacktrace

获取某个事件渲染后的 Markdown 格式堆栈跟踪

发布版本

工具

说明

list_releases

列出某个项目的发布版本

get_release

按 UUID 获取发布版本

create_release

创建发布版本(resolve_issue_in_next_release 需要它才能正确回归)

相对原版的修复

  • get_stacktrace 现在真的能用了。 Bugsink 的 stacktrace 端点返回的是 text/markdown,不是 JSON。原版包无条件调用 res.json(),每次都会抛出 Unexpected token '#', "# TypeError"... is not valid JSON。本服务器把该端点按文本读取。

  • 写入支持:解决、静音、重新打开、删除 issue 并添加评论,以及创建/更新团队、项目和发布版本——这些都是只读的原版没暴露的。

  • 超时有界:每个请求都带 AbortSignal.timeout(默认 15 秒),即使上游挂住,也不会让 MCP 进程无限期卡死。

  • 安全重试:幂等的 GET 请求在 502/503/504 或网络故障时,会进行有上限的指数退避(exponential-backoff-with-jitter)重试。修改类请求(POST/PATCH/DELETE)绝不自动重试,因为重试一个响应丢失的写入操作可能造成重复副作用(例如产生两条相同的评论)。

  • 输入校验:所有工具参数都通过 Zod 校验(数字 ID、UUID、枚举),格式非法的输入会被本地直接拒绝并给出清晰信息,而不是一路打到 API。

  • 输出中不含机密信息:错误只报告 HTTP 状态码和被截断的响应体;Authorization 头的值绝不会出现在任何日志或抛出的错误中。

安全说明

  • 这是一个本地 stdio 进程——不会开启任何网络监听。访问控制完全依赖你的 MCP 客户端已有的机制,外加对 BUGSINK_TOKEN 的持有。

  • 所有诊断信息都输出到 stderr;stdout 保留给 JSON-RPC 协议流。

  • BUGSINK_URL 必须是 http: 或 https:。对非本机主机使用明文 http 会打印警告(token 会被明文发送),但不会阻止,以支持内网场景。

  • 请像对待任何凭据一样对待 BUGSINK_TOKEN:不要提交到版本库;一旦泄露,立即在 Bugsink 中轮换;并让它绑到你的工作流程所允许的最小权限用户。

开发

npm install     # installs deps and runs the TypeScript build (prepare script)
npm run typecheck
npm run build   # compile src/ -> dist/
npm run dev     # watch mode

许可证

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Hosted, OAuth-secured MCP server that drives the Sierra Interactive real-estate admin backend, enabling reads, guarded writes, and identity-locked deletes over HTTP without a browser.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Hosted MCP server that exposes your self-hosted Bugsink error tracker as tools for LLMs, enabling issue management, release tracking, and stacktrace retrieval via chat prompts.
    181 npm
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    A lightweight MCP server for tracking bugs and tasks across coding sessions, providing persistent SQLite-backed storage and six tools for logging, inspecting, updating, resolving, and deleting bugs.
    6
    1
    -