atlassian-mcp
atlassian-mcp
Model Context Protocol (MCP) サーバー for 自己ホスト型 Jira (Server / Data Center) および自己ホスト型 Bitbucket (Server / Data Center)。チケット、プルリクエスト、レビュースレッド、git コンテキストに関する自然言語ワークフローのためのツールを提供します。
注: このサーバーは自己ホスト型インスタンスのみをサポートしています。Jira Cloud と Bitbucket Cloud は異なる API を使用するため、サポートされていません。
ツール
ワークフロー
ツール | 説明 |
| 主要エントリポイント: git 状態 + リンクされた Jira チケット + レビュアー/ブロッカー状態と次のステップのヒントを含むオープン PR |
| Jira チケットを開始します: 取得し、ローカルブランチ ( |
| 完了した作業をクローズします: オープン PR をマージし、Jira チケットを Done に遷移させます |
Git
ツール | 説明 |
| ブランチ、上流の状態、リモート URL、最近のコミット、作業ツリーの状態、差分統計、ブランチ名に含まれる Jira キー |
| 未コミット変更の差分、または 2 つの参照間の差分。 |
Jira
ツール | 説明 |
|
|
| 1 件の課題の完全な詳細: 要約、説明、ステータス、スプリント、トランジション、コメント、添付ファイル一覧 |
| Jira 添付ファイルを ID で取得します。画像、動画、アニメーション画像 (GIF/APNG/アニメーション WebP)、音声、PDF はすべてインラインでデコードされるため、モデルはそれらを表示/再生できます。テキスト/JSON はインライン。容量が大きい、またはレンダリングできない添付ファイルは一時ファイルに自動保存され、そのパスが返されます。 |
| 作成、更新、遷移、コメント、リンク、スプリント追加、作業ログを 1 回の呼び出しで実行 |
| 課題へのコメントを追加、更新、削除 ( |
| 修正バージョン / リリースを管理 ( |
Bitbucket
ツール | 説明 |
|
|
| PR の完全な詳細: メタデータ、コミット、コメント、ブロッカー、ビルドステータス、オプションの差分、説明またはコメントで参照されている添付ファイル |
| リポジトリ添付ファイルを ID で取得します。 |
| PR を作成/更新、またはライフサイクルアクションを実行: |
| PR コメントを追加、更新、削除します。コード変更には |
| ブランチ、タグ、またはコミットで Bitbucket から生のファイルコンテンツを取得 |
| PR タスク (チェックリスト項目) を管理: |
自然言語の例
「何に取り組んでいますか?」 →
get_dev_context「FOO-123 のブランチを作成」 →
start_work「これをリリース / マージしてチケットをクローズ」 →
complete_work「レビュー待ちの自分の PR を表示」 →
bitbucket_searchにmine=trueを指定「このリポジトリの feature/ABC-123 からのオープン PR を一覧表示」 →
bitbucket_searchにfromBranchを指定「PR 42 の完全な概要を教えて」 →
bitbucket_get_pr「現在のブランチから master への PR を開く」 →
bitbucket_mutateにcreateを指定「PR 42 を承認 / マージ / 却下」 →
bitbucket_mutateにactionを指定「PR 42 のコメント 123 に返信」 →
bitbucket_commentにcommentId=123を指定「PR 42 のこのブロッカーを解決」 →
bitbucket_commentにaction=update,severity=BLOCKER,state=RESOLVEDを指定「PR のチェックリストタスクを一覧表示」 →
bitbucket_pr_tasksにaction=listを指定「PAY プロジェクトで自分に割り当てられたバグを検索」 →
jira_searchにmine=true,issueType=Bugを指定「現在のスプリントには何がありますか?」 →
jira_searchにresource=board_overviewを指定「FOO-123 を In Progress に移動」 →
jira_mutateにtransitionName="In Progress"を指定「FOO-123 に 2h を記録」 →
jira_mutateにworklogを指定「PAY にバージョン 9.1.0 を作成」 →
jira_versionにaction=create,projectKey=PAY,name=9.1.0を指定「PAY のリリースを一覧表示」 →
jira_searchにresource=versions,project=PAYを指定「バージョン 12345 をリリース」 →
jira_versionにaction=release,id=12345を指定「FOO-123 の修正バージョンを 9.1.0 に設定」 →
jira_mutateにupdate.fixVersion=9.1.0を指定「エピック FOO-100 の下にタスクを作成」 →
jira_mutateにcreate.issueType=Task,create.parent=FOO-100を指定 (エピックを自動検出して Epic Link を設定)「FOO-123 をエピック FOO-100 の下に移動」 →
jira_mutateにupdate.epicLink=FOO-100を指定「エピックを作成」 →
jira_mutateにcreate.issueType=Epicを指定 (エピック名はデフォルトで要約になります)「ストーリーポイントを 5 に設定」 →
jira_mutateにupdate.customFields={"Story Points": 5}を指定 — 値はプレーン (オプションラベル、ユーザー名、日付、ラベルの配列) で、サーバーがフィールドスキーマに従ってラップします「このチケット / エピックには何を設定できますか?」 →
jira_search resource=fieldsに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-123内のPAYBitbucket の例: リポジトリパス
ENG/payments-service内のプロジェクトENG
より使いやすいエイリアスも使用できます:
Jira:
project(projectKeyのエイリアス)Bitbucket:
projectとrepo(projectKeyとrepoSlugのエイリアス)
Bitbucket ツールでは、
projectKeyとrepoSlugは通常、ローカルのoriginリモートから自動検出されます。bitbucket_create_pull_requestは現在のブランチからfromBranchも自動検出し、そのブランチに既存のオープン PR がある場合はそれを返します。Jira のプロジェクトスコープの呼び出しは
projectKeyを受け付け、指定すると最もよく機能します。projectKeyが Jira の課題作成 / タイプ検索で省略された場合、サーバーは現在のブランチのチケットキーから推測を試み、表示されているプロジェクトが 1 つだけの場合は自動選択にフォールバックし、それ以外の場合は番号付きプロジェクト一覧を返して選択させます。
または、環境変数 (またはこのディレクトリ内の .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.jsonCursor
~/.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をnpxの代わりに生成されたatlassian-mcpバイナリに向けます。これらのインストール経路では、ffmpeg/ffprobeがPATH上にある必要があります(またはATLASSIAN_MCP_FFMPEG_PATH / ATLASSIAN_MCP_FFPROBE_PATHを設定してください)。npmラッパーはこれらを自動的にバンドルします。
HTTPサーバーとして実行する(共有 / プロキシ背後)
デフォルトでは、サーバーはstdio経由でMCPを話します(エディタによって起動される、クライアントごとに1つのプロセス)。代わりに、多くのクライアントが共有する長時間稼働の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)に加え、サーバー→クライアントのリクエスト(roots/list、聞き出し)を運ぶオプションのGET /mcpSSEストリームがあります。サーバーはステートフルです。initializeはセッションを作成し、Mcp-Session-Idヘッダーを返します。クライアントは以降のすべてのリクエストとSSEストリームでそのヘッダーを必ずエコーする必要があります。セッションIDが欠落・不明・期限切れのリクエストはHTTP 404を受け取るため、クライアントは再初期化します(標準的なMCPクライアントの動作)。接続された各クライアント/ワークツリーは分離されたセッションです。認証: ループバックバインドではトークンは不要です。非ループバックアドレスへのバインドは
ATLASSIAN_MCP_HTTP_TOKENを必須とします(クライアントはAuthorization: Bearer …として送信)。それ以外の場合、サーバーは起動を拒否します。TLSはプロキシで終端してください。**
GET /healthz**は、プロキシ/ロードバランサー向けの認証不要の生存確認プローブです(okを返します)。アイドルセッションは1時間後に破棄されます。
リポジトリコンテキストはサーバーの作業ディレクトリではなく、クライアントから取得されます。 リポジトリを必要とするツール(git_*ツール、get_dev_context、start_work、complete_work、およびBitbucketプロジェクト/リポジトリの自動検出)は、次の順序で解決します。明示的なrepoPath引数 → リクエストヘッダーで固定されたルート(下記参照) → クライアントのMCPワークスペースルート(サーバーはroots/listで問い合わせ、セッションごとにキャッシュし、notifications/roots/list_changedで更新) → プロセスのcwd(stdioのみ)。したがって、1つの共有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( |
アニメーション画像(GIF/APNG/アニメーションWebP) | サンプリングされたNフレームの画像コンテンツブロック |
|
動画(mp4/webm/mov/…) | サンプリングされたNフレームの画像コンテンツブロック |
|
音声(mp3/wav/ogg/…) | MCPオーディオコンテンツブロック | パススルー |
抽出されたテキスト — テキストが空の場合はラスタライズされたページ(スキャンPDF) | ネイティブGoテキスト抽出( | |
テキスト類(json/xml/yaml/…) | テキストコンテンツブロック | パススルー |
その他すべて(またはサイズ超過) | 一時ファイルに自動保存され、パスが返される |
|
自動保存されたファイルは、TTLと合計サイズのクォータによって定期的に削除されます。詳細は下記の環境変数の上書きを参照してください。
外部ツール(オプション)
画像およびPDFテキストのデコードは純Goで実装されているため、追加のものは必要ありません。純Go実装がない2つのパイプラインは外部バイナリを呼び出します:
ffmpeg+ffprobe— 動画およびアニメーション画像のフレームサンプリング用です。npmラッパーはffmpeg-static/ffprobe-staticをバンドルし、それらのパスを注入するため、npxインストール経路では設定不要です。go install/ Nix経路では、ffmpegをインストールするか(ffprobeも含まれます)、下記の環境変数を設定してください。pdftoppm(poppler)またはmutool(MuPDF) — 抽出可能なテキストがないスキャンPDFをラスタライズする場合にのみ必要です。どちらもPATHにない場合、そのようなPDFは代わりにディスクに保存されます。
環境変数の上書き
変数 | 目的 | デフォルト |
| stdioの代わりにStreamable HTTPサーバーとして実行。 | 未設定(stdio) |
| HTTPモード用のBearerトークン。ループバックバインドでは任意。非ループバックバインドでは必須。 | 未設定 |
|
| npm: バンドルされた |
|
| npm: バンドルされた |
| これより古い自動保存された添付ファイルは削除されます。 |
|
|
|
|
リリース(メンテナー向け)
このパッケージはnpmに@stubbedev/atlassian-mcpとして公開されています。
リリースにはセマンティックバージョニングを使用してください。ツールのインターフェースを破壊する変更は、<1.0.0の間はマイナーバージョンを上げるべきです(例: 0.0.x -> 0.1.0)。
v*タグがプッシュされると、.github/workflows/publish.ymlがGoバイナリを14のOS/アーキテクチャターゲット向けにクロスコンパイルし、GitHubリリースに添付して、npmラッパーを公開します(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-tagsflake.nixはpackage.jsonからバージョンを読み取るため、Nixパッケージも同じバージョンアップに自動的に追従します。GitHub Actionsはプッシュされたタグからビルドおよび公開を行います。
ワークフローはnpm Trusted Publisher(OIDC)用に構成されているため、
NPM_TOKENシークレットは不要です
必要なnpm設定(1回限り):
npmパッケージ設定で、このGitHubリポジトリ/ワークフローをTrusted Publisherとして追加してください
個人アクセストークンの作成
Jira Server / Data Center
個人アクセストークンはJira 8.14以降でサポートされています。
Jiraインスタンスにログインします。
右上隅にあるプロフィールアバターをクリックし、プロフィールを選択します。
左側のサイドバーで個人アクセストークンをクリックします。
トークンを作成をクリックします。
トークンに名前を付け(例:
atlassian-mcp)、必要に応じて有効期限を設定します。作成をクリックしてトークンをコピーします。トークンは一度だけ表示されます。
設定ファイルのjiraの下にあるtokenの値としてトークンを貼り付けます。
Jiraのバージョンが8.14より古い場合は、代わりにHTTP Basic Authを使用できます。ただし、このサーバーはBearerトークン(PAT)認証のみをサポートしています。
Bitbucket Server / Data Center
個人アクセストークンはBitbucket Server 5.5以降でサポートされています。
Bitbucketインスタンスにログインします。
右上隅にあるプロフィールアバターをクリックし、アカウントの管理を選択します。
左側のサイドバーのセキュリティの下にある個人アクセストークンをクリックします。
トークンを作成をクリックします。
トークンに名前を付けます(例:
atlassian-mcp)。権限を設定します:
プロジェクト: 読み取り
リポジトリ: 読み取り + 書き込み(書き込みはプルリクエストの作成とコメントの追加に必要です)
必要に応じて有効期限を設定します。
作成をクリックしてトークンをコピーします。トークンは一度だけ表示されます。
設定ファイルの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 smokeAvailable Tools
10 toolsget_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).
| Name | Required | Description | Default |
|---|---|---|---|
| repoPath | No | Local path to the git repo (defaults to cwd) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repoPath | No | Path to the git repository (defaults to cwd) | |
| commitLimit | No | Number of recent commits to show (default 10) | |
| includeDiff | No | Include full uncommitted diff (default false) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repoPath | No | Path to the git repository (defaults to cwd) | |
| fromRef | No | Base ref or commit | |
| toRef | No | Target ref or commit (requires fromRef) | |
| maxChars | No | Max characters to return (default 8000). Increase for large diffs. | |
| charOffset | No | Skip this many characters from the start (for paging large diffs) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Operation (default: add) | |
| issueKey | Yes | Jira issue key, e.g. FOO-123 | |
| commentId | No | Comment ID (required for update/delete) | |
| body | No | Comment text. Use Jira wiki markup (Atlassian renderer syntax), not GitHub/CommonMark markdown. Required for add/update. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | Yes | Jira issue key, e.g. FOO-123 | |
| includeComments | No | Include comments (default true) | |
| commentsMaxResults | No | Max comments (default 10) | |
| commentsStartAt | No | Comment pagination offset (default 0) | |
| includeTransitions | No | Include available transitions (default true) | |
| includeSprint | No | Include sprint data (default true) | |
| fullDescription | No | Return the full description even when long (default false — descriptions over ~2000 chars are truncated to save context) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| attachmentId | Yes | Numeric attachment ID from jira_get output | |
| saveTo | No | Optional absolute path to save the original (un-resized) file to disk instead of returning inline | |
| maxDimension | No | Max long-edge size in pixels for inline images (default 1568 for images, 768 for video frames). | |
| quality | No | 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). | |
| frames | No | Video/animated-image only: number of frames to sample (default 6, range 1-60). Higher = more detail + more context. | |
| start | No | 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. | |
| end | No | Video/animated-image only: end of sample window in seconds (default full duration). Must be greater than start. | |
| mode | No | Video/animated-image only: "uniform" samples N frames evenly (default); "scenes" uses ffmpeg scene-change detection, better for screencasts/narrative content. | |
| sceneThreshold | No | Video/animated-image only: scene-change sensitivity in 0-1 (default 0.3). Only used when mode=scenes. Lower = more frames, higher = fewer. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | No | Existing issue key to mutate (optional if create is provided) | |
| create | No | ||
| update | No | ||
| sprintId | No | Sprint ID to add the issue into (optional) | |
| removeFromSprint | No | Move the issue to the backlog (remove from any sprint) | |
| transitionId | No | Transition ID (optional if transitionName provided) | |
| transitionName | No | Transition name, e.g. "In Progress" (optional if transitionId provided) | |
| comment | No | Comment to add after other mutations (optional). Use Jira wiki markup (Atlassian renderer syntax), not GitHub/CommonMark markdown. | |
| link | No | Create an issue link, e.g. "FOO-123 blocks BAR-456" | |
| worklog | No | Log time spent on this issue |
TDQS
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.
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.
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.
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.
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.
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_searchA
Discover Jira resources (tickets, projects, boards, sprints, versions, users). Set resource:
• "issues" (default) — search by text, JQL, project, status, assignee, issue type, or mine=true for your queue
• "projects" — list all projects and their keys
• "issue_types" — valid types and statuses for a project
• "boards" — list boards (pass project to filter by project key); use this to find the boardId before fetching sprints or board_overview
• "sprints" — sprints for a board (pass boardId); if you don't know the boardId, first use resource=boards
• "board_overview" — active/future sprints with their issues for a board (pass boardId); use when asked "what's in the sprint", "show me the board", or "what's everyone working on"
• "versions" — list fix versions/releases for a project (pass project; optionally pass query to filter by name substring). If the version you need does not exist, create it yourself with jira_version action=create — do NOT ask the user to make it in the Jira UI.
• "users" — find users by name/email (pass query)
| Name | Required | Description | Default |
|---|---|---|---|
| resource | No | What to search (default: issues) | |
| mine | No | Return issues assigned to you (resource=issues only) | |
| query | No | Text search or user name query | |
| jql | No | Raw JQL (resource=issues only, overrides other filters) | |
| project | No | Project key filter or scope for issue_types/boards | |
| status | No | Status filter (issues only, or board_overview to filter issues by status) | |
| assignee | No | Assignee username filter (issues only, or board_overview to filter issues by assignee) | |
| issueType | No | Issue type filter (issues only) | |
| boardId | No | Board ID (required for resource=sprints or board_overview) | |
| sprintState | No | Sprint state filter: active, future, closed (sprints and board_overview) | |
| includeIssues | No | Include issues per sprint in board_overview (default true) | |
| maxResults | No | Max results (default 20) | |
| startAt | No | Pagination offset (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies read-only behavior ('Discover') and explains what each resource returns. It discloses defaults (maxResults, includeIssues) but does not explicitly mention auth needs or lack of side effects. Still, the description 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with bullet points and clear resource groupings. Every sentence adds value. Minor excess whitespace but overall concise for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters and no output schema, the description is highly complete. It covers all resource types, parameter relevance, and usage flow (e.g., boards then sprints). Users or agents will have a clear mental model of what the tool does and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 significant value by explaining which parameters apply to which resources, the order of operations (e.g., use boards first to get boardId), and contextual hints like 'mine=true for your queue'. This exceeds baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool discovers Jira resources and lists eight specific resource types with distinct purposes. It distinguishes itself from sibling tools like jira_get (single issue) and jira_version (version management).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance for each resource, including prerequisites (e.g., need boardId before sprints/board_overview, use boards to find it) and when to create a version instead of asking the user. It sets defaults and covers common queries like mine=true.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Operation (default: create) | |
| projectKey | No | Jira project code (required for create when not auto-resolvable) | |
| project | No | Alias for projectKey | |
| id | No | Version id (required for update/release/archive/delete; look up via jira_search resource=versions) | |
| name | No | Version name, e.g. "9.1.0" (required for create; optional rename for update) | |
| description | No | Version description (optional) | |
| startDate | No | Start date in YYYY-MM-DD (optional) | |
| releaseDate | No | Release date in YYYY-MM-DD (optional; defaults to today on action=release) | |
| released | No | Released flag (optional; action=release forces true) | |
| archived | No | Archived flag (optional; action=archive forces true) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | No | Jira issue key, e.g. FOO-123 (provide this OR query) | |
| query | No | Free-text search when issueKey is unknown — shows a picker if multiple tickets match | |
| repoPath | No | Local repo path (defaults to cwd) | |
| baseBranch | No | Branch to base off (default: master) | |
| branchName | No | Override the generated branch name | |
| transitionName | No | Jira transition to apply, e.g. "In Progress" (optional) | |
| push | No | Push branch to remote after creation (default false) |
TDQS
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.
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.
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.
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.
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.
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 tool update
v0.4.2- Changed
jira_get1 field changed- added
Input schema / properties / fullDescriptionAdded value: +{ + "default": false, + "description": "Return the full description even when long (default false — descriptions over ~2000 chars are truncated to save context)", + "type": "boolean" +}
1 tool update
v0.4.1- Changed
jira_get_attachment7 fields changed- added
Input schema / properties / endAdded value: +{ + "description": "Video/animated-image only: end of sample window in seconds (default full duration). Must be greater than start.", + "type": "number" +} - added
Input schema / properties / framesAdded value: +{ + "description": "Video/animated-image only: number of frames to sample (default 6, range 1-60). Higher = more detail + more context.", + "type": "number" +} - changed
Input schema / properties / maxDimension / descriptionPrevious 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)." - added
Input schema / properties / modeAdded 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" +} - changed
Input schema / properties / quality / descriptionPrevious 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)." - added
Input schema / properties / sceneThresholdAdded 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" +} - added
Input schema / properties / startAdded 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" +}
10 tool updates
v0.3.10- First observed
get_dev_context - First observed
git_get_context - First observed
git_get_diff - First observed
jira_comment - First observed
jira_get - First observed
jira_get_attachment - First observed
jira_mutate - First observed
jira_search - First observed
jira_version - First observed
start_work
TDQS
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.
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.
10 tools is well-scoped for a server integrating Git and Jira, providing comprehensive coverage without being overwhelming.
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
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
Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Bitbucket Cloud and self-hosted instances for pull request reviews, code search, repository operations, and managing PR comments and approvals.19GPL 3.0
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to Bitbucket Server/Data Center for reviewing pull requests, managing repositories, searching users, and more.1494MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to interact with Atlassian Cloud (Jira, Confluence, Bitbucket) through natural language, providing CRUD operations for issues, pages, pull requests, and more.8626MIT
- AlicenseAqualityBmaintenanceEnables to interact with Bitbucket Server repositories, pull requests, and code reviews, including file browsing, PR management, and review actions through natural language.5918Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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