Jira项目管理服务器

一个连接Claude Desktop(或任何MCP兼容AI客户端)到Jira云的模型上下文协议(MCP)服务器,通过自然语言实现完整的项目管理功能,包括创建问题、管理冲刺、记录时间、链接问题和更新评论等。

  • by myridius-siddarthaaggarwal
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 myridius-siddarthaaggarwal/Jira-MCP-server

使用说明

Jira MCP服务器

A. 模型上下文协议(MCP) 连接的服务器 克劳德桌面版 (或任何兼容MCP的AI客户端) 吉拉云,通过自然语言实现全面的项目管理——创建问题、管理冲刺、记录时间、链接问题、更新评论等。

31工具 涵盖完整的Jira工作流程:问题创建和编辑、冲刺生命周期、评论管理、工作日志跟踪、问题链接和团队/项目发现。


目录


先决条件

工具 版本 下载
python 3.10+ https://www.python.org/downloads/
Git 任何 https://git-scm.com/downloads
克劳德桌面版 最新 https://claude.ai/download
吉拉云 账户https://www.atlassian.com/software/jira

验证安装:

python --version   # Should print 3.10 or higher
git --version

设置

1.克隆存储库

git clone https://github.com/myridius-siddarthaaggarwal/Jira-MCP-server.git
cd Jira-MCP-server

2.创建虚拟环境

python -m venv venv

激活它:

平台 命令
视窗 venv\Scripts\activate
Mac/Linux source venv/bin/activate

3.安装依赖项

pip install -r requirements.txt

连接到克劳德桌面

服务器由Claude Desktop自动启动,您不需要手动启动。

步骤1--找到Claude Desktop配置文件

平台 路径
视窗 C:\Users\<YourUsername>\AppData\Roaming\Claude\claude_desktop_config.json
苹果电脑 ~/Library/Application Support/Claude/claude_desktop_config.json

如果文件不存在,则创建该文件。

步骤2——注册服务器

将以下内容粘贴到配置文件中,替换占位符值:

窗户:

{
  "mcpServers": {
    "jira-mcp-server": {
      "command": "C:\\Users\\<YourUsername>\\Jira-MCP-server\\start_mcp.bat",
      "env": {
        "JIRA_BASE_URL": "https://yourorg.atlassian.net",
        "JIRA_EMAIL": "you@example.com",
        "JIRA_API_TOKEN": "your_api_token_here"
      }
    }
  }
}

Mac/Linux:

{
  "mcpServers": {
    "jira-mcp-server": {
      "command": "/bin/bash",
      "args": ["-c", "cd /path/to/Jira-MCP-server && source venv/bin/activate && python main.py"],
      "env": {
        "JIRA_BASE_URL": "https://yourorg.atlassian.net",
        "JIRA_EMAIL": "you@example.com",
        "JIRA_API_TOKEN": "your_api_token_here"
      }
    }
  }
}

替换 <YourUsername> 以及符合您实际值的路径。

步骤3-获取Jira API代币

  1. 首选https://id.atlassian.com/manage-profile/security/api-tokens
  2. 点击 创建API令牌
  3. 给它起个名字(例如。, claude-mcp)并复制令牌
  4. 将其粘贴为值 JIRA_API_TOKEN 在上面的配置中

步骤4--重新启动克劳德桌面

关闭并重新打开Claude Desktop。Jira工具将可用——寻找 🔨 工具图标 在聊天输入区域中。


环境变量

必需

变量 描述 示例
JIRA_BASE_URL 您的Jira Cloud基础URL https://yourorg.atlassian.net
JIRA_EMAIL 与您的Atlassian帐户关联的电子邮件地址 you@example.com
JIRA_API_TOKEN Jira API令牌(不是您的密码) ATATxxxxxxxx

可选--自定义字段ID

Jira使用的自定义字段ID可能因实例而异。以下默认设置适用于大多数Jira Cloud设置。仅当您的实例使用不同的字段ID时才覆盖它们(通过Jira的字段配置或浏览器开发工具检查)。

变量 默认值 字段
JIRA_SPRINT_FIELD_ID customfield_10020 Sprint
JIRA_STORY_POINTS_FIELD_ID customfield_10016 故事要点
JIRA_EPIC_LINK_FIELD_ID customfield_10014 Epic Link(经典Jira)-设置为 parent 下一代项目
JIRA_OBSERVED_IN_FIELD_ID customfield_10097 观察范围(Bug字段,如果您的项目使用它)

下一代/团队管理的项目: 集 JIRA_EPIC_LINK_FIELD_ID=parent 使用父关系而不是经典的史诗链接字段将问题与史诗联系起来。


可用工具

问题创建

工具 说明
create_jira_bug 使用可选的冲刺、优先级、标签、故事点、史诗链接创建Bug
create_jira_story 使用相同的可选字段创建故事
create_jira_task 使用相同的可选字段创建任务
create_jira_epic 创建一个包含冲刺、优先级、标签和故事点的史诗

所有创建工具都接受这些参数:

参数 类型 说明
project_key string 大写项目键,例如。 PROJ
summary string 问题的标题
description string 详细描述
assignee_account_id string 受让人的Atlassian帐户ID(使用 search_users 查找)
sprint_id int 数字冲刺ID(使用 get_sprints 查找)
priority 字符串 Highest, High, Medium, Low,或 Lowest
labels list 标签字符串列表,例如。 ["backend", "regression"]
story_points float 故事点估计,例如。 5.0
epic_key string 父史诗的密钥,例如。 PROJ-10 (不是为了 create_jira_epic)
observed_in string 仅Bug--发现Bug的环境/版本

问题阅读和搜索

工具 说明
get_issue 获取问题的原始Jira API响应(完整详细信息)
fetch_ticket 获取人类可读的摘要:状态、受让人、优先级、冲刺、故事点、标签、史诗、描述
search_issues 使用JQL(Jira查询语言)进行搜索
find_tickets 按受让人、状态和/或关键字搜索,无需编写JQL

search_issues JQL示例:

project = PROJ AND status = "In Progress"
assignee = currentUser() AND sprint in openSprints()
project = PROJ AND issuetype = Bug AND priority = High
text ~ "login crash" ORDER BY created DESC

问题编辑

工具 参数 说明
update_issue issue_key,+下面的任何字段 更新任何问题类型的任何字段组合
assign_issue issue_key, assignee_account_id 快速分配或取消分配(通过 "" 取消分配)

update_issue 可编辑字段:

参数 说明
summary 新标题
description 新描述
assignee_account_id 新受让人(通过 "" 取消分配)
priority 新优先级名称
labels 用新列表替换所有现有标签
story_points 新故事点值
sprint_id 转到另一个冲刺
epic_key 链接到/更改父史诗
status_name 按名称转换到新状态(例如。, "In Progress", "Done")

状态转换

工具 说明
get_issue_transitions 列出问题的所有可用转换(返回名称和ID)
transition_issue 通过数字ID应用转换

提示: 使用 update_issue 随着 status_name 按名称转换——不需要先查找ID。


评论管理

工具 说明
add_comment 向问题添加新评论
get_comments 列出所有带有ID、作者、时间戳和正文的评论
update_comment 按ID编辑现有评论的文本
delete_comment 按ID删除评论(不可逆)

工作日志/时间跟踪

工具 说明
get_worklogs 列出一个问题的所有时间日志(作者、花费的时间、开始时间)
add_worklog 记录在问题上花费的时间

add_worklog 时间格式: 2h, 1d, 30m, 1d 4h 30m


Sprint管理

工具 说明
get_boards 列出所有敏捷板(可选择按项目键筛选)
get_sprints 列出某个板的冲刺——按以下条件筛选 active, future,或 closed
get_active_sprint 获得单次活跃冲刺板
create_sprint 使用可选名称、目标、开始/结束日期创建新的冲刺
update_sprint 重命名、设定目标、更改日期或更改状态(active 首先, closed 完成)
add_issues_to_sprint 将一个或多个问题转移到冲刺中
remove_issues_from_sprint 将一个或多个问题移回待办事项列表

Sprint工作流程:

  1. get_boards → 查找您的董事会ID
  2. create_sprint → 创建未来冲刺
  3. add_issues_to_sprint → 填充它
  4. update_sprint 随着 state="active" → 开始吧
  5. update_sprint 随着 state="closed" → 完成它

问题链接

工具 说明
get_issue_link_types 列出所有可用的链接类型(Blocks, Clones, Duplicate, Relates to等等)
link_issues 在两个问题之间建立方向性联系

发现和元数据

工具 说明
get_project_info 项目元数据——名称、潜在客户、类型、可用问题类型、组件
get_issue_types 列出项目中可用的问题类型
get_priorities 列出Jira中配置的所有优先级
search_users 按姓名或电子邮件搜索用户--返回用于受让人字段的帐户ID

示例提示

连接到Claude Desktop后,您可以使用自然语言:

产生问题:

  • “在PROJ项目中为登录页面崩溃创建一个高优先级错误,将其分配给john@example.com,将其添加到当前冲刺中,并给它3个故事点”
  • “在PROJ中创建一个名为“重新设计结账流程”的故事,有8个故事点,将其链接到史诗般的PROJ-10”
  • “从4月14日开始,到4月28日结束,在42号机上创建Sprint 5,目标是‘Ship payments v2’”

查看和搜索:

  • “获取PROJ-123的详细信息”
  • “显示PROJ项目中分配给我的所有进行中的错误”
  • “在PROJ中搜索有关付款失败的票证”
  • “列出42号板的所有冲刺”

编辑:

  • “将PROJ-123移至完成”
  • “将PROJ-456的优先级更改为高,并将其分配给Sarah”
  • “将PROJ-789上的故事点更新为5”
  • “将PROJ-100和PROJ-101添加到冲刺55”
  • “将PROJ-200移回待办事项列表”

评论和时间:

  • “在PROJ-123中添加一条评论,说明该修复程序已部署到登台”
  • “显示PROJ-456上的所有评论”
  • “编辑PROJ-123上的注释12345,改为‘v2.1中已修复’”
  • “在PROJ-789上记录2小时的工作”

链接和发现:

  • “将PROJ-1链接为阻止PROJ-2”
  • “查找的帐户IDjohn@example.com"
  • “PROJ项目中有哪些可用的问题类型?”
  • “列出Jira中的所有优先级”

项目结构

Jira-MCP-Server/
├── main.py                # MCP server entry point — initialises FastMCP and registers tools
├── start_mcp.bat          # Windows launcher used by Claude Desktop
├── requirements.txt       # Python dependencies (mcp[cli], requests)
├── .gitignore             # Excludes venv, credentials, cache files
├── test_jira.py           # Manual integration test script
│
├── api/
│   └── jira_client.py     # All Jira REST API calls (api/3 and agile/1.0)
│
├── config/
│   └── settings.py        # Reads credentials and field IDs from environment variables
│
└── tools/
    └── jira_tools.py      # 31 MCP tool definitions registered with FastMCP

运作原理

Claude Desktop
     │
     │  MCP protocol (stdio)
     ▼
  main.py  ──registers──▶  tools/jira_tools.py  ──calls──▶  api/jira_client.py
                                                                     │
                                                              HTTP (requests)
                                                                     │
                                                              Jira Cloud REST API

Jira安装说明

查找您的董事会ID

  1. 转到您的Jira项目→ 待办事项列表或董事会视图
  2. 请查看URL: .../jira/software/projects/PROJ/boards/42 — 42 是板ID
  3. 或者使用 get_boards 带有项目密钥的工具

查找自定义字段ID

如果默认自定义字段ID不适用于您的实例:

  1. 在Jira,前往 设置→ 问题→ 自定义字段
  2. 点击该字段并记下URL中的ID(customfield_XXXXX)
  3. 设置适当的 JIRA_*_FIELD_ID 环境变量

经典项目与下一代项目

功能 经典(公司管理) 下一代(团队管理)
Epic链接字段 customfield_10014 (字符串键) 设置 JIRA_EPIC_LINK_FIELD_ID=parent
Sprints 需要Scrum板 内置
故事要点 customfield_10016 通常 customfield_10016 或 story_points

Atlassian帐户ID

帐户ID(用于受让人)看起来像 5b10ac8d82e34311xxxxxxxxxxx。用 search_users 工具或Jira的用户配置文件URL中。


故障排除

问题 解决方案
Claude未显示Jira工具 检查配置文件路径,确保JSON有效,重新启动Claude Desktop
python / python3 找不到 在安装过程中将Python添加到PATH(在Python安装程序中选中“添加到PATH”)
401 Unauthorized 验证 JIRA_EMAIL 和 JIRA_API_TOKEN -令牌必须是API令牌,而不是您的密码
403 Forbidden 您的Atlassian帐户可能没有在项目中执行该操作的权限
404 Not Found 检查 JIRA_BASE_URL --必须是 https://yourorg.atlassian.net 没有尾随斜线
Sprint工具返回404 你的板可能不支持Sprint——确保它是Scrum板,而不是看板
Epic链接不起作用 尝试设置 JIRA_EPIC_LINK_FIELD_ID=parent (下一代项目)
故事点未保存 为您的实例找到正确的字段ID并设置 JIRA_STORY_POINTS_FIELD_ID
venv 激活失败 重新运行 python -m venv venv 在项目文件夹中,然后激活
工具工作,但冲刺字段为空 fetch_ticket 设置 JIRA_SPRINT_FIELD_ID 为您的实例设置正确的自定义字段ID

依赖项

mcp[cli]>=1.1.0    # Model Context Protocol framework
requests>=2.31.0   # HTTP client for Jira REST API calls

安装方式: pip install -r requirements.txt


贡献

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature/my-new-tool
  3. 在中进行更改 api/jira_client.py (API逻辑)和 tools/jira_tools.py (工具定义)
  4. 使用以下命令对真实的Jira实例进行测试 test_jira.py
  5. 打开拉取请求

许可证

MIT——免费使用、修改和分发。