关于 Jira MCP Server for Cursor
这是一个用 TypeScript 编写的 Jira MCP 服务,可让 Cursor 等客户端管理 Jira 工单。它支持从查询和查看工单,到创建、评论及更新状态。
主要功能
- 01列出并搜索工单
- 02查看工单详情和评论
- 03创建工单
- 04添加评论
- 05更新工单状态
适用场景
- 01按 JQL 筛选项目工单
- 02在 Cursor 中查看工单讨论
- 03创建工单并补充评论
- 04更新工单状态
MCP 相关
该 MCP 服务注册 Jira 操作工具,支持通过 stdio 或 HTTP 接入 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
面向 Cursor 的 Jira MCP 服务
一个基于 TypeScript 的 MCP 服务,可与 Jira 集成,让 Cursor 能够与 Jira 工单交互。
功能
- 列出 Jira 工单
- 获取工单详情
- 获取工单评论
- 创建新工单
- 为工单添加评论
- 更新工单状态
- 完整支持 MCP 协议,便于与 Cursor 集成
设置
通过 Smithery 安装
通过 Smithery 自动为 Claude Desktop 安装面向 Cursor 的 Jira MCP 服务:
npx -y @smithery/cli install @kornbed/jira-mcp-server --client claude
- 安装依赖项:
npm install
- 根据
.env.example创建.env文件,并填写 Jira 凭据:
JIRA_HOST=https://your-domain.atlassian.net
[email protected]
JIRA_API_TOKEN=your-api-token
PORT=3000
获取 Jira API 令牌:
- 登录 https://id.atlassian.com/manage/api-tokens
- 点击“Create API token”
- 复制令牌并粘贴到
.env文件中
开发
运行开发服务器:
npm run dev
构建和运行
构建项目:
npm run build
启动服务器:
npm start
Cursor 集成
要在 Cursor 中使用此 MCP 服务,有两种方式:
方式 1:基于命令的集成(推荐)
- 构建项目:
npm run build
-
打开 Cursor 设置:
- 点击 Cursor 菜单
- 选择“Settings”(或使用键盘快捷键)
- 前往“Extensions”或“Integrations”部分
-
添加 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 菜单
- 选择“Settings”(或使用键盘快捷键)
- 前往“Extensions”或“Integrations”部分
-
添加 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):
- 为基于命令的集成提供 Stdio 通信
- 为 Jira 操作注册工具
API 端点
列出工单
获取 Jira 工单列表,可选择使用 JQL 查询进行筛选。
端点: GET /api/tickets
查询参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| jql | string | 否 | 用于筛选工单的 Jira Query Language(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 | 是 | 问题类型(例如,Task、Bug) |
请求示例:
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
----------------------------------------
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。