使用说明
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代币
- 首选https://id.atlassian.com/manage-profile/security/api-tokens
- 点击 创建API令牌
- 给它起个名字(例如。,
claude-mcp)并复制令牌 - 将其粘贴为值
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工作流程:
get_boards→ 查找您的董事会IDcreate_sprint→ 创建未来冲刺add_issues_to_sprint→ 填充它update_sprint随着state="active"→ 开始吧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
- 转到您的Jira项目→ 待办事项列表或董事会视图
- 请查看URL:
.../jira/software/projects/PROJ/boards/42—42是板ID - 或者使用
get_boards带有项目密钥的工具
查找自定义字段ID
如果默认自定义字段ID不适用于您的实例:
- 在Jira,前往 设置→ 问题→ 自定义字段
- 点击该字段并记下URL中的ID(
customfield_XXXXX) - 设置适当的
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
贡献
- 分叉存储库
- 创建要素分支:
git checkout -b feature/my-new-tool - 在中进行更改
api/jira_client.py(API逻辑)和tools/jira_tools.py(工具定义) - 使用以下命令对真实的Jira实例进行测试
test_jira.py - 打开拉取请求
许可证
MIT——免费使用、修改和分发。
