mcpField
M
mcp-jira-dc

mcp-jira-dc

本地服务
github.com/tekthar生产力12 天前更新

关于 mcp-jira-dc

mcp-jira-dc 是面向使用自托管 Atlassian 实例团队的 MCP 服务,支持 Jira Data Center 和 Jira Server。它提供 Jira 操作工具,并按需列出工具,将凭据保存在本机。

主要功能

  1. 01搜索、创建、更新和转换问题
  2. 02处理评论、冲刺和工时记录
  3. 03通过搜索发现较少使用的工具
  4. 04在沙箱中运行只读脚本
  5. 05按权限和允许列表筛选工具
  6. 06将令牌存入操作系统密钥链

适用场景

  1. 01查询冲刺问题并找出阻塞项
  2. 02更新 Jira 问题并添加评论
  3. 03将 Agent 限制为只读 Jira 访问
  4. 04审计 Agent 发起的工具调用

MCP 相关

它在本机运行,作为 MCP 服务通过 Jira REST API 将 MCP 客户端连接到 Jira Data Center 或 Server。客户端可使用搜索和修改问题等工具,并可选择启用工具筛选和审计日志。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"tekthar-mcp-jira-dc": {
"command": "npx",
"args": [
"-y",
"mcp-jira-dc"
],
"env": {
"ATLASSIAN_DC_MCP_CONFIG_FILE": "<ATLASSIAN_DC_MCP_CONFIG_FILE>",
"JIRA_HOST": "<JIRA_HOST>",
"JIRA_API_BASE_PATH": "<JIRA_API_BASE_PATH>",
"JIRA_API_TOKEN": "<JIRA_API_TOKEN>"
}
}
}
}
启动命令npx -y mcp-jira-dc
需要配置的环境变量
ATLASSIAN_DC_MCP_CONFIG_FILEAbsolute path to a shared dotenv-style config file. When set, values are read from this file before direct environment variable overrides are applied.
JIRA_HOSTJira host domain (e.g. your-instance.atlassian.net). Required unless provided through ATLASSIAN_DC_MCP_CONFIG_FILE or JIRA_API_BASE_PATH.
JIRA_API_BASE_PATHJira API base path (alternative to JIRA_HOST). Required unless provided through ATLASSIAN_DC_MCP_CONFIG_FILE or JIRA_HOST.
JIRA_API_TOKEN密钥Jira Personal Access Token or API token. Required unless provided through ATLASSIAN_DC_MCP_CONFIG_FILE.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-jira-dc0.47.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Atlassian Data Center MCP

mcp-jira-dc on npm mcp-confluence-dc on npm mcp-bitbucket-dc on npm CI License: MIT OpenSSF Scorecard

面向在自有服务器上运行 Jira、Confluence 和 Bitbucket 的 AI 优先型企业打造的领先 Atlassian Data Center MCP。

团队选择 Data Center,是为了掌控自己的数据。但不应该因此放弃最优秀的 AI 模型。三个 Model Context Protocol(MCP)服务让 Claude、Cursor 和任何其他 MCP 客户端都能使用可自托管的 Atlassian 工具:搜索和更新问题、读取和编写页面、审查拉取请求,同时避免模型上下文被大量内容塞满。每个服务只需一条 npx 命令。你的 Agent 使用个人访问令牌登录,因此它能做你能做的事,仅此而已。

npx -y mcp-jira-dc setup                    # ← saves your Jira address and token
claude mcp add jira -- npx -y mcp-jira-dc   # ← connects Claude Code

Claude 现在可以使用 14 个 Jira 工具:用于处理问题、评论和状态转换的日常工具,以及一个需要时可访问另外 43 个工具的搜索工具,还有一个能将多次读取合并为一个答案的沙箱。

一个社区项目。与 Atlassian 无关,也未获得 Atlassian 认可。Jira、Confluence 和 Bitbucket 是 Atlassian 的商标。

你会喜欢它的原因

  • 一条命令,无需托管任何内容:npx 在你的计算机上运行每个服务。无需 Python、Docker,也无需运行服务器。专为 Data Center 和 Server 版本打造,这些版本不在 Atlassian 自家 MCP 服务的支持范围内。
  • 工具列表精简,但能力不受限:每个列出的工具都会在每次请求中消耗令牌,因此列表只展示日常工具,其余工具则通过搜索按需使用。Agent 看到的是 14 个 Jira 工具,而不是 61 个,但仍可使用全部工具。
  • 直接给出答案,而不是数页 JSON:对于需要多次调用的问题,Agent 会编写一个短脚本,在沙箱中执行调用并仅返回答案。下面的一个示例返回 226 个字符,而不是 1,215 个。
  • 只提供你有权限使用的工具:Jira 服务启动时会读取你的权限,并隐藏你的账号无法使用的工具。
  • 写入操作清晰可见:每个工具都会告知客户端自己是读取、更改还是删除,因此客户端可以先征求你的同意。脚本只能读取数据;删除操作始终需要你开启相关设置。
  • 需要时提供审计记录:开启审计日志后,会记录 Agent 调用的每个工具,包括通过搜索或脚本调用的工具,但不会记录读取或写入的内容。
  • 需要时严格限制访问:提供只读模式、精确的工具允许列表、仅允许在指定的仓库和目标分支上合并,以及仅允许在指定文件夹中使用附件。
  • 妥善保管凭据:setup 会先用令牌验证服务器,然后将其存储在操作系统的钥匙串中(macOS Keychain、Windows Credential Manager 或 Linux 桌面密钥环),或者存储在仅当前用户可读取的文件中。服务写入的所有内容都会对令牌进行遮蔽。

为什么要在自己的机器上运行?

Data Center 通常位于防火墙或 VPN 后面。在你工作所在位置运行的服务端,可以像浏览器一样访问它。

托管式 MCP 连接器这些服务端
能否访问防火墙或 VPN 后面的实例仅当实例向该服务开放时可以:只要你的机器能够访问
令牌存放位置服务中你的机器上:操作系统密钥链,或仅你的用户可读取的文件
由谁决定 Agent 能看到哪些工具服务你,通过少量设置决定
需要托管、审批或付费的内容服务都不需要:由 npx 运行

Atlassian 的官方 MCP 服务是面向 Atlassian Cloud 的托管服务。这些服务端面向 Data Center 和 Server。

三种服务端

服务端npm 包Agent 可以做什么
Jiramcp-jira-dc使用 JQL 搜索,创建、更新和转换问题,管理评论、链接、版本、冲刺、工作日志、服务台队列、字段和用户。提供 18 个工具集中的 63 个工具;安装 Xray 后还可使用测试管理功能。
Confluencemcp-confluence-dc使用 CQL 搜索,读取、创建和更新页面,管理页面树、版本历史和差异、标签、评论、限制和附件。提供 11 个工具集中的 26 个工具。
Bitbucketmcp-bitbucket-dc浏览项目、仓库、文件、分支和提交,搜索代码,并审查和评论拉取请求。合并和拒绝操作需选择启用。提供 27 个工具,另有 2 个需选择启用的工具。

只安装你会用到的服务端。它们共用一种配置格式,因此一个设置文件就能供三者使用。

支持的 Jira 应用

Jira 服务端还提供适用于以下 Marketplace 应用的工具:

应用版本状态
Xray,测试管理8Beta
Jira Service Management未记录Beta

Beta 表示已构建并检查,但尚未在该应用的实际运行实例上测试。支持的应用列出了各应用工具构建所依据的具体版本,以及检查方式。

安装

npx -y mcp-jira-dc setup

需要 Node.js 22.22.2 或更高版本、Data Center 或 Server 实例,以及个人访问令牌。将其他服务端替换为 mcp-confluence-dc 或 mcp-bitbucket-dc。

快速入门

1. 保存地址和令牌

setup 会询问你的主机地址和令牌,发送一次经过身份验证的请求以验证它们,然后保存:

npx -y mcp-jira-dc setup

要在 Jira 或 Confluence 中创建令牌,请打开个人资料图片,然后选择 Personal Access Tokens > Create token。 在 Bitbucket 中,选择 Manage account > HTTP access tokens。在脚本和 CI 中,setup --non-interactive 可通过标志接收所有参数;如果令牌无效,则以非零状态码退出。

2. 连接你的 Agent

install 会为你将服务端注册到 Claude Code 或 Claude Desktop:

npx -y mcp-jira-dc install --claude-code      # runs claude mcp add
npx -y mcp-jira-dc install --claude-desktop   # edits Claude Desktop's config, after backing it up

Cursor、VS Code 以及其他使用 mcpServers 文件的客户端:

{
  "mcpServers": {
    "jira": { "command": "npx", "args": ["-y", "mcp-jira-dc"] },
    "confluence": { "command": "npx", "args": ["-y", "mcp-confluence-dc"] },
    "bitbucket": { "command": "npx", "args": ["-y", "mcp-bitbucket-dc"] }
  }
}

然后可以提问,例如 “我们当前冲刺中有哪些问题被阻塞了?分别由谁负责?”

3. 选择列出的工具

所有设置均为可选。未设置时,Jira 和 Confluence 会列出日常使用的工具,其余工具可通过搜索获取。

设置作用
TOOLSETS直接列出整个工具集,例如,对于主要使用冲刺的团队,可以设置为 default,jira_agile。all 会列出所有工具。
READ_ONLY_MODE=true仅提供不会更改任何内容的工具。
ENABLED_TOOLS精确的工具名称允许列表,适用于严格受限的配置。
TOOL_GATEWAY=off关闭搜索:所选工具集之外的工具不会列出。
CODE_EXECUTION=off移除代码沙箱。
PERMISSION_FILTER=off列出 Jira 工具时不先检查你的权限。
ATLASSIAN_DC_MCP_AUDIT=1保留审计日志:每次工具调用记录一行,包含工具、结果和耗时,但绝不记录参数或结果。通过搜索或代码运行的工具也会记录。

每个服务的 README 都列出了其工具集,以及用于启用风险较高工具的设置: Jira、Confluence、 Bitbucket。

4. 检查配置

doctor 会逐步检查每个环节,并说明如何修复问题。它会像 MCP 客户端那样启动服务, 因此会准确显示 Agent 将获得的内容:

$ npx -y mcp-jira-dc doctor
mcp-jira-dc doctor

✓ Node.js   22.22.2
✓ Settings  everything needed is set
            JIRA_HOST: jira.example.com, from C:\Users\alice\.atlassian-dc-mcp\jira.env
            JIRA_API_BASE_PATH: (not set)
            JIRA_API_TOKEN: ••••HcU1, from Windows Credential Manager
            JIRA_DEFAULT_PAGE_SIZE: 25 (default)
✓ Keychain  token kept in Windows Credential Manager
✓ Sign-in   signed in as Alice Smith (alice)
✓ Tools     11 listed, about 2,900 tokens of context
            32 more through jira_searchTools
            jira_runCode is on
            server: Permission filter hid 14 Jira tools: jira_transitionIssue, jira_linkIssues, ...

令牌会被屏蔽,因此可以放心将输出粘贴到错误报告中。

Agent 看到的内容

以下是 Jira 服务针对测试 Jira 运行时返回的真实响应。工具列表包含日常使用的工具和另外四个工具:

jira_searchIssues, jira_getIssue, jira_getIssueComments, jira_createIssue, jira_updateIssue,
jira_postIssueComment, jira_updateIssueComment, jira_getTransitions, jira_transitionIssue,
jira_downloadAttachment, jira_searchTools, jira_runReadTool, jira_runWriteTool, jira_runCode

当被问及冲刺相关问题时,Agent 会搜索工具。jira_searchTools 会返回匹配项及其输入架构 (此处省略),并说明每个工具是读取还是写入:

[
  { "name": "jira_getSprintIssues", "toolset": "jira_agile", "access": "read",
    "description": "List the issues in a sprint in the JIRA Data Center edition instance, in rank order, optionally narrowed by JQL. Returns key, summary, status, type, priority and assignee per issue." },
  { "name": "jira_addIssuesToSprint", "toolset": "jira_agile", "access": "write",
    "description": "Move issues into a future or active sprint in the JIRA Data Center edition instance, taking them out of any other sprint. At most 50 issues per call." },
  { "name": "jira_moveIssuesToBacklog", "toolset": "jira_agile", "access": "write",
    "description": "Move issues to the backlog in the JIRA Data Center edition instance, removing them from their future or active sprint. At most 50 issues per call." }
]

它可以使用 jira_runReadTool 运行读取工具;或者,为了一步回答问题,也可以编写脚本交给 jira_runCode 执行:

const { issues } = await tools.jira_getSprintIssues({ sprintId: 42 });
const blocked = issues.filter((issue) => issue.status === 'Blocked');
console.log(`${blocked.length} of ${issues.length} issues are blocked`);
return blocked.map((issue) => `${issue.key} ${issue.summary} (${issue.assignee?.displayName ?? 'unassigned'})`);
{
  "result": [
    "PAY-102 Migrate payouts to new ledger (Ben Okafor)",
    "PAY-104 Upgrade payment SDK (Amira Haddad)",
    "PAY-106 Refund API returns 500 on partial refunds (Ben Okafor)"
  ],
  "logs": ["3 of 7 issues are blocked"],
  "toolCalls": 1
}

这个答案有 226 个字符。它所依据的完整冲刺列表有 1,215 个字符;在真实冲刺中,每个问题都会让两者之间的差距进一步扩大。

工作原理

每个服务都作为 MCP 客户端的子进程在你的计算机上运行,并使用你的令牌调用 Atlassian 实例的 REST API:

sequenceDiagram
    autonumber
    participant Agent as 🤖 Claude / Cursor / any MCP client
    participant Server as mcp-jira-dc<br/>(on your machine)
    participant Sandbox as Code sandbox<br/>(QuickJS, own thread)
    participant Jira as 🏢 Jira Data Center

    Agent->>Server: tools/list
    Server-->>Agent: everyday tools, search, run tools, runCode

    Agent->>Server: jira_searchTools "sprint issues"
    Server-->>Agent: matching tools with their schemas

    Agent->>Server: jira_runCode (a short script)
    Server->>Sandbox: run the script
    Sandbox->>Server: tools.jira_getSprintIssues(...)
    Server->>Jira: GET /rest/agile/1.0/sprint/42/issue
    Jira-->>Server: the sprint's issues
    Server-->>Sandbox: issue data
    Sandbox-->>Server: the script's return value
    Server-->>Agent: the answer, and console output

脚本在 QuickJS 中运行。这是一个编译为 WebAssembly 的 JavaScript 引擎,运行在独立的工作线程中。它无法访问网络、文件或你的进程,只能调用读取工具。运行 30 秒或 50 次工具调用后,脚本会停止;即使它导致引擎崩溃,也只会影响本次运行。

与列出所有工具相比

对比使用 TOOLSETS=all 的同一个 Jira 服务与默认配置:

默认配置列出所有工具
每个请求中的工具14 个(架构约 13,900 个字符)61 个(约 56,000 个字符)
使用不太常见的工具搜索一次,然后调用直接调用
需要多次调用的问题编写一个脚本,只返回答案每个步骤调用一次,每个结果都在上下文中
写入一次一个,每次都对客户端可见一次一个,每次都对客户端可见
删除仅限你启用的工具集与其他工具一并列出

它能保证什么

  • 绝不会扩大访问权限。 每个请求都会携带你的令牌,因此 Jira、Confluence 和 Bitbucket 会决定你能做什么。隐藏工具只会减少 Agent 可见的内容,不会解锁任何功能。
  • 脚本只会读取。 沙箱中的代码只能调用读取工具,不能做其他操作。任何更改都必须通过工具调用进行,客户端可以看到并征求你的意见。
  • 是否删除始终由你决定。 工具搜索绝不会提供删除工具,沙箱也无法访问此类工具。删除工具只会出现在你启用的工具集中,有些还需要单独设置,例如 JIRA_VERSION_DELETE_ENABLED。
  • 绝不会自行重试调用。 如果请求失败,Agent 会看到错误并决定如何处理。
  • 绝不会无限期等待。 对你实例的每个请求默认会在 30 秒后超时(ATLASSIAN_DC_MCP_REQUEST_TIMEOUT_MS);每个脚本也会在运行 30 秒或调用 50 个工具后超时。
  • 不会访问你的文件。 附件只会从你指定的文件夹中读取,也只会保存到这些文件夹;保存的文件绝不会覆盖现有文件。

你实例中的内容由其他人编写,因此问题文本、评论、页面和附件会作为数据传递给 Agent,而非指令。在必要之处,工具说明会明确这一点。

我们如何确认它能正常工作?

Agent 会以你的账户执行操作,因此工具若执行了说明之外的操作,就会造成严重问题。每次拉取请求都会在 Ubuntu 和 Windows 上运行 1,000 多项自动化测试:

  • 每个工具都有记录: 如果工具未列入其服务的目录,服务就无法启动。测试会检查只读模式是否仅提供读取工具、每个会更改数据的 Jira 工具是否注明所需权限(少数任何人都能执行的操作除外,例如自行关注问题),以及搜索是否绝不提供破坏性工具。
  • 有意攻击沙箱: 测试会尝试访问 require、process 和网络,并运行忙循环、永不完成的 Promise、无限递归、原生栈溢出和无限内存占用。每项测试都必须安全失败,同时服务继续正常工作。
  • 检查发布的包: CI 会按照 npm 接收包的方式打包每个服务并加载该包,因此缺少依赖会导致构建失败,而不是等到你安装时才发现。
  • 谨慎管理依赖: 每个版本都精确锁定;新版本发布至少七天后我们才会采用;npm 包通过 CI 使用 npm 可信发布进行发布,不使用长期有效的令牌。
  • 扫描安全问题: CodeQL 会在每次拉取请求中检查代码和工作流;依赖项审查会阻止引入已知漏洞依赖项的拉取请求;Dependabot 会使依赖项和操作保持最新;每项操作都固定到某个提交;OpenSSF Scorecard 会根据开源安全实践跟踪项目情况。SECURITY.md 说明了如何报告问题。

文档

指南内容
Jira 服务设置、18 个工具集、权限过滤器、附件、删除版本
Confluence 服务设置、11 个工具集、附件
Bitbucket 服务设置、工具、允许合并指定仓库
支持的应用提供工具的 Jira 应用、构建所用的确切版本,以及验证方式
配置参考每个 setup 标志、凭据的存储位置、读取设置的顺序、完整的客户端配置
参与贡献构建和测试、工具选择、搜索和沙箱的工作方式、发布
更新日志每个版本的变更内容

状态与路线图

这是 0.47,新增了在所有平台上将令牌存储在 OS 钥匙串中、doctor、install、审计日志,以及从 Xray 开始支持 Jira 应用。变更日志列出了所有变更,以及升级时需要做什么。 在 1.0 之前,次要版本可能包含破坏性变更,变更日志会对此进行说明。接下来计划推出:

  • 更多 Jira 应用(插件),通过工具搜索访问,因此在使用前不会产生任何开销。首个应用是用于测试管理的 Xray
  • Jira 管理工具

有疑问?想要提供帮助?

欢迎通过问题提出疑问、想法和 Bug 报告。若要贡献代码或文档,请先阅读贡献指南;所有参与者都必须遵守行为准则。请通过私密渠道报告安全问题,不要在公开问题中报告。

使用自己的实例运行受支持 Jira 应用的工具,是最有价值的贡献之一:这能让应用从 Beta 阶段进入 Tested 阶段。Jira 应用支持问题表单会询问我们所需的信息。

感谢所有贡献者,也感谢本项目所依赖的开源项目。

packages/jira/          mcp-jira-dc
packages/confluence/    mcp-confluence-dc
packages/bitbucket/     mcp-bitbucket-dc
packages/common/        shared code (configuration, setup, tool selection, the tool search, the code sandbox),
                        bundled into each server and never published on its own
scripts/                bundling, versioning and release scripts
docs/                   guides

运行测试:

npm install
npm run build
npm test

致谢与许可证

MIT 许可证。

部分代码来自两个采用 MIT 许可证的项目:b1ff/atlassian-dc-mcp 和 sooperset/mcp-atlassian。相关声明见 LICENSE。 感谢这两个项目。本项目基于官方的 MCP TypeScript SDK 和 quickjs-emscripten 构建,由 Tekthar 维护。

姊妹项目: abp-mcp,让你的 ABP 应用可供 AI Agent 使用,并沿用你已有的权限;以及 CASL .NET,适用于 .NET、可朗读的权限。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。