Skip to main content
Glama
fers4t

bugsink-mcp

by fers4t

bugsink-mcp

Bugsink(자체 호스팅, Sentry 프로토콜 호환 오류 추적)용 완전한 읽기/쓰기 MCP 서버입니다. Bugsink의 /api/canonical/0/ OpenAPI 스키마에 직접 맞춰 구현되었습니다.

이 서버가 존재하는 이유는 npm의 기존 bugsink-mcp 패키지가 API의 읽기 쪽(list/get)만 다루기 때문입니다. 이 패키지는 canonical API 전체를 다룹니다: 이슈 해결, 음소거, 재열기, 삭제, 댓글 작성, 그리고 팀 ·프로젝트·릴리스의 생성/수정까지 포함하며, 원본 대비 몇 가지 정확성 수정 사항도 담겨 있습니다(원본 대비 수정 사항 참고).

설정

Node.js 18.17 이상이 필요합니다.

  1. Bugsink에서 Account Settings → Auth Tokens로 이동해 토큰을 생성합니다.

  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을 통한 publishing 없음), 첫 실행 시 prepare 스크립트가 TypeScript로 변경되면 컴파일하고 이후 실행에서는 로컬 캐시를 다시 사용합니다.

환경 변수

변수

필수 여부

설명

BUGSINK_URL

예

Bugsink 인스턴스의 기본 URL(예: https://bugs.example.com)

BUGSINK_TOKEN

예

개인 API 토큰(Bearer 인증)

BUGSINK_TIMEOUT_MS

아니요

요청당 타임아웃(ms). 기본값 15000, 1000–120000 범위로 제한됨

.env.example 파일을 참고하세요. 실제 토큰을 커밋하지 마세요. 서버는 토큰을 환경(environment)에서만 읽습니다.

Related MCP server: Sierra Navigator Cloud

도구

연결

도구

설명

test_connection

URL/토큰이 정상적인지 확인하고 표시할 수 있는 팀 개수를 반환합니다

팀

도구

설명

list_teams

모든 팀 목록 조회

get_team

UUID로 팀 조회

create_team

팀 생성

update_team

팀 이름 변경 또는 공개 여부 변경

프로젝트

도구

설명

list_projects

선택적으로 팀으로 필터링해 프로젝트 목록 조회

get_project

팀 정보를 확장할 수 있는 프로젝트 조회(DSN 포함)

create_project

팀 아래 프로젝트 생성

update_project

이름/공개 여부/알림 플래그/보존 기간/팀 갱신

이슈

도구

설명

list_issues

프로젝트의 이슈 목록 조회(digest_order, digested_event_count, last_seen으로 정렬 가능)

get_issue

UUID 또는 직관적인 ID(예:PROJ-123)로 이슈 조회

delete_issue

이슈와 해당 이벤트를 되돌릴 수 없게 삭제

resolve_issue

지금 해결 처리

resolve_issue_in_next_release

이후 릴리스에서 다시 보고되면 회귀(regression) 처리하면서 해결

resolve_issue_in_latest_release

현재 최신 릴리스 시점으로 해결 처리

reopen_issue

해결된 이슈 다시 열기

mute_issue

무기한 음소거

mute_issue_for

N 기간(예: 3일) 동안 음소거

mute_issue_until

특정 기간 내 이벤트 수 임계치를 초과할 때까지 음소거

unmute_issue

음소거 해제

add_issue_comment

이슈에 댓글 추가

이벤트

도구

설명

list_events

이슈의 이벤트(발생 건) 목록 조회

get_event

태그/컨텍스트/원시 페이로드를 포함한 전체 이벤트 상세 조회

get_stacktrace

이벤트에 대한 렌처된 Markdown 스택트레이스를 반환

릴리스

도구

설명

list_releases

프로젝트의 릴리스 목록 조회

get_release

UUID로 릴리스 조회

create_release

릴리스 생성(resolve_issue_in_next_release가 올바르게 회귀하려면 필요)

원본 대비 수정 사항

  • get_stacktrace가 실제로 동작합니다. Bugsink의 스택트레이스 엔드포인트는 JSON이 아닌 text/markdown을 반환합니다. 원래 패키지는 무조건 res.json()을 호출해 호출할 때마다 항상 Unexpected token '#', "# TypeError"... is not valid JSON 오류가 발생했습니다. 이 서버는 해당 엔드포인트를 텍스트로 읽습니다.

  • 쓰기 지원: 이슈에 대한 resolve/mute/reopen/delete/comment와 팀·프로젝트·릴리스 생성/업데이트 — 모두 읽기 전용이었던 원본에는 없던 기능입니다.

  • 제한된 타임아웃: 모든 요청에 AbortSignal.timeout(기본 15초)을 적용해 응답이 없는 업스트림이 MCP 처리를 무한정 지연시키지 못하게 합니다.

  • 안전한 재시도: 멱등성(id pom)인 GET 요청은 502/503/504 또는 네트워크 실패 시 제한된 지수 백오프(backoff + jitter) 재시도를 수행합니다. 변경을 만드는 요청(POST/PATCH/DELETE)은 자동 재시도하지 않습니다. 응답이 유실된 쓰기를 다시 수행하면 부수 효과가 중복될 수 있기 때문입니다(예: 같은 댓글 두 번 생성).

  • 입력 검증: 모든 요청 프로미스에 Zod 검증(숫자 ID, UUID, enum)을 적용합니다. , 잘못된 입력은 API까지 가지 않고 명확한 메시지와 함께 로컬에서 거부됩니다.

  • 출력에 비밀정보 없음: 오류는 HTTP 상태와 줄임(truncated)된 응답 본문을 보고하며, 로그나 예외에 Authorization 헤더 값은 절대 포함되지 않습니다.

보안 고려 사항

  • 이 서버는 로컬 stdio 프로세스입니다 — 네트워크 리스너를 열지 않습니다. 접근 제어는 MCP 클라이언트가 이미 제공하는 범위에 BUGSINK_TOKEN 소지 여부로 이어 처리합니다.

  • 진단 출력은 모두 stderr로 전송하며 stdout은 JSON-RPC 프로토콜 스트림 전용으로 남겨 둡니다.

  • BUGSINK_URL은 반드시 http: 또는 https:여야 합니다. 로컬 호스트가 아닌 대상에 일반 HTTP를 사용하는 경우 경고를 출력하며(토큰이 암호화 없이 전송될 수 있음을 알림) 내부 네트워크 지원을 위한 것은 차단하지 않습니다.

  • 다른 자격 증명과 동일하게 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
    -