Skip to main content
Glama

atlassian-mcp

자체 호스팅 Jira(Server / Data Center) 및 자체 호스팅 Bitbucket(Server / Data Center)용 Model Context Protocol(MCP) 서버입니다. 티켓, 풀 리퀘스트, 리뷰 스레드, git 컨텍스트에 대한 자연어 워크플로를 위한 도구를 제공합니다.

참고: 이 서버는 자체 호스팅 인스턴스만 지원합니다. Jira Cloud 및 Bitbucket Cloud는 다른 API를 사용하므로 지원되지 않습니다.


도구

워크플로

도구

설명

get_dev_context

마스터 진입점: git 상태 + 연결된 Jira 티켓 + 리뷰어/차단 상태 및 다음 단계 힌트가 포함된 열린 PR

start_work

Jira 티켓 시작: 티켓을 가져오고 로컬 브랜치(feature/FOO-123-slug)를 생성하며 선택적으로 티켓을 전환합니다.

complete_work

완료된 작업 종료: 열린 PR을 병합하고 Jira 티켓을 Done으로 전환합니다.

Git

도구

설명

git_get_context

브랜치, 업스트림 상태, 원격 URL, 최근 커밋, 작업 트리 상태, diff 통계, 브랜치 이름의 Jira 키

git_get_diff

커밋되지 않은 변경 사항 또는 두 refs 사이의 diff; charOffset을 통한 페이징 지원

Jira

도구

설명

jira_search

리소스 검색: resource 매개변수를 통해 issues, projects, issue_types, boards, sprints, board_overview, versions, components, fields 또는 users

jira_get

하나의 이슈에 대한 전체 세부 정보: 요약, 설명, 상태, 스프린트, 전환, 댓글, 첨부 파일 목록

jira_get_attachment

ID로 Jira 첨부 파일을 가져옵니다. 이미지, 비디오, 애니메이션 이미지(GIF/APNG/애니메이션 WebP), 오디오, PDF는 모두 인라인으로 디코딩되어 모델이 보고/들을 수 있습니다. 텍스트/JSON도 인라인입니다. 크기가 크거나 렌더링할 수 없는 첨부 파일은 자동으로 임시 파일에 저장되고 경로가 반환됩니다. saveTo=/absolute/path는 원본을 디스크로 스트리밍합니다.

jira_mutate

생성, 업데이트, 전환, 댓글, 링크, 스프린트 추가 또는 작업 기록 — 모두 한 번의 호출로

jira_comment

이슈에 댓글 추가, 업데이트 또는 삭제 (action: add / update / delete)

jira_version

수정 버전/릴리스 관리 (action: create / update / release / archive / delete)

Bitbucket

도구

설명

bitbucket_search

리소스 검색: resource 매개변수를 통해 pull_requests(기본값), repos, branches 또는 users; mine=true는 내 받은 편지함

bitbucket_get_pr

전체 PR 세부 정보: 메타데이터, 커밋, 댓글, 차단자, 빌드 상태, 선택적 diff, 설명 또는 댓글에서 참조된 첨부 파일

bitbucket_get_attachment

ID로 저장소 첨부 파일을 가져옵니다. jira_get_attachment와 동일한 디코딩 파이프라인(이미지, 비디오, 애니메이션 이미지, 오디오, PDF). 크기가 크거나 렌더링할 수 없는 첨부 파일은 자동으로 임시 파일에 저장되고 경로가 반환됩니다. saveTo는 원본을 디스크로 스트리밍합니다.

bitbucket_mutate

PR 생성/업데이트 또는 수명 주기 작업 수행: approve, unapprove, needs_work, merge, decline

bitbucket_comment

PR 댓글 추가, 업데이트 또는 삭제; 코드 변경에는 suggestion을 사용하여 Bitbucket이 'Apply suggestion'을 표시하도록 합니다(제안 블록 뒤에 텍스트 없음).

bitbucket_get_file

브랜치, 태그 또는 커밋에서 Bitbucket의 원시 파일 콘텐츠

bitbucket_pr_tasks

PR 작업(체크리스트 항목) 관리: list, create, resolve, reopen, delete

자연어 예시

  • "지금 뭐 하고 있지?" → get_dev_context

  • "FOO-123용 브랜치 만들기" → start_work

  • "이거 배포 / 병합하고 티켓 닫기" → complete_work

  • "리뷰 대기 중인 내 PR 보기" → bitbucket_search with mine=true

  • "feature/ABC-123에서 이 저장소의 열린 PR 나열" → bitbucket_search with fromBranch

  • "PR 42 전체 개요 보기" → bitbucket_get_pr

  • "현재 브랜치에서 master로 PR 열기" → bitbucket_mutate with create

  • "PR 42 승인 / 병합 / 거부" → bitbucket_mutate with action

  • "PR 42의 댓글 123에 답글" → bitbucket_comment with commentId=123

  • "PR 42의 이 차단자 해결" → bitbucket_comment with action=update, severity=BLOCKER, state=RESOLVED

  • "PR 체크리스트 작업 나열" → bitbucket_pr_tasks with action=list

  • "PAY 프로젝트에서 나에게 할당된 버그 찾기" → jira_search with mine=true, issueType=Bug

  • "현재 스프린트에 뭐가 있지?" → jira_search with resource=board_overview

  • "FOO-123을 In Progress로 이동" → jira_mutate with transitionName="In Progress"

  • "FOO-123에 2시간 기록" → jira_mutate with worklog

  • "PAY에 버전 9.1.0 생성" → jira_version with action=create, projectKey=PAY, name=9.1.0

  • "PAY의 릴리스 나열" → jira_search with resource=versions, project=PAY

  • "버전 12345 릴리스" → jira_version with action=release, id=12345

  • "FOO-123에 수정 버전 9.1.0 설정" → jira_mutate with update.fixVersion=9.1.0

  • "에픽 FOO-100 아래 작업 생성" → jira_mutate with create.issueType=Task, create.parent=FOO-100 (Epic을 자동 감지하고 Epic Link 설정)

  • "FOO-123을 에픽 FOO-100 아래로 이동" → jira_mutate with update.epicLink=FOO-100

  • "에픽 생성" → jira_mutate with create.issueType=Epic (Epic Name은 요약으로 기본 설정됨)

  • "스토리 포인트를 5로 설정" → jira_mutate with update.customFields={"Story Points": 5} — 값은 일반 값(옵션 레이블, 사용자 이름, 날짜, 레이블 배열)입니다. 서버는 필드 스키마에 따라 이를 래핑합니다.

  • "이 티켓 / 에픽에 무엇을 설정할 수 있나요?" → jira_search resource=fields with issueKey=FOO-123 (편집 화면) 또는 project=FOO+issueType=Epic (생성 화면): 필수 및 선택 필드, 값 형태, 허용 값


Related MCP server: Bitbucket Server MCP

설정

1. 구성 파일 생성

~/.atlassian-mcp.json 생성:

{
  "$schema": "https://raw.githubusercontent.com/stubbedev/atlassian-mcp/master/atlassian-mcp.schema.json",
  "jira": {
    "url": "https://jira.example.com",
    "token": "your-jira-personal-access-token"
  },
  "bitbucket": {
    "url": "https://bitbucket.example.com",
    "token": "your-bitbucket-personal-access-token"
  }
}

$schema 필드는 선택 사항이지만 편집기 자동 완성 및 검증을 활성화합니다.

  • projectKey는 프로젝트 코드를 의미합니다:

    • Jira 예: 티켓 PAY-123PAY

    • Bitbucket 예: 저장소 경로 ENG/payments-service의 프로젝트 ENG

  • 인체공학적 별칭도 사용할 수 있습니다:

    • Jira: project (projectKey의 별칭)

    • Bitbucket: projectrepo (projectKeyrepoSlug의 별칭)

  • Bitbucket 도구의 경우 projectKeyrepoSlug는 일반적으로 로컬 origin 원격에서 자동 감지됩니다.

  • bitbucket_create_pull_request는 현재 브랜치에서 fromBranch도 자동 감지하며 해당 브랜치에 이미 열린 PR이 있으면 기존 열린 PR을 반환합니다.

  • Jira 프로젝트 범위 호출은 projectKey를 허용하며 제공될 때 가장 잘 작동합니다.

  • Jira 이슈 생성/유형 조회에서 projectKey가 생략되면 서버는 현재 브랜치 티켓 키에서 이를 추론하려고 시도하고, 프로젝트가 하나만 보이면 자동 선택으로 대체하며, 그렇지 않으면 선택할 번호가 매겨진 프로젝트 목록을 반환합니다.

또는 환경 변수(또는 이 디렉토리의 .env 파일)를 사용하세요:

JIRA_URL=https://jira.example.com
JIRA_ACCESS_TOKEN=your-jira-personal-access-token
BITBUCKET_URL=https://bitbucket.example.com
BITBUCKET_ACCESS_TOKEN=your-bitbucket-personal-access-token

구성은 다음 순서로 해석됩니다: --config <path> CLI 인수 → ATLASSIAN_MCP_CONFIG 환경 변수 → ~/.atlassian-mcp.json$XDG_CONFIG_HOME/atlassian-mcp/config.json (기본값 ~/.config/atlassian-mcp/config.json) → cwd의 .atlassian-mcp.json → 환경 변수.

2. AI 도구에 연결

클론이나 빌드가 필요 없습니다. 도구를 npx @stubbedev/atlassian-mcp@latest로 지정하기만 하면 자동으로 설치되고 실행됩니다.

참고: --prefer-online은 일부 클라이언트에서 MCP 시작을 깨뜨릴 수 있습니다. 명령을 단순하게 유지하고 업데이트하려면 아래 업데이트 단계를 사용하세요.


Claude Code

claude mcp add atlassian -- npx -y @stubbedev/atlassian-mcp@latest --config ~/.atlassian-mcp.json

Cursor

~/.cursor/mcp.json(전역) 또는 .cursor/mcp.json(프로젝트 전용)에 추가:

{
  "mcpServers": {
    "atlassian": {
      "command": "npx",
      "args": ["-y", "@stubbedev/atlassian-mcp@latest", "--config", "/Users/you/.atlassian-mcp.json"]
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json에 추가:

{
  "mcpServers": {
    "atlassian": {
      "command": "npx",
      "args": ["-y", "@stubbedev/atlassian-mcp@latest", "--config", "/Users/you/.atlassian-mcp.json"]
    }
  }
}

Zed

~/.config/zed/settings.json에 추가:

{
  "context_servers": {
    "atlassian": {
      "command": {
        "path": "npx",
        "args": ["-y", "@stubbedev/atlassian-mcp@latest", "--config", "/home/you/.atlassian-mcp.json"]
      }
    }
  }
}

OpenCode

프로젝트 루트의 opencode.json(또는 전역의 경우 ~/.config/opencode/opencode.json)에 추가:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "atlassian": {
      "type": "local",
      "command": ["npx", "-y", "@stubbedev/atlassian-mcp@latest", "--config", "/home/you/.atlassian-mcp.json"]
    }
  }
}

Codex CLI

~/.codex/config.yaml에 추가:

mcpServers:
  atlassian:
    command: npx
    args:
      - -y
      - @stubbedev/atlassian-mcp@latest
      - --config
      - /home/you/.atlassian-mcp.json

기타 MCP 호환 도구

MCP를 지원하는 대부분의 도구는 동일한 JSON 형식을 허용합니다. 명령으로 npx를 사용하고 인수로 ["-y", "@stubbedev/atlassian-mcp@latest", "--config", "/path/to/config.json"]를 사용하세요.

기존 설치 업데이트

MCP 클라이언트가 이미 구성되어 있고 최신 패키지 버전을 사용하려면:

npx clear-npx-cache

그런 다음 MCP 클라이언트를 다시 시작하세요.


npm 없이 설치하기

서버는 단일 Go 정적 바이너리입니다. 위의 npx 경로는 첫 실행 시 플랫폼에 맞는 사전 빌드된 바이너리를 다운로드합니다. 다음 대안들은 Node를 완전히 건너뜁니다:

# Go toolchain — installs to $GOBIN / $GOPATH/bin
go install github.com/stubbedev/atlassian-mcp@latest

# Nix flake
nix run github:stubbedev/atlassian-mcp -- --config ~/.atlassian-mcp.json

그런 다음 MCP 클라이언트의 command를 결과로 생성된 atlassian-mcp 바이너리로 지정하고 npx 대신 사용하세요. 이 경로들에서는 ffmpeg/ffprobePATH에 있어야 합니다 (또는 ATLASSIAN_MCP_FFMPEG_PATH / ATLASSIAN_MCP_FFPROBE_PATH를 설정하세요). npm 래퍼는 이들을 자동으로 번들합니다.

HTTP 서버로 실행하기 (공유 / 프록시 뒤)

기본적으로 서버는 MCP를 stdio로 통신합니다 (클라이언트당 하나의 프로세스가 에디터에 의해 실행됨). 대신 오래 지속되는 Streamable HTTP 서버로 실행하여 여러 클라이언트가 공유할 수 있습니다 — 리버스 프록시 뒤에서 유용합니다:

atlassian-mcp --http                 # binds 127.0.0.1:7337
atlassian-mcp --http 127.0.0.1:9000  # custom address
ATLASSIAN_MCP_HTTP=1 atlassian-mcp   # same, via env
  • 단일 엔드포인트 POST /mcp (JSON-RPC) 및 선택적 GET /mcp SSE 스트림으로 서버→클라이언트 요청을 전달합니다 (roots/list, elicitation). 서버는 상태 저장(stateful) 방식입니다: initialize가 세션을 생성하고 Mcp-Session-Id 헤더를 반환하며, 클라이언트는 이후 모든 요청과 SSE 스트림에서 이 헤더를 반드시 포함해야 합니다. 세션 ID가 없거나/알 수 없거나/만료된 요청은 HTTP 404를 받으므로 클라이언트가 재초기화합니다 (표준 MCP 클라이언트 동작). 각 연결된 클라이언트/워크트리는 격리된 세션을 갖습니다.

  • 인증: 루프백 바인딩에서는 토큰이 필요 없습니다. 비루프백 주소에 바인딩할 때는 필수ATLASSIAN_MCP_HTTP_TOKEN이 필요합니다 (클라이언트는 Authorization: Bearer …로 전송). 그렇지 않으면 서버가 시작을 거부합니다. TLS는 프록시에서 종료하세요.

  • **GET /healthz**는 인증 없는 liveness 프로브로 ok를 반환합니다 — 프록시/로드 밸런서용입니다. 유휴 세션은 1시간 후에 만료됩니다.

저장소 컨텍스트는 클라이언트에서 오며, 서버의 작업 디렉토리가 아닙니다. 저장소가 필요한 도구(git_* 도구, get_dev_context, start_work, complete_work, Bitbucket 프로젝트/저장소 자동 감지)는 다음 순서로 저장소를 결정합니다: 명시적 repoPath 인자 → 요청 헤더로 고정된 루트 (아래 참조) → 클라이언트의 MCP 워크스페이스 루트 (서버는 roots/list로 요청하고, notifications/roots/list_changed 시 새로고침) → 프로세스 cwd (stdio 전용). 따라서 하나의 공유 HTTP 서버가 여러 워크트리를 처리할 수 있습니다: 각 클라이언트의 자체 워크스페이스가 호출을 구동합니다. 세션이 여러 루트(여러 워크트리)를 노출할 때, repoPath가 없는 도구는 첫 번째 git 저장소 루트를 사용합니다. 특정 워크트리를 대상으로 하려면 repoPath(절대 경로 또는 루트 중 하나와 일치하는 워크트리 이름/기본 이름)를 전달하세요. Bitbucket의 경우 projectKey+repoSlug를 명시적으로 전달하면 저장소 감지를 완전히 건너뜁니다. 저장소는 서버 호스트에서 접근 가능해야 합니다 (git 도구는 git을 로컬에서 실행합니다).

요청 헤더로 루트 고정하기 (HTTP). 리버스 프록시나 하네스가 작업 트리를 이미 알고 있다면, roots/list 왕복을 건너뛰고 서버에 직접 전달할 수 있습니다 (클라이언트가 roots 기능을 광고하지 않아도 동작). file:// URI 또는 절대 경로를 보내세요 (여러 개는 쉼표로 구분, 첫 번째 git 저장소가 우선):

X-Mcp-Root: file:///srv/myrepo
X-Mcp-Roots: /srv/a, /srv/b

헤더 이름: X-Mcp-Roots, X-Mcp-Root, Mcp-Roots, Mcp-Root. 헤더 값은 우선합니다 — roots/list보다 우선하며 list_changed 이후에도 유지됩니다.

이미 실행 중인 HTTP 서버에 대한 클라이언트 구성 (Claude Code 예시):

claude mcp add --transport http atlassian http://127.0.0.1:7337/mcp

첨부 파일 디코딩 파이프라인

첨부 파일 도구(jira_get_attachment, bitbucket_get_attachment)는 모델이 읽을 수 있는 콘텐츠로 바이너리 첨부 파일을 디코딩한 후 반환합니다:

입력

반환되는 내용

방법

정적 이미지 (PNG/JPEG/WebP/BMP/TIFF/GIF/SVG…)

크기 조정된 이미지 콘텐츠 블록

순수 Go (imaging, 긴 변 ≤ maxDimension, 기본 1568; EXIF 자동 회전; 알파 채널이 있으면 PNG, 아니면 JPEG)

애니메이션 이미지 (GIF/APNG/animated WebP)

N개의 샘플링된 프레임을 이미지 콘텐츠 블록으로

ffmpeg + 순수 Go 재인코딩 (기본 6프레임 @ 768px)

비디오 (mp4/webm/mov/…)

N개의 샘플링된 프레임을 이미지 콘텐츠 블록으로

ffmpeg/ffprobe. 균일 또는 장면 전환 기반 샘플링. start, end, frames, mode, sceneThreshold로 확대/축소 재호출 가능

오디오 (mp3/wav/ogg/…)

MCP 오디오 콘텐츠 블록

패스스루

PDF

추출된 텍스트 — 텍스트가 비어 있으면 래스터화된 페이지

순수 Go 텍스트 추출 (ledongthuc/pdf); 래스터화는 pdftoppm/mutool에 셸 아웃소싱 (있을 경우), 없으면 원본을 디스크에 저장

텍스트류 (json/xml/yaml/…)

텍스트 콘텐츠 블록

패스스루

그 외 모든 것 (또는 크기 초과)

임시 파일에 자동 저장 후 경로 반환

os.TempDir()atlmcp- 접두사로 저장

자동 저장된 파일은 TTL과 총 크기 할당량에 따라 주기적으로 정리됩니다 — 아래 환경 변수 참조.

외부 도구 (선택 사항)

이미지 및 PDF 텍스트 디코딩은 순수 Go로 구현되어 추가 도구가 필요 없습니다. 순수 Go 구현이 없는 두 파이프라인은 외부 바이너리에 셸 아웃소싱합니다:

  • ffmpeg + ffprobe — 비디오 및 애니메이션 이미지 프레임 샘플링. npm 래퍼는 ffmpeg-static / ffprobe-static을 번들하여 경로를 자동 주입하므로 npx 설치 경로는 추가 설정이 필요 없습니다. go install / Nix 경로에서는 ffmpeg를 설치하거나 (그러면 ffprobe도 함께 제공됨) 아래 환경 변수를 설정하세요.

  • pdftoppm (poppler) 또는 mutool (MuPDF) — 텍스트를 추출할 수 없는 스캔된 PDF를 래스터화하는 데만 필요합니다. 둘 다 PATH에 없으면 해당 PDF는 디스크에 저장됩니다.

환경 변수

변수

용도

기본값

ATLASSIAN_MCP_HTTP

stdio 대신 Streamable HTTP 서버로 실행. 1/true127.0.0.1:7337; 또는 명시적 host:port 지정. --http와 동일.

설정 안 됨 (stdio)

ATLASSIAN_MCP_HTTP_TOKEN

HTTP 모드용 Bearer 토큰. 루프백 바인딩에서는 선택 사항, 비루프백 바인딩에서는 필수.

설정 안 됨

ATLASSIAN_MCP_FFMPEG_PATH

ffmpeg 바이너리 경로.

npm: 번들된 ffmpeg-static; 그 외: PATHffmpeg

ATLASSIAN_MCP_FFPROBE_PATH

ffprobe 바이너리 경로.

npm: 번들된 ffprobe-static; 그 외: PATHffprobe

ATLASSIAN_MCP_TMP_TTL_DAYS

이보다 오래된 자동 저장 첨부 파일은 정리됩니다.

7

ATLASSIAN_MCP_TMP_MAX_BYTES

os.tmpdir() 내 자동 저장 첨부 파일의 총 크기 할당량. 초과 시 가장 오래된 것부터 제거됩니다.

1073741824 (1 GB)


릴리스 (유지보수자용)

이 패키지는 npm에 @stubbedev/atlassian-mcp로 게시됩니다.

릴리스에는 시맨틱 버저닝을 사용하세요. 도구 표면에 변경이 있는 경우 <1.0.0 동안 마이너 버전을 올리세요 (예: 0.0.x -> 0.1.0).

v* 태그가 푸시되면 .github/workflows/publish.yml이 Go 바이너리를 14개 OS/아키텍처 대상으로 크로스 컴파일하여 GitHub 릴리스에 첨부하고, npm 래퍼(설치 시 일치하는 바이너리를 다운로드)를 게시합니다.

릴리스 흐름:

# choose one: patch | minor | major (also: npm run release:patch / :minor / :major)
npm version patch          # bumps package.json, commits, tags vX.Y.Z
git push origin HEAD --follow-tags

flake.nixpackage.json에서 버전을 읽으므로 Nix 패키지도 동일한 버전 변경을 자동으로 추적합니다. GitHub Actions가 푸시된 태그에서 빌드 및 게시합니다.

  • 워크플로는 npm Trusted Publisher (OIDC)로 구성되어 있으므로 NPM_TOKEN 시크릿이 필요하지 않습니다.

필요한 npm 설정 (1회):

  • npm 패키지 설정에서 이 GitHub 저장소/워크플로를 Trusted Publisher로 추가하세요.


Personal Access Token 생성

Jira Server / Data Center

Personal Access Token은 Jira 8.14부터 지원됩니다.

  1. Jira 인스턴스에 로그인하세요.

  2. 오른쪽 상단의 프로필 아바타를 클릭하고 Profile을 선택하세요.

  3. 왼쪽 사이드바에서 Personal Access Tokens을 클릭하세요.

  4. Create token을 클릭하세요.

  5. 토큰 이름(예: atlassian-mcp)을 지정하고 선택적으로 만료일을 설정하세요.

  6. Create를 클릭하고 토큰을 복사하세요 — 토큰은 한 번만 표시됩니다.

구성 파일의 jira 아래 token 값으로 이 토큰을 붙여넣으세요.

Jira 버전이 8.14보다 오래된 경우 HTTP Basic Auth를 대신 사용할 수 있습니다 — 단, 이 서버는 Bearer token (PAT) 인증만 지원합니다.

Bitbucket Server / Data Center

Personal Access Token은 Bitbucket Server 5.5부터 지원됩니다.

  1. Bitbucket 인스턴스에 로그인하세요.

  2. 오른쪽 상단의 프로필 아바타를 클릭하고 Manage account를 선택하세요.

  3. 왼쪽 사이드바의 Security 아래에서 Personal access tokens을 클릭하세요.

  4. Create a token을 클릭하세요.

  5. 토큰 이름(예: atlassian-mcp)을 지정하세요.

  6. 권한을 설정하세요:

    • Projects: Read

    • Repositories: Read + Write (Write는 풀 리퀘스트 생성 및 코멘트 추가에 필요)

  7. 선택적으로 만료일을 설정하세요.

  8. Create를 클릭하고 토큰을 복사하세요 — 토큰은 한 번만 표시됩니다.

구성 파일의 bitbucket 아래 token 값으로 이 토큰을 붙여넣으세요.


개발

서버는 저장소 루트에 있는 단일 Go 모듈입니다 (src/ 트리 없음).

# Build the binary
go build -o atlassian-mcp .

# Run it
./atlassian-mcp --config /path/to/config.json

# Vet + unit tests
go vet ./...
go test ./...

# Test the tool list
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | ./atlassian-mcp

# Quick release smoke check (build + tools/list validation)
npm run smoke

Available Tools

10 tools
get_dev_contextA

Master entry point for "what am I working on / what's the status", and before any review or coding task. Returns: git branch + upstream state, Jira ticket overview (status, transitions, sprint, comments), open PR with reviewer approvals, and actionable next-step hints (create PR, merge, address blockers).

ParametersJSON Schema
NameRequiredDescriptionDefault
repoPathNoLocal path to the git repo (defaults to cwd)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses all returned data elements (git branch, Jira ticket overview, open PR, next-step hints), which is good transparency. It does not describe side effects or auth needs, but the tool appears read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is two sentences: first defines purpose, second lists returns. It is concise with no wasted words, though some structure (e.g., bullet points) could improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately explains the return values. The tool has one optional parameter and simple behavior; the description covers what the agent needs to know for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The parameter 'repoPath' is described in the schema as 'Local path to the git repo (defaults to cwd)'. The description does not add further meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it is the master entry point for status and before tasks. It lists specific returned items (git branch, Jira ticket, PR, next steps) and distinguishes from sibling tools like git_get_context and jira_get by being a higher-level aggregator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use before any review or coding task, and for getting status. This provides clear context. While it doesn't specify when not to use, the sibling tools imply alternatives for more granular needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_get_contextA

Start here for any coding or review task: current branch, upstream ahead/behind, remote URL, recent commits, working tree status, diff stat summary, and Jira keys detected in the branch name. Pass includeDiff=true to also include the full uncommitted diff.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoPathNoPath to the git repository (defaults to cwd)
commitLimitNoNumber of recent commits to show (default 10)
includeDiffNoInclude full uncommitted diff (default false)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description lists outputs (branch, commits, status, diff, Jira keys) and the effect of includeDiff. However, does not state that the tool is read-only or specify any prerequisites (e.g., must be in a git repo).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. First sentence front-loads all context items; second sentence adds optional flag. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all key aspects: what is returned, optional diff, and Jira integration. Lacks details on output format and error conditions, but sufficient for a gathering tool without output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. Description adds context for includeDiff ('full uncommitted diff') but does not significantly enhance understanding beyond schema descriptions. Falls to baseline due to high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it provides a comprehensive set of git and Jira context items for coding/review tasks, distinguishing it from sibling tools like git_get_diff and get_dev_context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Start here', indicating primary usage for coding/review tasks. Mentions optional includeDiff parameter. Does not explicitly exclude alternatives but context signals and sibling names imply differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_get_diffA

Get a diff between two git refs or commits. Use when you need to compare a feature branch to main, inspect a specific commit range, or review changes between two refs. For large diffs, increase maxChars or use charOffset to page through them.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoPathNoPath to the git repository (defaults to cwd)
fromRefNoBase ref or commit
toRefNoTarget ref or commit (requires fromRef)
maxCharsNoMax characters to return (default 8000). Increase for large diffs.
charOffsetNoSkip this many characters from the start (for paging large diffs)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral transparency. It mentions paging via charOffset and maxChars, but does not describe the output format (e.g., unified diff), handling of errors, or limits. Adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states purpose, second provides usage scenarios. Very concise with no wasted words. Could be slightly more structured, but efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 well-documented parameters, no output schema, and no annotations, the description explains the core functionality and provides paging guidance. It misses details about diff output format but is fairly complete for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter. The description reinforces usage of maxChars and charOffset for large diffs, adding marginal value beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get a diff between two git refs or commits' and lists specific use cases like comparing a feature branch to main. It distinguishes itself from siblings like git_get_context and JIRA tools by focusing on git diffs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool ('when you need to compare a feature branch to main...') and provides guidance for large diffs. It does not include when-not-to-use or alternative tools, but the sibling names provide context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_commentA

Add, update, or delete a comment on a Jira issue. action defaults to "add". Can only edit/delete your own comments. Use Jira wiki markup (Atlassian renderer syntax), not GitHub/CommonMark markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoOperation (default: add)
issueKeyYesJira issue key, e.g. FOO-123
commentIdNoComment ID (required for update/delete)
bodyNoComment text. Use Jira wiki markup (Atlassian renderer syntax), not GitHub/CommonMark markdown. Required for add/update.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully covers behavioral aspects: it restricts editing/deleting to own comments and specifies markup format. It lacks some details like rate limits or response format, but for a CRUD tool, it is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each carrying essential information. No filler or redundancy. It is front-loaded with the core purpose and proceeds to key constraints. Exceptionally concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, no output schema, no annotations), the description covers the main functional aspects: operations, own-comment limitation, and markup. It could include an example or mention return values, but it is adequately complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage with descriptions for all parameters. The description adds value by stating the default action and the own-comment restriction, which are not in the schema. It thus enhances understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action: Add, update, or delete a comment on a Jira issue. It clearly identifies the resource (Jira issue comment) and the specific operations, distinguishing it from sibling tools like jira_get or jira_mutate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies that action defaults to 'add', can only edit/delete own comments, and must use Jira wiki markup. This provides clear context for using the tool, though it does not explicitly mention when not to use it or name specific alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_getA

Full details for one Jira issue: summary, description, status, assignee, sprint, available transitions, recent comments, and a list of attachments (filename, size, mime type, attachment ID). To view an attachment's contents (e.g. an image), call jira_get_attachment with the attachment ID surfaced here.

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyYesJira issue key, e.g. FOO-123
includeCommentsNoInclude comments (default true)
commentsMaxResultsNoMax comments (default 10)
commentsStartAtNoComment pagination offset (default 0)
includeTransitionsNoInclude available transitions (default true)
includeSprintNoInclude sprint data (default true)
fullDescriptionNoReturn the full description even when long (default false — descriptions over ~2000 chars are truncated to save context)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. It explains the effect of the fullDescription parameter (truncation) and mentions 'recent comments', but does not specify recency limits, pagination for attachments, authentication needs, or error behavior. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main purpose, no redundant words. Every sentence provides essential information about what the tool returns and how to use related tools. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists the key return fields (summary, description, status, etc.), which is sufficient for an agent to understand the output. It also references a sibling tool for next steps. Some details (e.g., comment structure) are omitted, but overall it is complete enough for a read operation with 7 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the fullDescription truncation behavior and explicitly linking jira_get_attachment to the attachment ID surfaced by this tool, which is not in the schema. This enriches parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves full details for one Jira issue, listing specific fields (summary, description, status, assignee, sprint, transitions, comments, attachments). It distinguishes from sibling tools by mentioning jira_get_attachment for attachment contents, and implicitly from jira_search (multiple issues) and jira_mutate (updates).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use and an alternative: 'To view an attachment's contents... call jira_get_attachment'. It does not cover when to use this vs. jira_search for listing issues, but the alternative guidance is clear and valuable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_get_attachmentA

Fetch a Jira attachment by ID and return its contents inline. Images are auto-resized + re-encoded; text/JSON/XML return as text; videos and animated images (GIF/APNG/animated WebP) are decoded with ffmpeg into sampled frames (re-call with start/end/frames or mode=scenes to refine); audio returns as an audio block; PDFs return extracted text. Oversized/non-renderable files are saved to a temp file and the path returned. Use jira_get first to discover attachment IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
attachmentIdYesNumeric attachment ID from jira_get output
saveToNoOptional absolute path to save the original (un-resized) file to disk instead of returning inline
maxDimensionNoMax long-edge size in pixels for inline images (default 1568 for images, 768 for video frames).
qualityNoJPEG quality for re-encoded inline images (1-100, default 85 for images, 65 for video frames). Ignored for images with alpha (encoded as PNG).
framesNoVideo/animated-image only: number of frames to sample (default 6, range 1-60). Higher = more detail + more context.
startNoVideo/animated-image only: start of sample window in seconds (default 0). Use with end/frames to zoom into a moment of interest after a coarse first pass.
endNoVideo/animated-image only: end of sample window in seconds (default full duration). Must be greater than start.
modeNoVideo/animated-image only: "uniform" samples N frames evenly (default); "scenes" uses ffmpeg scene-change detection, better for screencasts/narrative content.
sceneThresholdNoVideo/animated-image only: scene-change sensitivity in 0-1 (default 0.3). Only used when mode=scenes. Lower = more frames, higher = fewer.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description fully discloses behaviors: auto-resizing, re-encoding, video decoding with ffmpeg, text/PDF/audio handling, and fallback to temp file for oversized content. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the main action, but could benefit from clearer structuring. All sentences contribute useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all parameter details, return types, and media-specific behaviors. Missing error handling cases (e.g., invalid attachment ID), but overall complete given the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. Description adds value by specifying parameter usage contexts (e.g., 'Video/animated-image only') and providing defaults, ranges, and refinements like 'start/end/frames or mode=scenes'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch a Jira attachment by ID and return its contents inline', specifying the verb, resource, and outcome. It distinguishes from sibling tools by mentioning use with jira_get to discover IDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises to use jira_get first and explains handling of various media types, but lacks explicit when-not-to-use scenarios or detailed alternatives for optional parameters like saveTo vs inline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_mutateA

Create/update a ticket, transition status, assign, comment, link issues, or log work — bundles create/update/transition/comment/link/worklog in one call. Use Jira wiki markup (Atlassian renderer syntax), not GitHub/CommonMark markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyNoExisting issue key to mutate (optional if create is provided)
createNo
updateNo
sprintIdNoSprint ID to add the issue into (optional)
removeFromSprintNoMove the issue to the backlog (remove from any sprint)
transitionIdNoTransition ID (optional if transitionName provided)
transitionNameNoTransition name, e.g. "In Progress" (optional if transitionId provided)
commentNoComment to add after other mutations (optional). Use Jira wiki markup (Atlassian renderer syntax), not GitHub/CommonMark markdown.
linkNoCreate an issue link, e.g. "FOO-123 blocks BAR-456"
worklogNoLog time spent on this issue

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the markup syntax requirement (Jira wiki vs. markdown), which is a behavioral trait. However, it does not mention error handling, ordering of multiple operations, authentication needs, or whether operations are atomic. The definition is incomplete for a complex mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first lists all operations concisely, the second provides the critical markup warning. Every sentence adds value without redundancy. It is front-loaded and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool complexity (10 parameters, nested objects, no output schema), the description provides a high-level overview and the crucial markup constraint. It does not explain return values or operation ordering, but the rich schema compensates partially. Lacks some behavioral context but is fairly complete for an initial understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (80%), so baseline is 3. The description adds value by specifying the markup format requirement for description and comment fields, which is not in the schema. It also clarifies the bundling aspect. This goes beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool bundles multiple mutation operations (create, update, transition, comment, link, worklog) in one call. It uses specific verbs and identifies the resource (Jira ticket). This distinguishes it from siblings like jira_comment, which is only for comments, and jira_get (read-only).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when any combination of the listed mutations is needed. It emphasizes bundling (one call) which guides efficient usage. However, it does not explicitly contrast with siblings like jira_comment for standalone commenting, nor mention when not to use (e.g., read-only scenarios).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_versionA

Manage Jira fix versions (releases): create, update, release, archive, delete. action defaults to "create". For create pass projectKey + name. For update/release/archive/delete pass id (look it up via jira_search resource=versions). "release" sets released=true and defaults releaseDate to today. Once a version exists you can set it on tickets via jira_mutate update.fixVersion.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoOperation (default: create)
projectKeyNoJira project code (required for create when not auto-resolvable)
projectNoAlias for projectKey
idNoVersion id (required for update/release/archive/delete; look up via jira_search resource=versions)
nameNoVersion name, e.g. "9.1.0" (required for create; optional rename for update)
descriptionNoVersion description (optional)
startDateNoStart date in YYYY-MM-DD (optional)
releaseDateNoRelease date in YYYY-MM-DD (optional; defaults to today on action=release)
releasedNoReleased flag (optional; action=release forces true)
archivedNoArchived flag (optional; action=archive forces true)

TDQS

A4.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses action defaults, that 'release' sets released=true and defaults releaseDate to today. However, it does not mention side effects of delete/archive or any destructive behavior beyond the action names.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose and actions, no wasted words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 actions, 10 params, and no output schema, the description covers all actions, required params per action, links to sibling tools for lookup and usage, and provides a post-creation hint. Very complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds significant meaning: clarifies which parameters are required per action (projectKey+name for create, id for others), and explains defaults/forced values (released=true on release, archived=true on archive, releaseDate defaults to today). This goes well beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it manages Jira fix versions with five specific actions, and references sibling tools jira_search and jira_mutate for lookup and ticket assignment, distinguishing itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use each action: create requires projectKey+name; other actions require id from jira_search. Also notes that after creation, jira_mutate can set the version on tickets. Provides clear context and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_workA

Start working on a Jira ticket end-to-end: resolves the ticket (by key or free-text search with a picker when multiple match), creates a local branch with an auto-generated name, fetches the project README from Bitbucket so you have commit/PR conventions in context, and prints a next-steps summary. If issueKey is omitted, provide query for free-text search.

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyNoJira issue key, e.g. FOO-123 (provide this OR query)
queryNoFree-text search when issueKey is unknown — shows a picker if multiple tickets match
repoPathNoLocal repo path (defaults to cwd)
baseBranchNoBranch to base off (default: master)
branchNameNoOverride the generated branch name
transitionNameNoJira transition to apply, e.g. "In Progress" (optional)
pushNoPush branch to remote after creation (default false)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behaviors: ticket resolution, branch creation, README fetch, summary printing, and optional push/transition. Without annotations, it carries the burden, and it covers most major actions, though omits details like error handling or default behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences that front-load the core action and key conditional guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main workflow steps and optional parameters, but could be more detailed about error cases or the exact Jira transitions applied. Given the lack of output schema and annotations, it provides a reasonable overview for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds minor value by explaining the relationship between issueKey and query, but otherwise does not significantly enhance parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to start working on a Jira ticket end-to-end, including resolving the ticket, creating a local branch, fetching a README, and printing a summary. It distinguishes from sibling tools by combining multiple actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance on when to use the issueKey vs query parameters, but does not explicitly exclude use cases for sibling tools like jira_mutate or git_get_context. However, the tool's workflow-oriented purpose is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.4.2
    • Changedjira_get1 field changed
      • addedInput schema / properties / fullDescription
        Added value: +{
        +  "default": false,
        +  "description": "Return the full description even when long (default false — descriptions over ~2000 chars are truncated to save context)",
        +  "type": "boolean"
        +}
  2. 1 tool updatev0.4.1
    • Changedjira_get_attachment7 fields changed
      • addedInput schema / properties / end
        Added value: +{
        +  "description": "Video/animated-image only: end of sample window in seconds (default full duration). Must be greater than start.",
        +  "type": "number"
        +}
      • addedInput schema / properties / frames
        Added value: +{
        +  "description": "Video/animated-image only: number of frames to sample (default 6, range 1-60). Higher = more detail + more context.",
        +  "type": "number"
        +}
      • changedInput schema / properties / maxDimension / description
        Previous value: -"Max long-edge size in pixels for inline images (default 1568). Larger images are downscaled with sharp."New value: +"Max long-edge size in pixels for inline images (default 1568 for images, 768 for video frames)."
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Video/animated-image only: \"uniform\" samples N frames evenly (default); \"scenes\" uses ffmpeg scene-change detection, better for screencasts/narrative content.",
        +  "enum": [
        +    "uniform",
        +    "scenes"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / quality / description
        Previous value: -"JPEG quality for re-encoded inline images (1-100, default 85). Ignored for images with alpha (encoded as PNG)."New value: +"JPEG quality for re-encoded inline images (1-100, default 85 for images, 65 for video frames). Ignored for images with alpha (encoded as PNG)."
      • addedInput schema / properties / sceneThreshold
        Added value: +{
        +  "description": "Video/animated-image only: scene-change sensitivity in 0-1 (default 0.3). Only used when mode=scenes. Lower = more frames, higher = fewer.",
        +  "type": "number"
        +}
      • addedInput schema / properties / start
        Added value: +{
        +  "description": "Video/animated-image only: start of sample window in seconds (default 0). Use with end/frames to zoom into a moment of interest after a coarse first pass.",
        +  "type": "number"
        +}
  3. 10 tool updatesv0.3.10
    • First observedget_dev_context
    • First observedgit_get_context
    • First observedgit_get_diff
    • First observedjira_comment
    • First observedjira_get
    • First observedjira_get_attachment
    • First observedjira_mutate
    • First observedjira_search
    • First observedjira_version
    • First observedstart_work

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: git context, diffs, Jira CRUD, search, comments, attachments, version management, and a workflow starter. No overlap in functionality.

Naming Consistency4/5

Most tools use a verb_noun pattern with a prefix (git_, jira_), but get_dev_context and start_work break the pattern. jira_mutate is also slightly vague. Overall consistent.

Tool Count5/5

10 tools is well-scoped for a server integrating Git and Jira, providing comprehensive coverage without being overwhelming.

Completeness3/5

Covers Jira thoroughly but lacks tools for Git operations like creating PRs or pushing branches beyond start_work. Missing Jira issue deletion. Some gaps in workflow.

Maintenance

ActivityActive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/stubbedev/atlassian-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server