使用说明
JIRA MCP服务器
A. 模型上下文协议(MCP) 连接AI助手的服务器(例如 克劳德 或 光标)直接到Atlassian JIRA云 或 JIRA服务器/数据中心,使其能够通过自然语言读写门票。
特性
读取操作
| 工具 | 说明 |
|---|---|
get_issue |
按关键字获取单个问题(例如。 PROJ-123) |
search_issues |
运行JQL查询并返回匹配问题 |
get_project |
按键获取项目元数据 |
list_projects |
列出所有可访问的项目 |
get_issue_comments |
列出对某个问题的所有评论 |
get_transitions |
列出问题的可用工作流转换 |
find_users |
按姓名或电子邮件搜索JIRA用户 |
get_issue_fields |
列出所有可用的JIRA字段(包括自定义字段) |
list_attachments |
列出问题上的所有附件(名称、大小、类型、ID) |
get_attachment_content |
通过经过身份验证的代理下载并返回附件内容 |
写入操作
| 工具 | 说明 |
|---|---|
create_issue |
创建新问题(摘要、类型、优先级、描述、标签) |
update_issue |
更新现有问题上的所有可写字段 |
set_issue_dates |
使用精确的JIRA UI字段名称设置日期字段 |
add_comment |
为问题添加评论 |
transition_issue |
在工作流程中移动问题(例如。→ 进行中→ 完成) |
assign_issue |
分配或取消分配问题 |
delete_issue |
永久删除问题 |
upload_attachment |
将文件上传到JIRA问题(本地路径或base64) |
先决条件
- Node.js >=18(在17上工作,有警告)
- A. JIRA云 或 JIRA服务器/DC 例子
- A有效 API令牌 (云)或 个人访问令牌 (服务器/DC)
设置
1.克隆和安装
git clone <repo-url> jira-mcp
cd jira-mcp
npm install
2.配置环境
cp .env.example .env
编辑 .env (仅服务器端默认凭据或stdio模式需要):
# JIRA Cloud
JIRA_BASE_URL=https://yourcompany.atlassian.net
JIRA_USER_EMAIL=your@email.com
JIRA_API_TOKEN=your_api_token_here
# JIRA Server/DC (PAT — leave JIRA_USER_EMAIL blank)
# JIRA_BASE_URL=https://jira.yourcompany.com
# JIRA_API_TOKEN=your_personal_access_token
# Transport mode: "sse" for HTTP server, leave blank for stdio (default)
MCP_TRANSPORT=
# SSE server settings (only needed in SSE mode)
PORT=3000
HOST=0.0.0.0
获取JIRA Cloud API令牌: https://id.atlassian.com/manage-profile/security/api-tokens
3.建造
npm run build
4.跑步
# stdio mode (default — for Claude Desktop / CLI tools)
npm start
# SSE / HTTP mode (for Cursor, remote clients, ngrok, hosted deployments)
npm run start:sse
# During development (runs TypeScript directly, no build needed)
npm run dev # stdio
npm run dev:sse # SSE
运输方式
服务器支持 两种运输方式:
| 模式 | 标志/环境 | 最适合 |
|---|---|---|
| 标准 (默认) | (无) | Claude Desktop、MCP检查器、CLI |
| SSE/HTTP | --sse 或 MCP_TRANSPORT=sse |
Cursor、远程web客户端、ngrok、托管部署 |
选择模式
# Via CLI flag
node dist/index.js --sse
# Via environment variable
MCP_TRANSPORT=sse node dist/index.js
# Custom port / host
PORT=8080 HOST=127.0.0.1 MCP_TRANSPORT=sse node dist/index.js
SSE HTTP端点
在SSE模式下启动后,以下端点可用:
| 端点 | 方法 | 目的 |
|---|---|---|
/sse |
GET |
客户端在此处连接以打开事件流 |
/messages?sessionId=<id> |
POST |
客户端在此处发送JSON-RPC消息 |
/health |
GET |
健康检查-退货 {"status":"ok","transport":"sse"} |
基于凭据的访问(SSE模式)
在SSE模式下,每个连接的客户端都可以提供 他们自己的JIRA证书 直接在SSE URL中作为查询参数。这意味着:
- 服务器会 不 需要存储每个人的凭据
- 每个用户都使用自己的JIRA帐户进行连接
- 可以同时使用多个不同的JIRA实例
- 如果没有提供查询参数,服务器将回退到
.env凭证
查询参数
| 参数 | 必填 | 说明 |
|---|---|---|
jiraUrl |
✅ 是 | JIRA实例的基本URL |
jiraToken |
✅ 是 | API令牌(JIRA云)或个人访问令牌(服务器/DC) |
jiraEmail |
☑️ 仅限云 | 您的Atlassian帐户电子邮件(省略服务器/DC PAT身份验证) |
URL格式
JIRA云(电子邮件+API令牌):
http://localhost:3000/sse?jiraUrl=https://yourcompany.atlassian.net&jiraEmail=you@company.com&jiraToken=YOUR_API_TOKEN
JIRA服务器/数据中心(PAT——无需电子邮件):
http://localhost:3000/sse?jiraUrl=https://jira.yourcompany.com&jiraToken=YOUR_PAT
通过ngrok公共网址:
https://your-ngrok-domain.ngrok-free.app/sse?jiraUrl=https://yourcompany.atlassian.net&jiraEmail=you@company.com&jiraToken=YOUR_API_TOKEN
安全: 总是使用 超文本传输安全协议 (ngrok会自动提供此功能),因此凭证在传输过程中会被加密。切勿以纯文本形式共享包含令牌的URL。
连接到克劳德桌面(stdio模式)
将此添加到您的 claude_desktop_config.json
(通常在 ~/.config/claude/claude_desktop_config.json 在Linux/Mac上):
{
"mcpServers": {
"jira": {
"command": "node",
"args": ["/absolute/path/to/jira-mcp/dist/index.js"],
"env": {
"JIRA_BASE_URL": "https://yourcompany.atlassian.net",
"JIRA_USER_EMAIL": "your@email.com",
"JIRA_API_TOKEN": "your_api_token_here"
}
}
}
}
重新启动Claude Desktop——JIRA工具将自动出现。
通过SSE URL(游标)连接
步骤1--启动SSE服务器
npm run start:sse
# Server logs:
# JIRA MCP server running in SSE mode
# SSE endpoint : http://localhost:3000/sse
步骤2——添加到光标
打开的游标→ 设置 → 主控程序 → Edit mcp.json,然后添加:
选项A——URL中的凭据(建议个人使用):
{
"mcpServers": {
"jira": {
"url": "http://localhost:3000/sse?jiraUrl=https://yourcompany.atlassian.net&jiraEmail=you@company.com&jiraToken=YOUR_API_TOKEN"
}
}
}
选项B--服务器中的凭据 .env (单一共享帐户):
{
"mcpServers": {
"jira": {
"url": "http://localhost:3000/sse"
}
}
}
第3步——使用ngrok公开曝光(可选)
ngrok http 3000
然后在Cursor中使用您的ngrok URL:
{
"mcpServers": {
"jira": {
"url": "https://your-ngrok-domain.ngrok-free.app/sse?jiraUrl=https://yourcompany.atlassian.net&jiraEmail=you@company.com&jiraToken=YOUR_API_TOKEN"
}
}
}
检查工具(不含克劳德)
npx @modelcontextprotocol/inspector dist/index.js
打开终端中打印的链接,以交互方式浏览和测试所有工具。
示例提示
连接后,您可以说:
- “搜索PROJ项目中所有打开的错误”
- “在PROJ中创建一个名为“修复登录超时”的高优先级新任务”
- “在PROJ-42上添加一条评论,称修复程序将于今晚部署”
- “将PROJ-42移至完成”
- “将PROJ-42分配给帐户ID 5b1a2844c20165700ede21g”
- “显示CORE项目中最近更新的10个问题”
- “查找电子邮件中包含john@的用户”
- “列出我的JIRA中可用的所有自定义字段ID”
项目结构
jira-mcp/
├── src/
│ ├── index.ts # Entry point — stdio + SSE transport, per-session credentials
│ ├── jira/
│ │ ├── client.ts # JIRA REST client factory (per-session + .env fallback)
│ │ └── types.ts # TypeScript interfaces for JIRA API responses
│ └── tools/
│ ├── read.ts # Read-only MCP tools (8 tools)
│ └── write.ts # Write/mutate MCP tools (7 tools)
├── .env.example # Environment variable reference
├── package.json
└── tsconfig.json
身份验证参考
| 场景 | 认证方法 | 所需参数 |
|---|---|---|
| JIRA云(URL参数) | HTTP基本身份验证 | jiraUrl + jiraEmail + jiraToken |
| JIRA服务器/DC(URL参数) | 承载PAT | jiraUrl + jiraToken |
| JIRA云(.env/stdio) | HTTP基本身份验证 | JIRA_BASE_URL + JIRA_USER_EMAIL + JIRA_API_TOKEN |
| JIRA服务器/DC(.env/stdio) | 承载PAT | JIRA_BASE_URL + JIRA_API_TOKEN (无电子邮件) |
优先: URL参数始终优先于
.env变量。如果两者都没有设置,服务器将返回401错误,并显示一条有用的消息。
使用附件
MCP服务器充当 经过身份验证的代理 加入JIRA的附件API,解决了人工智能助手无法直接访问JIRA媒体服务器的问题。
列出问题的附件
list_attachments(issue_key: "PROJ-123")
退货: id, filename, mimeType, size_human, author, created.
下载附件内容
get_attachment_content(issue_key: "PROJ-123", attachment_id: "12345")
- 文本文件 (
.txt,.csv,.json,.xml,.log,.md,.yaml,.html) → 返回为 纯文本 - 二进制文件 (图像、PDF、Office文档等)→ 返回为 base64 字符串
将文件上传到问题
# From a local file path:
upload_attachment(issue_key: "PROJ-123", file_path: "/tmp/report.pdf")
# From base64 content:
upload_attachment(issue_key: "PROJ-123", filename: "data.csv", base64_content: "...")
示例提示
- “列出PROJ-123上的所有附件”
- “显示PROJ-123所附日志文件的内容”
- “将/tmp/secreenshot.png上传到PROJ-456”