bugsink-mcp
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+。
在 Bugsink 中进入 Account Settings → Auth Tokens,创建一个 token。
把服务器添加到你的 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,例如 |
| 是 | 个人 API token(Bearer 认证) |
| 否 | 每个请求的超时时间(毫秒),默认 |
参见 .env.example。切勿把真实 token 提交到版本库——服务器只从环境中读取它。
Related MCP server: Sierra Navigator Cloud
工具
连通性
工具 | 说明 |
| 验证 URL/token 是否可用,并报告能看到多少个团队 |
团队
工具 | 说明 |
| 列出所有团队 |
| 按 UUID 获取团队 |
| 创建团队 |
| 重命名团队,或修改其可见性 |
项目
工具 | 说明 |
| 列出项目,可选按团队筛选 |
| 获取项目(包括其 DSN),可选展开团队信息 |
| 在某个团队下创建项目 |
| 更新名称/可见性/告警标记/保留时长/所属团队 |
Issues
工具 | 说明 |
| 列出某个项目的 issues(可按 |
| 按 UUID 或友好 ID(如 |
| 不可逆地删除 issue 及其事件 |
| 立即标记为已解决 |
| 标记为已解决;若后续 release 再次上报,则重新回归(regress) |
| 按当前最新 release 标记为已解决 |
| 重新打开已解决的 issue |
| 无限期静音 |
| 静音 N 个周期(如 3 天) |
| 静音,直到某个周期内的事件数量超过阈值 |
| 取消静音 |
| 为 issue 添加评论 |
事件
工具 | 说明 |
| 列出某个 issue 的事件(occurrences) |
| 获取事件完整详情,包括 tags/contexts/原始 payload |
| 获取某个事件渲染后的 Markdown 格式堆栈跟踪 |
发布版本
工具 | 说明 |
| 列出某个项目的发布版本 |
| 按 UUID 获取发布版本 |
| 创建发布版本( |
相对原版的修复
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
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for InsForge BaaS — database, storage, edge functions, and deployments
MCP server for Riveter's enrichment, scraping, and monitoring API
MCP server for Autumn — read customers, plans, balances & invoices; track usage and attach plans.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server providing full coverage of the Huly SDK — issues, projects, workspaces, members, and account management.351 npm1MIT
- FlicenseNot gradedqualityCmaintenanceHosted, 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.-
- AlicenseNot gradedqualityDmaintenanceHosted 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 npmMIT
- FlicenseAqualityCmaintenanceA 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.61-