Jira MCP 服务器
一个基于 TypeScript 的服务器, enables Cursor 编辑器与 Jira 工单进行交互,可以在编辑器中直接查看、创建、评论和更新工单。
服务介绍
Jira MCP 服务器用于 Cursor
一个基于 TypeScript 的 MCP 服务器,与 Jira 集成,允许 Cursor 与 Jira 工单进行交互。
功能
- 列出 Jira 工单
- 获取工单详情
- 获取工单评论
- 创建新工单
- 向工单添加评论
- 更新工单状态
- 完全支持 MCP 协议以实现 Cursor 集成
设置
- 安装依赖项:
npm install
- 根据
.env.example创建一个.env文件,并填写您的 Jira 凭证:
JIRA_HOST=https://your-domain.atlassian.net
JIRA_EMAIL=your-email@example.com
JIRA_API_TOKEN=your-api-token
PORT=3000
获取您的 Jira API 令牌:
- 登录 https://id.atlassian.com/manage/api-tokens
- 点击“创建 API 令牌”
- 复制该令牌并将其粘贴到您的
.env文件中
开发
运行开发服务器:
npm run dev
构建和运行
构建项目:
npm run build
启动服务器:
npm start
Cursor 集成
要将此 MCP 服务器与 Cursor 一起使用,您有两个选项:
选项 1:命令式集成(推荐)
- 构建项目:
npm run build
-
打开 Cursor 的设置:
- 点击 Cursor 菜单
- 选择“设置”(或使用键盘快捷键)
- 导航到“扩展”或“集成”部分
-
添加 MCP 配置:
{
"mcpServers": {
"jira": {
"command": "node",
"args": ["/path/to/jira-mcp-cursor/dist/server.js"]
}
}
}
将 /path/to/jira-mcp-cursor 替换为您的项目的绝对路径。
选项 2:基于 HTTP 的集成(替代方案)
- 启动 MCP 服务器(如果尚未运行):
npm start
-
打开 Cursor 的设置:
- 点击 Cursor 菜单
- 选择“设置”(或使用键盘快捷键)
- 导航到“扩展”或“集成”部分
-
添加 MCP 配置:
{
"mcpServers": {
"jira": {
"url": "http://localhost:3000",
"capabilities": [
"list_tickets",
"get_ticket",
"get_comments",
"create_ticket",
"update_status",
"add_comment"
]
}
}
}
在 Cursor 中使用 Jira
配置好 MCP 服务器后,您可以在 Cursor 中直接使用 Jira 命令:
/jira list- 列出您的工单/jira view TICKET-123- 查看工单详情/jira comments TICKET-123- 获取工单评论/jira create- 创建新工单/jira comment TICKET-123- 添加评论/jira status TICKET-123- 更新工单状态
MCP 协议支持
该服务器实现了 Cursor 所需的 Model-Client-Protocol (MCP):
- 用于命令式集成的标准输入输出通信
- Jira 操作的工具注册
API 端点
列出工单
检索 Jira 工单列表,可选地通过 JQL 查询过滤。
端点: GET /api/tickets
查询参数:
| 参数 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| jql | string | 否 | 用于过滤工单的 Jira 查询语言 (JQL) 字符串 |
示例请求:
GET /api/tickets?jql=project=TEST+AND+status=Open
示例响应:
TEST-123: Example ticket (Open)
TEST-124: Another ticket (In Progress)
获取工单
检索有关特定工单的详细信息。
端点: GET /api/tickets/:id
路径参数:
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | string | 是 | Jira 工单 ID(例如,TEST-123) |
请求示例:
GET /api/tickets/TEST-123
响应示例:
Key: TEST-123
Summary: Example ticket
Status: Open
Type: Task
Description:
Detailed ticket description
获取工单评论
检索特定工单的所有评论。
端点: GET /api/tickets/:id/comments
路径参数:
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | string | 是 | Jira 工单 ID(例如,TEST-123) |
请求示例:
GET /api/tickets/TEST-123/comments
响应示例:
[3/20/2024, 10:00:00 AM] John Doe:
Comment text
---
[3/20/2024, 9:30:00 AM] Jane Smith:
Another comment
---
创建工单
创建一个新的 Jira 工单。
端点: POST /api/tickets
请求体:
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| summary | string | 是 | 工单摘要 |
| description | string | 是 | 工单描述 |
| projectKey | string | 是 | 项目键(例如,TEST) |
| issueType | string | 是 | 问题类型(例如,任务、错误) |
请求示例:
POST /api/tickets
Content-Type: application/json
{
"summary": "New feature request",
"description": "Implement new functionality",
"projectKey": "TEST",
"issueType": "Task"
}
响应示例:
Created ticket: TEST-124
添加评论
向现有工单添加新评论。
端点: POST /api/tickets/:id/comments
路径参数:
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | string | 是 | Jira 工单 ID(例如,TEST-123) |
请求体:
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| body | string | 是 | 评论文本 |
请求示例:
POST /api/tickets/TEST-123/comments
Content-Type: application/json
{
"body": "This is a new comment"
}
响应示例:
Added comment to TEST-123
更新状态
更新现有工单的状态。
端点: POST /api/tickets/:id/status
路径参数:
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| id | string | 是 | Jira 工单 ID(例如,TEST-123) |
请求体:
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| transitionId | string | 是 | 要执行的转换的ID |
请求示例:
POST /api/tickets/TEST-123/status
Content-Type: application/json
{
"transitionId": "21"
}
响应示例:
Updated status of TEST-123
搜索工单
使用文本搜索在指定项目中搜索工单。
端点: GET /api/tickets/search
查询参数:
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| searchText | string | 是 | 在工单中搜索的文本 |
| projectKeys | string | 是 | 要搜索的项目键列表,用逗号分隔 |
| maxResults | number | 否 | 返回的最大结果数(默认值:50) |
请求示例:
GET /api/tickets/search?searchText=login+bug&projectKeys=TEST,PROD&maxResults=10
响应示例:
Found 2 tickets matching "login bug"
[TEST] TEST-123: Login page bug
Status: Open (Updated: 3/20/2024, 10:00:00 AM)
Description:
Users unable to login using SSO
----------------------------------------
[PROD] PROD-456: Fix login performance
Status: In Progress (Updated: 3/19/2024, 3:30:00 PM)
Description:
Login page taking too long to load
----------------------------------------