Skip to main content
Glama

atlassian-mcp

一个用于自托管 Jira(Server / Data Center)和自托管 Bitbucket(Server / Data Center)的 Model Context Protocol (MCP) 服务器。围绕工单、拉取请求、评审线程和 git 上下文提供自然语言工作流工具。

注意: 此服务器仅支持自托管实例。Jira Cloud 和 Bitbucket Cloud 使用不同的 API,不受支持。


工具

工作流

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

分支、上游状态、远程 URL、最近的提交、工作树状态、diff 统计以及分支名称中的 Jira 键

git_get_diff

未提交更改的 diff 或两个 ref 之间的 diff;支持通过 charOffset 分页

Jira

Tool

Description

jira_search

通过 resource 参数发现资源:issuesprojectsissue_typesboardssprintsboard_overviewversionscomponentsfieldsusers

jira_get

单个问题的完整详情:摘要、描述、状态、冲刺、转换、评论和附件列表

jira_get_attachment

按 ID 获取 Jira 附件。图片、视频、动图(GIF/APNG/animated WebP)、音频和 PDF 都会内联解码,以便模型查看/收听。文本/JSON 内联显示。过大或无法渲染的附件会自动保存到临时文件并返回路径。saveTo=/absolute/path 将原始文件流式写入磁盘

jira_mutate

创建、更新、转换、评论、关联、添加到冲刺或记录工时——一次调用全部完成

jira_comment

在问题上添加、更新或删除评论(actionadd / update / delete

jira_version

管理修复版本/发布(actioncreate / update / release / archive / delete

Bitbucket

Tool

Description

bitbucket_search

通过 resource 参数发现资源:pull_requests(默认)、reposbranchesusersmine=true 用于你的收件箱

bitbucket_get_pr

完整的 PR 详情:元数据、提交、评论、阻塞项、构建状态、可选 diff,以及描述或评论中引用的任何附件

bitbucket_get_attachment

按 ID 获取仓库附件。与 jira_get_attachment 相同的解码流程(图片、视频、动图、音频、PDF)。过大或无法渲染的附件会自动保存到临时文件并返回路径;saveTo 将原始文件流式写入磁盘

bitbucket_mutate

创建/更新 PR,或执行生命周期操作:approveunapproveneeds_workmergedecline

bitbucket_comment

添加、更新或删除 PR 评论;对于代码更改,使用 suggestion,这样 Bitbucket 会显示“应用建议”(建议块后不要有尾随文本)

bitbucket_get_file

从 Bitbucket 获取分支、标签或提交处的原始文件内容

bitbucket_pr_tasks

管理 PR 任务(清单项):listcreateresolvereopendelete

自然语言示例

  • "我在做什么?" → get_dev_context

  • "为 FOO-123 创建分支" → start_work

  • "发布这个 / 合并并关闭工单" → complete_work

  • "显示等待评审的我的 PR" → bitbucket_search with mine=true

  • "列出此仓库中来自 feature/ABC-123 的打开的 PR" → bitbucket_search with fromBranch

  • "给我 PR 42 的完整概览" → bitbucket_get_pr

  • "从当前分支向 master 打开一个 PR" → bitbucket_mutate with create

  • "批准 / 合并 / 拒绝 PR 42" → bitbucket_mutate with action

  • "回复 PR 42 上的评论 123" → bitbucket_comment with commentId=123

  • "解决 PR 42 上的这个阻塞项" → bitbucket_comment with action=update, severity=BLOCKER, state=RESOLVED

  • "列出 PR 清单任务" → bitbucket_pr_tasks with action=list

  • "查找 PAY 项目中分配给我的 Bug" → jira_search with mine=true, issueType=Bug

  • "当前冲刺里有什么?" → jira_search with resource=board_overview

  • "将 FOO-123 移动到 In Progress" → jira_mutate with transitionName="In Progress"

  • "在 FOO-123 上记录 2 小时工时" → jira_mutate with worklog

  • "在 PAY 中创建版本 9.1.0" → jira_version with action=create, projectKey=PAY, name=9.1.0

  • "列出 PAY 的发布" → jira_search with resource=versions, project=PAY

  • "发布版本 12345" → jira_version with action=release, id=12345

  • "在 FOO-123 上设置修复版本 9.1.0" → jira_mutate with update.fixVersion=9.1.0

  • "在史诗 FOO-100 下创建任务" → jira_mutate with create.issueType=Task, create.parent=FOO-100(自动检测 Epic 并设置 Epic Link)

  • "将 FOO-123 移动到史诗 FOO-100 下" → jira_mutate with update.epicLink=FOO-100

  • "创建一个史诗" → jira_mutate with create.issueType=Epic(Epic Name 默认为摘要)

  • "将故事点设置为 5" → jira_mutate with update.customFields={"Story Points": 5} — 值为纯文本(选项标签、用户名、日期、标签数组);服务器会根据字段 schema 包装它们

  • "我可以在这个工单 / 史诗上设置什么?" → jira_search resource=fields with issueKey=FOO-123(编辑界面)或 project=FOO+issueType=Epic(创建界面):必填和可选字段、值格式、允许的值


Related MCP server: Bitbucket Server MCP

设置

1. 创建配置文件

创建 ~/.atlassian-mcp.json

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

$schema 字段是可选的,但可以启用编辑器的自动补全和验证。

  • projectKey 表示项目代码:

    • Jira 示例:工单 PAY-123 中的 PAY

    • Bitbucket 示例:仓库路径 ENG/payments-service 中的项目 ENG

  • 你也可以使用更便捷的别名:

    • Jira:projectprojectKey 的别名)

    • Bitbucket:projectrepoprojectKeyrepoSlug 的别名)

  • 对于 Bitbucket 工具,projectKeyrepoSlug 通常会自动从你本地的 origin 远程仓库检测。

  • bitbucket_create_pull_request 还会从你当前分支自动检测 fromBranch,如果该分支已存在打开的 PR,则返回该 PR。

  • Jira 项目级调用接受 projectKey,提供时效果最佳。

  • 如果 Jira 问题创建/类型查找时省略了 projectKey,服务器会尝试从当前分支的工单键推断,当只有一个项目可见时回退到自动选择,否则返回带编号的项目列表供选择。

或者,使用环境变量(或此目录中的 .env 文件):

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

配置按以下顺序解析:--config <path> CLI 参数 → ATLASSIAN_MCP_CONFIG 环境变量 → ~/.atlassian-mcp.json$XDG_CONFIG_HOME/atlassian-mcp/config.json(默认 ~/.config/atlassian-mcp/config.json)→ 当前工作目录中的 .atlassian-mcp.json → 环境变量。

2. 连接到你的 AI 工具

无需克隆或构建——只需将你的工具指向 npx @stubbedev/atlassian-mcp@latest,它就会自动安装并运行。

注意:--prefer-online 可能会在某些客户端中破坏 MCP 启动。保持命令简单,需要更新时使用下面的更新步骤。


Claude Code

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

Cursor

添加到 ~/.cursor/mcp.json(全局)或 .cursor/mcp.json(仅项目):

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

Windsurf

添加到 ~/.codeium/windsurf/mcp_config.json

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

Zed

添加到 ~/.config/zed/settings.json

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

OpenCode

添加到项目根目录的 opencode.json(或全局使用 ~/.config/opencode/opencode.json):

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

Codex CLI

添加到 ~/.codex/config.yaml

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

任何其他兼容 MCP 的工具

大多数支持 MCP 的工具都接受相同的 JSON 格式。使用 npx 作为命令,参数为 ["-y", "@stubbedev/atlassian-mcp@latest", "--config", "/path/to/config.json"]

更新现有安装

如果你的 MCP 客户端已经配置好,并且你想要最新的包版本:

npx clear-npx-cache

然后重启你的 MCP 客户端。


不使用 npm 安装

服务器是一个单一的静态 Go 二进制文件。上面的 npx 路径会在首次运行时为你的平台下载预构建的二进制文件;这些替代方案完全跳过 Node:

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

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

然后将你的 MCP 客户端的 command 指向生成的 atlassian-mcp 二进制文件,而不是 npx。在这些路径上,ffmpeg/ffprobe 必须在 PATH 中可用(或设置 ATLASSIAN_MCP_FFMPEG_PATH / ATLASSIAN_MCP_FFPROBE_PATH);npm 包装器会自动捆绑它们。

作为 HTTP 服务器运行(共享 / 在代理后面)

默认情况下,服务器通过 stdio 进行 MCP 通信(每个客户端一个进程,由你的编辑器启动)。它也可以作为长期运行的 Streamable HTTP 服务器运行,供多个客户端共享——在反向代理后面很有用:

atlassian-mcp --http                 # binds 127.0.0.1:7337
atlassian-mcp --http 127.0.0.1:9000  # custom address
ATLASSIAN_MCP_HTTP=1 atlassian-mcp   # same, via env
  • 单个端点 POST /mcp(JSON-RPC)以及可选的 GET /mcp SSE 流,用于承载服务器→客户端的请求(roots/list、elicitation)。服务器是有状态的initialize 会创建一个会话并返回 Mcp-Session-Id 头,客户端必须在每个后续请求和 SSE 流中回显该头。带有缺失/未知/过期会话 ID 的请求会收到 HTTP 404,因此客户端会重新初始化(标准 MCP 客户端行为)。每个连接的客户端/工作树都是一个隔离的会话。

  • 认证: 在回环绑定上不需要令牌。绑定非回环地址需要 ATLASSIAN_MCP_HTTP_TOKEN(客户端以 Authorization: Bearer … 形式发送);否则服务器拒绝启动。在代理处终止 TLS。

  • GET /healthz 是一个未经认证的存活探针(返回 ok),用于代理/负载均衡器。空闲会话在 1 小时后被驱逐。

仓库上下文来自客户端,而不是服务器的工作目录。 需要仓库的工具(git_* 工具、get_dev_contextstart_workcomplete_work 以及 Bitbucket 项目/仓库自动检测)按以下顺序解析:显式的 repoPath 参数 → 通过请求头固定的(见下文) → 客户端的 MCP 工作区根(服务器通过 roots/list 询问,按会话缓存,并在 notifications/roots/list_changed 时刷新) → 进程 cwd(仅 stdio)。因此,一个共享的 HTTP 服务器可以处理多个工作树:每个客户端自己的工作区驱动其调用。当会话暴露多个根(多个工作树)时,没有 repoPath 的工具使用第一个 git 仓库根;传递 repoPath(绝对路径,或与某个根匹配的工作树名称/基名)以定位特定工作树。对于 Bitbucket,显式传递 projectKey+repoSlug 完全跳过仓库检测。仓库必须在服务器主机上可访问(git 工具在本地运行 git)。

通过请求头固定根(HTTP)。 已经知道工作树的反向代理或测试工具可以直接将其交给服务器,跳过 roots/list 往返(即使客户端从未通告 roots 能力也能工作)。发送 file:// URI 或绝对路径(多个用逗号分隔;第一个 git 仓库优先):

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

接受的头部名称:X-Mcp-RootsX-Mcp-RootMcp-RootsMcp-Root。头部值是权威的——它优先于 roots/list,并且在 list_changed 后仍然有效。

已运行的 HTTP 服务器的客户端配置(Claude Code 示例):

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

附件解码流程

附件工具(jira_get_attachmentbitbucket_get_attachment)在返回之前将二进制附件解码为模型可读的内容:

输入

返回的内容

方式

静态图片(PNG/JPEG/WebP/BMP/TIFF/GIF/SVG…)

调整大小的图像内容块

原生 Go(imaging,长边 ≤ maxDimension,默认 1568;EXIF 自动旋转;有 alpha 用 PNG,否则用 JPEG)

动画图片(GIF/APNG/动画 WebP)

N 个采样帧作为图像内容块

ffmpeg + 原生 Go 重新编码(默认 6 帧 @ 768 像素)

视频(mp4/webm/mov/…)

N 个采样帧作为图像内容块

ffmpeg/ffprobe。均匀或场景变化采样。使用 startendframesmodesceneThreshold 重新调用以放大

音频(mp3/wav/ogg/…)

MCP 音频内容块

直通

PDF 文件

提取的文本——如果文本为空(扫描的 PDF),则栅格化页面

原生 Go 文本提取(ledongthuc/pdf);如果存在 pdftoppm/mutool,则栅格化调用它们,否则将原始文件保存到磁盘

类文本(json/xml/yaml/…)

文本内容块

直通

其他所有内容(或过大文件)

自动保存到临时文件;返回路径

os.TempDir() 并带有 atlmcp- 前缀

自动保存的文件会定期按 TTL 和总大小配额进行清理——请参阅下面的 环境覆盖

外部工具(可选)

图像和 PDF 文本解码是纯 Go 实现,不需要额外的东西。没有纯 Go 实现的两个流程会调用外部二进制文件:

  • ffmpeg + ffprobe — 视频和动画图像帧采样。npm 包装器捆绑了 ffmpeg-static / ffprobe-static 并注入它们的路径,因此 npx 安装路径是零配置的。在 go install / Nix 路径上,安装 ffmpeg(它提供 ffprobe)或设置下面的环境变量。

  • pdftoppm(poppler)或 mutool(MuPDF) — 仅用于栅格化没有可提取文本的扫描 PDF。如果 PATH 中都没有,则此类 PDF 会保存到磁盘。

环境变量覆盖

变量

用途

默认值

ATLASSIAN_MCP_HTTP

作为 Streamable HTTP 服务器运行而不是 stdio。1/true127.0.0.1:7337;或设置显式的 host:port。与 --http 相同。

未设置(stdio)

ATLASSIAN_MCP_HTTP_TOKEN

HTTP 模式的 Bearer 令牌。在回环绑定上可选;在非回环绑定上必需

未设置

ATLASSIAN_MCP_FFMPEG_PATH

ffmpeg 二进制文件的路径。

npm:捆绑的 ffmpeg-static;否则为 PATH 上的 ffmpeg

ATLASSIAN_MCP_FFPROBE_PATH

ffprobe 二进制文件的路径。

npm:捆绑的 ffprobe-static;否则为 PATH 上的 ffprobe

ATLASSIAN_MCP_TMP_TTL_DAYS

早于此天数的自动保存附件将被清理。

7

ATLASSIAN_MCP_TMP_MAX_BYTES

os.tmpdir() 中自动保存附件的总大小配额。超过时,最旧的会被驱逐。

1073741824(1 GB)


发布(维护者)

此包以 @stubbedev/atlassian-mcp 发布到 npm。

发布使用语义化版本。破坏性工具表面更改应提升次要版本,同时保持 <1.0.0(例如 0.0.x -> 0.1.0)。

在推送 v* 标签时,.github/workflows/publish.yml 会为 14 个 OS/arch 目标交叉编译 Go 二进制文件,将它们附加到 GitHub 发布中,并发布 npm 包装器(在安装时下载匹配的二进制文件)。

发布流程:

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

flake.nixpackage.json 读取其版本,因此 Nix 包自动跟踪相同的提升。GitHub Actions 从推送的标签构建并发布。

  • 工作流配置为 npm Trusted Publisher(OIDC),因此不需要 NPM_TOKEN 密钥

必需的 npm 设置(一次性):

  • 在 npm 包设置中,将此 GitHub 仓库/工作流添加为 Trusted Publisher


创建个人访问令牌

Jira Server / Data Center

Jira 8.14 开始支持个人访问令牌。

  1. 登录你的 Jira 实例。

  2. 点击右上角的个人资料头像,然后选择 Profile

  3. 在左侧边栏中,点击 Personal Access Tokens

  4. 点击 Create token

  5. 为令牌命名(例如 atlassian-mcp),并可选择设置过期日期。

  6. 点击 Create 并复制令牌——它只会显示一次。

将令牌粘贴为配置文件中 jira 下的 token 值。

如果你的 Jira 版本早于 8.14,你可以改用 HTTP Basic Auth——但此服务器仅支持 Bearer 令牌(PAT)认证。

Bitbucket Server / Data Center

Bitbucket Server 5.5 开始支持个人访问令牌。

  1. 登录你的 Bitbucket 实例。

  2. 点击右上角的个人资料头像,然后选择 Manage account

  3. 在左侧边栏的 Security 下,点击 Personal access tokens

  4. 点击 Create a token

  5. 为令牌命名(例如 atlassian-mcp)。

  6. 设置权限:

    • Projects:读取

    • Repositories:读取 + 写入(创建拉取请求和添加评论需要写入权限)

  7. 可选择设置过期日期。

  8. 点击 Create 并复制令牌——它只会显示一次。

将令牌粘贴为配置文件中 bitbucket 下的 token 值。


开发

服务器是仓库根目录下的单个 Go 模块(没有 src/ 目录树)。

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

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

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

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

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

Available Tools

10 tools
get_dev_contextA

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

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

TDQS

A4.2/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters3/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

git_get_contextA

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

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

TDQS

A4/5.0
Behavior3/5

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

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

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

Conciseness5/5

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

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

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

Completeness4/5

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

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

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

Parameters3/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

git_get_diffA

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

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

TDQS

A3.9/5.0
Behavior3/5

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

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

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

Conciseness4/5

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

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

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

Completeness4/5

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

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

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

Parameters3/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

jira_commentA

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

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

TDQS

A4.4/5.0
Behavior4/5

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

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

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

Conciseness5/5

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

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

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

Completeness4/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

jira_getA

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

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

TDQS

A4.2/5.0
Behavior3/5

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

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

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

Conciseness5/5

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

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

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

Completeness4/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

jira_get_attachmentA

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

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

TDQS

A4.5/5.0
Behavior5/5

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

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

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

Conciseness4/5

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

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

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

Completeness4/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

jira_mutateA

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

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

TDQS

A4.2/5.0
Behavior3/5

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

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

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

Conciseness5/5

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

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

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

Completeness4/5

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

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

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

Parameters4/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

jira_versionA

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

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

TDQS

A4.6/5.0
Behavior3/5

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

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

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

Conciseness5/5

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

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

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

Completeness5/5

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

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

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

Parameters5/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

start_workA

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

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

TDQS

A4.2/5.0
Behavior4/5

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

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

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

Conciseness5/5

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

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

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

Completeness4/5

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

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

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

Parameters3/5

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

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

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

Purpose5/5

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

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

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

Usage Guidelines4/5

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

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

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

Tool Schema Changelog

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

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

TDQS

A4.2/5.0
Disambiguation5/5

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

Naming Consistency4/5

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

Tool Count5/5

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

Completeness3/5

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

Maintenance

ActivityActive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

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

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