Jira项目管理协议服务器

一个为Atlassian Jira Cloud设计的模型上下文协议(MCP)服务器,支持通过Cursor、Claude Code或任何MCP兼容客户端管理项目、问题、冲刺、看板、工作日志、评论和工作流转换。

  • by akashyap3c
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 akashyap3c/jira-mcp

使用说明

Jira MCP服务器

作者 Ashish Kumar Kashyap(@阿卡什亚普3c)

A. 模型上下文协议 Atlassian Jira Cloud的MCP服务器。从Cursor、Claude Code或任何兼容MCP的客户端管理项目、问题、冲刺、公告板、工作日志、评论和工作流转换。


使用此服务器的两种方法

  1. 使用托管实例 (推荐)--将您的MCP客户端指向 https://mcp-jira-server.onrender.com/mcp 您自己的Jira凭据作为标头传递。无需安装。见下文。
  2. 自托管 --克隆仓库并在本地运行(一个用户的stdio)或部署自己的HTTP实例(Render、Fly、Docker等)。看 自托管.

先决条件

  • 吉拉云 帐户(例如。 https://yourorg.atlassian.net)
  • Atlassian API令牌 — 创建一个
  • 仅适用于自主机: Node.js 18+

使用托管服务器(推荐)

托管实例位于 https://mcp-jira-server.onrender.com/mcp。您不需要克隆、安装或部署任何东西,只需将您的MCP客户端指向它,并将您自己的Jira凭据作为请求头传递。每个用户都以自己的身份进行身份验证;服务器端不存储凭据。

克劳德代码

选项A-CLI (为您编写配置):

claude mcp add --transport http --scope user jira-remote https://mcp-jira-server.onrender.com/mcp \
  --header "X-Jira-Base-Url: https://YOUR-DOMAIN.atlassian.net" \
  --header "X-Jira-Email: you@example.com" \
  --header "X-Jira-Token: YOUR_JIRA_API_TOKEN"

选项B-JSON (进入 ~/.claude.json 在...之下 mcpServers,或本地项目 .mcp.json):

{
  "mcpServers": {
    "jira-remote": {
      "type": "http",
      "url": "https://mcp-jira-server.onrender.com/mcp",
      "headers": {
        "X-Jira-Base-Url": "https://YOUR-DOMAIN.atlassian.net",
        "X-Jira-Email": "you@example.com",
        "X-Jira-Token": "YOUR_JIRA_API_TOKEN"
      }
    }
  }
}

证实 claude mcp list --你应该看看 jira-remote: ... (HTTP) - ✓ Connected.

克劳德桌面版

中的JSON形状相同 claude_desktop_config.json (根据 mcpServers).

光标

添加 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "jira-remote": {
      "type": "streamable-http",
      "url": "https://mcp-jira-server.onrender.com/mcp",
      "headers": {
        "X-Jira-Base-Url": "https://YOUR-DOMAIN.atlassian.net",
        "X-Jira-Email": "you@example.com",
        "X-Jira-Token": "YOUR_JIRA_API_TOKEN"
      }
    }
  }
}

支持的标头

标题 必填 目的
X-Jira-Base-Url 是 您的Jira Cloud基础URL,例如。 https://yourorg.atlassian.net
X-Jira-Email 是 Atlassian帐户电子邮件
X-Jira-Token yes Atlassian API令牌- 创建一个
X-Jira-Read-Only 没有 true 拒绝非GET/HEAD调用 jira_platform_request / jira_agile_request

健康检查

curl https://mcp-jira-server.onrender.com/health
# {"status":"ok","server":"jira-mcp"}

托管服务器在Render的免费计划上运行,该计划在不活动后休眠。睡眠后的第一个请求需要大约10-30秒才能醒来;后续通话很快。对于生产设置,请使用以下部分进行自托管。


自助主机(自己运行)

如果您不想依赖托管实例(用于生产、合规性或专用网络),请自己运行服务器。

克隆并安装

git clone git@github.com:akashyap3c/jira-mcp.git
cd jira-mcp
npm install

本地stdio(单用户,无网络)

最适合从一台机器单独使用。MCP客户端将服务器作为子进程生成,并通过 env。没有运行HTTP服务器。

添加到MCP客户端配置中(将路径替换为绝对路径):

{
  "mcpServers": {
    "jira": {
      "command": "node",
      "args": ["/absolute/path/to/jira-mcp/mcp-server/index.js"],
      "env": {
        "JIRA_BASE_URL": "https://your-domain.atlassian.net",
        "JIRA_EMAIL": "your-email@example.com",
        "JIRA_API_TOKEN": "your-api-token"
      }
    }
  }
}

对于stdio,您还可以单独测试它:

npm run mcp           # alias for: node mcp-server/index.js
# JIRA MCP server running on stdio

本地HTTP(多用户,在您自己的主机上)

运行HTTP服务器,让客户端使用每个用户的标头进行连接(与托管指令的形状相同,只需交换URL)。

npm start             # alias for: node mcp-server/http.js
# JIRA MCP server (HTTP) listening on port 3000

然后客户指向 http://localhost:3000/mcp (或您自己的主机名/端口)并传递 X-Jira-Base-Url / X-Jira-Email / X-Jira-Token 每个请求的标头。

(可选)对于stdio或共享身份设置,请复制 .env.example 到 .env 并设置 JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN。这些仅在没有时用作后备 X-Jira-* 请求中存在标头。

部署到渲染(或任何平台)

此回购 render.yaml 提供运行的Web服务 npm start (HTTP传输) /health 探查。要部署自己的副本,请执行以下操作:

  1. 将此仓库分叉或推送到GitHub。
  2. 渲染仪表板→ 新建Web服务 → 连接您的GitHub仓库→ 渲染读取 render.yaml.
  3. 无需环境变量 如果您希望用户通过标头对每个请求进行身份验证。托管实例以这种方式运行。
  4. (可选)设置 JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN 仅当您希望在缺少标头时使用回退共享标识时,才使用env-vars。

包括 Dockerfile 还致力于:

  • Fly.io: fly launch 从repo目录
  • 铁路:连接GitHub仓库→ 它会自动检测Dockerfile
  • 任何VPS: docker build -t jira-mcp . && docker run -p 3000:3000 jira-mcp

API参考(PM/完整REST表面)

  • docs/API-REFERENCE.md文件 --官方Swagger的链接、可选的环境变量以及策划的工具如何映射到PM工作流程。
  • jira_platform_request / jira_agile_request --调用任何有文档记录的平台或敏捷端点(具有路径安全和可选只读模式)。

可用工具

工具 说明
list_projects 列出可访问的Jira项目
get_issue 按密钥获取问题详细信息
search_issues 使用JQL搜索问题
create_issue 创建新问题(摘要、描述、优先级、标签、原始估计等)
update_issue 更新问题字段(摘要、描述、优先级、标签、原始估计)
delete_issue 永久删除问题(可选:删除子任务)
assign_issue 分配或取消分配问题(按accountId)
get_transitions 列出问题的可用工作流转换
transition_issue 通过工作流移动问题(按转换ID)
add_comment 向问题添加评论
get_comments 列出对某个问题的评论
log_work 记录在问题上花费的时间(工作日志)
get_worklogs 列出问题的工作日志
get_link_types 列出可用的问题链接类型(块、相关等)
link_issues 用关系类型链接两个问题
search_users 按姓名/电子邮件搜索用户(返回assign_issue的accountId)
list_boards 列出Jira板(ID、名称、类型)
list_sprints 列出板的冲刺(分页)
get_all_sprints 获取具有ID和名称的板的所有冲刺(自动分页)
get_sprint_issues 在冲刺中解决问题
move_to_sprint 将问题移动到sprint中(通过sprintId或sprintName+boardId)
move_to_backlog 将问题从冲刺阶段移回待办事项列表
get_sprint 按ID(日期、状态、目标)列出的Sprint元数据
get_board_backlog 板积压问题(可选JQL)
get_board_issues 董事会范围的问题(可选JQL)
list_board_reports 板可用的报告类型
aggregate_worklogs 用户在JQL问题上记录的总时间(上限)
list_board_epics 棋盘上的史诗
get_epic_issues 棋盘上史诗的问题
get_issues_without_epic 董事会问题不属于任何史诗
list_fields 所有字段(查找故事点自定义字段ID)
list_filters 搜索已保存的筛选器
get_filter 按ID获取过滤器详细信息和JQL
sprint_metrics 按状态类别推导出冲刺的计数/故事点数
jira_platform_request 低水平 GET/POST/... 在...之下 /rest/api/3
jira_agile_request 低水平 GET/POST/... 在...之下 /rest/agile/1.0

项目结构

jira-mcp/
├── Dockerfile
├── mcp-server/
│   ├── index.js           # Entry point (stdio transport, local)
│   ├── http.js            # Entry point (HTTP transport, remote)
│   ├── jira-client.js     # Jira REST API (v3 + Agile 1.0)
│   ├── formatters.js      # ADF/plain text, markdown tables
│   └── tools/             # MCP tool handlers
│       ├── list-projects.js
│       ├── get-issue.js
│       ├── search-issues.js
│       ├── create-issue.js
│       ├── update-issue.js
│       ├── delete-issue.js
│       ├── assign-issue.js
│       ├── get-transitions.js
│       ├── transition-issue.js
│       ├── add-comment.js
│       ├── get-comments.js
│       ├── log-work.js
│       ├── get-worklogs.js
│       ├── get-link-types.js
│       ├── link-issues.js
│       ├── search-users.js
│       ├── list-boards.js
│       ├── list-sprints.js
│       ├── get-all-sprints.js
│       ├── get-sprint-issues.js
│       ├── move-to-sprint.js
│       ├── move-to-backlog.js
│       ├── get-sprint.js
│       ├── get-board-backlog.js
│       ├── get-board-issues.js
│       ├── list-board-reports.js
│       ├── aggregate-worklogs.js
│       ├── list-board-epics.js
│       ├── get-epic-issues.js
│       ├── get-issues-without-epic.js
│       ├── list-fields.js
│       ├── list-filters.js
│       ├── get-filter.js
│       ├── sprint-metrics.js
│       ├── jira-platform-request.js
│       └── jira-agile-request.js
├── docs/
│   └── API-REFERENCE.md
├── .env.example
├── package.json
└── README.md

许可证

麻省理工学院