Skip to main content
Glama

atlassian-mcp

Сервер Model Context Protocol (MCP) для самостоятельно размещённого Jira (Server / Data Center) и самостоятельно размещённого Bitbucket (Server / Data Center). Предоставляет инструменты для рабочих процессов на естественном языке вокруг задач, пул-реквестов, веток обсуждений и git-контекста.

Примечание: Этот сервер поддерживает только самостоятельно размещённые экземпляры. Jira Cloud и Bitbucket Cloud используют другие API и не поддерживаются.


Tools

Workflow

Tool

Description

get_dev_context

Главная точка входа: состояние git + связанная задача Jira + открытый PR со статусом ревьюера/блокировщика и подсказками по следующим шагам

start_work

Начать работу над задачей Jira: получает её, создаёт локальную ветку (feature/FOO-123-slug) и при необходимости переводит задачу в другой статус

complete_work

Завершить выполненную работу: объединяет открытый PR и переводит задачу Jira в статус Done

Git

Tool

Description

git_get_context

Ветка, состояние upstream, URL удалённого репозитория, последние коммиты, статус рабочего дерева, статистика diff и ключи Jira в имени ветки

git_get_diff

Diff незакоммиченных изменений или между двумя refs; поддерживает постраничный вывод через charOffset

Jira

Tool

Description

jira_search

Поиск ресурсов: issues, projects, issue_types, boards, sprints, board_overview, versions, components, fields или users через параметр resource

jira_get

Полные сведения об одной задаче: сводка, описание, статус, спринт, переходы, комментарии и список вложений

jira_get_attachment

Получить вложение Jira по ID. Изображения, видео, анимированные изображения (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

Tool

Description

bitbucket_search

Поиск ресурсов: pull_requests (по умолчанию), repos, branches или users через параметр resource; mine=true для вашего inbox

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

Natural language examples

  • "над чем я работаю?" → get_dev_context

  • "создай ветку для FOO-123" → start_work

  • "отправь это / объедини и закрой задачу" → complete_work

  • "покажи мои PR, ожидающие ревью" → bitbucket_search with mine=true

  • "перечисли открытые PR для этого репозитория из feature/ABC-123" → bitbucket_search with fromBranch

  • "дай мне полный обзор PR 42" → bitbucket_get_pr

  • "открой PR из моей текущей ветки в master" → bitbucket_mutate with create

  • "одобрить / объединить / отклонить PR 42" → bitbucket_mutate with action

  • "ответить на комментарий 123 в PR 42" → 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"

  • "запиши 2 часа на FOO-123" → jira_mutate with worklog

  • "создай версию 9.1.0 в PAY" → 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

  • "установи версию исправления 9.1.0 на FOO-123" → 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 по умолчанию равен сводке)

  • "установи story points в 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

Setup

1. Create a config file

Создайте ~/.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 в задаче PAY-123

    • Пример Bitbucket: проект ENG в пути репозитория ENG/payments-service

  • Также можно использовать эргономичные псевдонимы:

    • Jira: project (псевдоним projectKey)

    • Bitbucket: project и repo (псевдонимы projectKey и repoSlug)

  • Для инструментов Bitbucket projectKey и repoSlug обычно автоматически определяются из вашего локального удалённого репозитория origin.

  • bitbucket_create_pull_request также автоматически определяет fromBranch из вашей текущей ветки и возвращает существующий открытый PR, если он уже есть для этой ветки.

  • Вызовы Jira, ограниченные проектом, принимают projectKey и работают лучше всего, когда он указан.

  • Если projectKey опущен при создании задачи Jira или поиске типа, сервер пытается определить его из ключа задачи в текущей ветке, при отсутствии — автоматически выбирает, если виден только один проект, иначе возвращает нумерованный список проектов для выбора.

В качестве альтернативы используйте переменные окружения (или файл .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

Конфигурация разрешается в следующем порядке: аргумент CLI --config <path> → переменная окружения ATLASSIAN_MCP_CONFIG → ~/.atlassian-mcp.json → $XDG_CONFIG_HOME/atlassian-mcp/config.json (по умолчанию ~/.config/atlassian-mcp/config.json) → .atlassian-mcp.json в текущем каталоге → переменные окружения.

2. Connect to your AI tool

Не требуется клонирование или сборка — просто укажите вашему инструменту на 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

Any other MCP-compatible tool

Большинство инструментов, поддерживающих MCP, принимают тот же формат JSON. Используйте npx в качестве команды с ["-y", "@stubbedev/atlassian-mcp@latest", "--config", "/path/to/config.json"] в качестве аргументов.

Updating existing installs

Если ваш 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/ffprobe должны быть доступны через PATH (или задайте 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), а также опциональный SSE-поток GET /mcp, передающий запросы от сервера к клиентам (roots, elicitation/list). Сервер осознанный: initialize создаёт сессию и возвращает заголовок Mcp-Session-Id, который клиент обязан повторять в каждом последующем запросе и в SSE-потоке. Запросы с отсутствующим/неизвестным/просроченным id сессии получают HTTP 404, чтобы клиент переинициализировался (стандартное поведение MCP-клиента). Каждый подключённый клиент/worktree — изолированная сессия.

Аутентификация: на loopback-привязке токен не требуется. Привязка к не-loopback-адресу требует ATLASSIAN_MCP_HTTP_TOKEN (клиенты передают как Authorization: Bearer …); иначе сервер откажет запуск. Завершайте TLS-терминирование на своём прокси. GETZ /health — неаутентифицированный liveness-пробник (возвращает ok) для прокси/балансеров. Простаивающие сессии вытесняются через 1 час.

Контекст репозитория берётся от клиента, а не из рабочей директории сервера. Инструменты, которым нужен репозиторий (инструменты git_*, get_dev_context, start_work, complete_work и автоопределение Bitbucket/репозитория) разрешают его в следующем порядке: явный аргумент repoPath → корневой путь, заданный через заголовок запроса (см. ниже) → корневые пути MCP клиента (сервер запрашивает через root/list, кэширует по сессиям и обновляет по notifications/roots/list_changed) → текущая рабочая директория процесса (только stdio). Значит, один общий HTTP-сервер обслуживает много worktree: свой клиентский workspace движет его вызовами. Когда сессия показывает несколько корней (несколько worktree), инструмент без repoPath использует первый git-репозиторий из корня; передайте repoPath (абсолютный путь или имя worktree/базовое имя, совпадающее с одним из корней) для конкретного worktree. Для Bitbucket передача projectKey+repoSlug полностью пропускает определение репозитория. Репозитории должны быть доступны на хосте сервера (git-инструменты запускают git локально).

Закрепление корня через заголовок запроса (HTTP). Обратный прокси или хуks, который уже знает worktree, может передать его серверу напрямую, минуя круг roots/list (и работает даже когда клиент никогда не анонсировал capability 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/JPG/WebP/BMP/TIFF/GIF/…)

Блоки изменённых изображений

нативный Go (imaging, длинная грань ≤ maxDimension, по умолчанию 1568; автоповорот по EXIF; PNG для альфа-канала, иначе JPEG)

Анимированные изображения (GIF/APNG/анимированный WebP)

N семплированных кадров как блоки изображений

ffmpeg + нативный Go повторно кодирует (по умолчанию 6 кадров @ 768px)

Видео (mp4/webm/mov/…)

N семплированных кадров как блоки изображений

ffmpeg/ffprobe. Равномерная или scene-change выборка. Уточняющий повторный вызов с start, end, frames, mode, sceneThreshold для приближения

Аудио (mp3/wav/ogg/…)

MCP audio content block

проброс (pass-through)

PDF

Извлечённый текст — или растеризованные страницы, если текст пустой (сканы)

нативное Go-извлечение текста (ledongth/pdf); оболочки растеризации в pdftoppm/mutool, если такие есть, иначе оригинал сохраняется на диск

Текстовое (json/xml/yaml/…)

Текстовый контент-блок

pass-through

Всё остальное (или слишком большое)

Автосохранение во временный файл; возвращается путь

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

Запускать как потоковый HTTP-сервер вместо stdio. 1/true → 127.0.0.1:7337; или задать явный host:port. То же, что --http.

unset (stdio)

ATLASSIAN_MCP_TOKEN

Bearer токен для HTTP-режима. Опционален на loopback-привязке; обязателен на не-loopback.

unset

ATLASSIAN_MCP_FFMPEG_PATH

Путь к бинарнику ffmpeg.

npm: встроенный ffmpeg-static; иначе ffmpeg в PATH

ATLASSIAN_MCP_FFPROBE_PATH

Путь к бинарнику ffprobe.

npm: встроенный ffprobe-static; иначе ffprobe в PATH

ATLASSIAN_MCP_TMP_TTL_DAYS

Автосохранённые вложения старше этого срока удаляются.

7

ATLASSIAN_MCP_TMP_MAX_BYTES

Квота на общий размер автосохранённых вложений (в os.tmpdir()). При превышении удаляются самые старые.

1073741824 (1 ГБ)


Релизы (Мейнтейнеры)

Пакет публикуется в npm как @stubbedev/atlassian-mcp.

Используйте семантическое версионирование. Критические изменения поверхности инструментов должны поднимать минорную версию, пока <1.0.0 (например 0.0.x -> 0.1.0).

По тегу v* в .github/workflows/publish.yml происходит кросс-компиляция Go-бинарника для 14 ОС/архитектур, прикрепление их к 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.nix читает версию из package.json, поэтому Nix-пакет следит за тем же обновлением автоматически. GitHub Actions собирает и публикует из запушенного тега.

  • Рабочий процесс настроен на доверенный издатель OIDC в npm, поэтому секрет NPM_TOKEN не требуется.

Необходимая разовая конфигурация npm:

  • В настройках пакета npm добавьте этот GitHub-репозиторий/рабочий процесс как Trusted Publisher


Создание персональных токенов доступа

Jira Server / Data Center

Персональные токены доступны начиная с Jira 8.14.

  1. Войдите в свой экземпляр Jira.

  2. Нажмите на аватар своего профиля в правом верхнем углу и выберите Профиль.

  3. На левой боковой панели выберите Персональные токены доступа.

  4. Нажмите Создать токен.

  5. Дайте токену имя (например, atlassian-mcp) и, опционально, установите срок действия.

  6. Нажмите Создать и скопируйте токен — он будет показан только один раз.

Вставьте токен как значение token в раздел jira вашего конфигурационного файла.

Если ваша версия Jira старше 8.14, можно использовать HTTP Basic Auth, но этот сервер поддерживает только Bearer-токены (PAT).

Bitbucket Server / Data Center

Персональные токены доступа поддерживаются начиная с Bitbucket Server 5.5.

  1. Войдите в ваш экземпляр Bitbucket.

  2. Нажмите на аватар своего профиля в правом верхнем углу и выберите Управление аккаунтом.

  3. В левой боковой панели, в разделе Безопасность, выберите Персональные токены доступа.

  4. Нажмите Создать токен.

  5. Дайте токену имя (например, atlassian-mcp).

  6. Задайте права:

    • Проекты: Чтение

    • Репозитории: Чтение + Запись (Запись нужна для создания пул-реквестов и комментариев)

  7. При желании задайте срок действия.

  8. Нажмите Создать и скопируйте токен — он будет показан только один раз.

Вставьте токен как значение token в раздел bitbucket вашего конфигурационного файла.


Разработка

Сервер — это один 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.

  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

A3.9/5.0

Scored across 10 tools

Disambiguation2/5

git_get_context and get_dev_context both claim to be the master entry point for coding/review tasks and return heavily overlapping git+Jira status information, making it unclear which one to call. jira_comment also duplicates the comment capability already bundled inside jira_mutate, further blurring tool boundaries.

Naming Consistency3/5

Most Jira tools follow a readable jira_<verb_or_noun> pattern and Git tools use git_get_*, but get_dev_context and start_work break the prefix convention, and jira_mutate uses a vague verb instead of a concrete resource-action name. The naming is still mostly predictable despite these deviations.

Tool Count4/5

10 tools is a reasonable size for a combined Jira/Git workflow and covers the major operations without feeling bloated. The count is slightly higher than needed because of overlapping entry-point tools and duplicated comment functionality, but it is still well within an appropriate range.

Completeness4/5

The set covers core Jira lifecycle operations, attachment retrieval, version management, git context, and diff inspection. Notable gaps include PR creation/merging despite those actions being hinted at in descriptions, and no explicit issue deletion, but most workflows can be completed with the existing tools.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers