使用说明
Jira MCP服务器
用于Jira API集成的模型上下文协议(MCP)服务器。该服务器使Claude等AI助手能够与Jira Cloud实例进行交互,以进行问题管理、搜索、评论、工作流转换和附件处理。
特性
- 问题管理:使用自定义字段支持获取、创建、更新和分配Jira问题
- JQL搜索:使用Jira查询语言搜索问题
- 评论:添加和检索对问题的评论
- 工作流程:获取可用转换并更改问题状态
- 元数据发现:获取项目的字段要求和允许值
- 用户搜索:通过电子邮件或作业名称查找用户
- 项目:列出所有可访问的项目
- 附件:列出、上传、删除附件并检索其内容——文本文件以文本形式返回,图像通过Claude vision内联呈现
- 问题链接:添加、删除和列出问题(关联、块、重复)之间的关系,而不涉及约束
parent层次结构字段 - 代币高效:6个复合工具,而不是17个以上的扁平工具——每个会话减少约50%的令牌
安装
使用npm(推荐)
npm install -g @nexus2520/jira-mcp-server
来源
-
克隆仓库:
git clone https://github.com/pdogra1299/jira-mcp-server.git cd jira-mcp-server -
安装依赖项:
pnpm install -
构建项目:
pnpm run build
先决条件
- Node.js>=16.0.0
- 拥有API访问权限的Jira云帐户
- Jira API令牌(从生成 Atlassian帐户设置)
配置
环境变量
JIRA_EMAIL:您的Atlassian帐户电子邮件JIRA_API_TOKEN:您的Jira API代币JIRA_BASE_URL:您的Jira实例URL(例如。,https://yourcompany.atlassian.net)
Claude桌面配置
将以下内容添加到您的Claude Desktop MCP设置文件中:
位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
配置(如果通过npm安装):
{
"mcpServers": {
"jira": {
"command": "npx",
"args": [
"-y",
"@nexus2520/jira-mcp-server"
],
"env": {
"JIRA_EMAIL": "your-email@company.com",
"JIRA_API_TOKEN": "your-api-token-here",
"JIRA_BASE_URL": "https://yourcompany.atlassian.net"
}
}
}
}
配置(如果从源代码构建):
{
"mcpServers": {
"jira": {
"command": "node",
"args": [
"/absolute/path/to/jira-mcp-server/build/index.js"
],
"env": {
"JIRA_EMAIL": "your-email@company.com",
"JIRA_API_TOKEN": "your-api-token-here",
"JIRA_BASE_URL": "https://yourcompany.atlassian.net"
}
}
}
}
获取Jira API代币
- 首选 Atlassian帐户设置
- 点击“创建API令牌”
- 给它一个标签(例如“Claude MCP”)
- 复制生成的令牌
- 在配置中使用它
工具架构
此服务器公开 6个复合工具 --每个都有一个 action 选择操作的参数。与17个以上的平面工具相比,这种设计将工具定义的令牌开销减少了约50%,为实际工作留下了更多的上下文。
| 工具 | 操作 | 描述 |
|---|---|---|
jira_issues |
get create update assign |
完整的问题生命周期管理 |
jira_search |
issues projects users create_metadata |
搜索和发现 |
jira_comments |
get add |
阅读和撰写评论 |
jira_workflow |
get_transitions transition |
状态转换 |
jira_attachments |
list get_content upload delete |
文件附件 |
jira_links |
list add remove get_link_types |
问题链接关系 |
可用工具
jira_issues
管理Jira问题的整个生命周期。
必需: action
| 操作 | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
get |
获取完整的问题详细信息 | issueKey |
— |
create |
创建新问题 | projectKey, summary, issueType |
description, priority, assignee, labels, customFields |
update |
编辑现有问题的字段 | issueKey |
summary, description, priority, assignee, labels, customFields |
assign |
设定或清除受让人 | issueKey, assignee |
— |
提示:
- 总是打电话
jira_search随着action=create_metadata在创建问题以发现所需的自定义字段和允许的值之前。 - 通过
assignee: "-1"取消分配问题。 description接受纯文本或 Atlassian文档格式(ADF) 对象。customFields是一个键值映射:{"customfield_10000": "value"}.
例子:
Get details for PROJ-123
Create a Bug in project PROJ with summary "Login button broken"
Update PROJ-123 priority to High
Assign PROJ-123 to john.doe@company.com
jira_search
搜索并发现Jira资源。
必需: action
| 操作 | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
issues |
通过JQL搜索问题 | jql |
maxResults, fields |
projects |
列出所有可访问的项目 | -- | maxResults |
users |
按姓名或电子邮件查找用户 | query |
maxResults |
create_metadata |
获取创建问题的现场要求 | projectKey |
issueType |
常见JQL示例:
project = PROJ AND status = Open
assignee = currentUser() AND status != Done
priority = High AND created >= -7d
提示:
- 使用
create_metadata之前jira_issuescreate了解项目/问题类型需要哪些字段。 - 使用
users要查找分配的帐户ID,请将返回的帐户ID或电子邮件传递给jira_issuesassign. fields(为issues)控制每个结果获取哪些JIRA字段,例如。["summary","status","priority","duedate","assignee"].默认为["summary"].
结构化输出:the issues 行动和 jira_issues get 返回a structuredContent JSON有效载荷与markdown一起使用,因此程序化消费者可以直接读取字段,而无需解析markdown。对于 issues 它是 { jql, count, isLast, nextPageToken, issues: [{ key, id, self, fields }] }.
jira_comments
阅读并撰写对Jira问题的评论。
必需: action, issueKey
| 操作 | 描述 | 必填参数 |
|---|---|---|
get |
获取某个问题的所有评论 | -- |
add |
发表新评论 | comment |
comment 接受纯文本或ADF对象。
例子:
Get all comments on PROJ-123
Add a comment to PROJ-123: "Fixed in PR #456"
jira_workflow
管理问题状态转换。
必需: action, issueKey
| 操作 | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
get_transitions |
列出可用的状态转换 | -- | -- |
transition |
将问题移动到新状态 | transitionId |
comment |
小贴士:总是打电话 get_transitions 第一,转换ID因项目和问题类型而异。这 transitionId 从响应中传递给 transition.
例子:
Get available transitions for PROJ-123
Move PROJ-123 to "In Progress" (use get_transitions first to find the ID)
jira_attachments
管理Jira问题的文件附件。
必需: action
| 操作 | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
list |
列出所有带有元数据的附件 | issueKey |
— |
get_content |
下载并返回文件内容 | attachmentId |
mimeType |
upload |
将本地文件附加到问题 | issueKey, filePath |
fileName |
delete |
按ID删除附件 | attachmentId |
— |
返回的内容类型 get_content:
- 文本文件 (
text/*,application/json,application/xml):作为可读文本返回 - 图像 (
image/*):以base64返回--Claude将内联呈现它们 - 其他类型 (PDF、zip等):返回带有描述性消息的文件元数据
提示:
- 使用
list首先在呼叫前获取附件IDget_content或delete. fileName在upload覆盖Jira中显示的文件名(默认为文件的基名)。
例子:
List attachments on PROJ-123
Get the content of attachment 136904
Upload /tmp/report.pdf to PROJ-123
Delete attachment 136904
jira_links
独立于Jira的项目层次结构配置来管理问题之间的关系——当您需要将Bug与Story相关联但项目不允许Bug时,这很有用→ 故事是一种亲子关系。
必需: action
| 操作 | 描述 | 必需参数 | 可选参数 |
|---|---|---|---|
get_link_types |
列出此Jira实例的可用链接类型名称 | -- | -- |
add |
在两个问题之间建立联系 | issueKey, linkedIssueKey, linkType |
direction |
list |
列出问题上的所有链接,并附上链接ID | issueKey |
— |
remove |
按ID删除链接 | linkId |
— |
链接方向:
- 对称类型(
Relates,Duplicate):direction没关系。 - 方向类型(
Blocks,Cloners,Causes):direction: outward手段issueKey是外侧(例如。issueKey块linkedIssueKey);direction: inward手段issueKey是内侧(例如。issueKey被...阻挡linkedIssueKey).默认为outward.
提示:
- 跑
get_link_types第一,链接类型名称因Jira实例配置而异。 - 使用
list寻找alinkId打电话之前remove.
例子:
List the link types available in Jira
Link PROJ-1 to PROJ-2 as Relates
Mark PROJ-1 as blocking PROJ-2
List all links on PROJ-1
Remove link 10042
api参考
此服务器使用 Jira REST API v3.
故障排除
“错误:需要JIRA_EMAIL和JIRA_API_TOKEN”
确保您已在MCP配置中设置了环境变量。
身份验证错误
- 验证您的API令牌是否正确
- 确保您的电子邮件与您的Atlassian帐户匹配
- 检查你的
JIRA_BASE_URL没有尾随斜线
权限错误
API令牌使用创建它的用户的权限。请确保您的帐户对您尝试执行的操作具有必要的权限。
许可证
麻省理工学院
作者
帕特多格拉
贡献
请随时打开问题或提交改进请求!