使用说明
用于游标的Jira MCP服务器
一个基于TypeScript的MCP服务器,与Jira集成,允许Cursor与Jira票证交互。
特性
- 列出Jira门票
- 获取门票详细信息
- 获取门票评论
- 创建新票
- 为门票添加评论
- 更新票证状态
- 完整的MCP协议支持Cursor集成
设置
通过Smithery安装
通过以下方式自动安装用于Cursor for Claude Desktop的Jira MCP服务器 史密瑟里:
npx -y @smithery/cli install @kornbed/jira-mcp-server --client claude
- 安装依赖项:
npm install
- 创建一个
.env文件基于.env.example并填写您的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
光标集成
要将此MCP服务器与Cursor一起使用,您有两个选项:
选项1:基于命令的集成(推荐)
- 构建项目:
npm run build
-
打开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的设置:
- 点击光标菜单
- 选择“设置”(或使用键盘快捷键)
- 导航到“扩展”或“集成”部分
-
添加MCP配置:
{
"mcpServers": {
"jira": {
"url": "http://localhost:3000",
"capabilities": [
"list_tickets",
"get_ticket",
"get_comments",
"create_ticket",
"update_status",
"add_comment"
]
}
}
}
}
在游标中使用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所需的模型客户端协议(MCP):
- 基于命令的集成标准通信
- Jira操作的工具注册
API终点
列出门票
检索Jira票证列表,可选择通过JQL查询进行筛选。
端点: GET /api/tickets
查询参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| jjl | string | No | 用于过滤票证的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 | Yes | 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 | Yes | 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 | Yes | 票证摘要 |
| description | string | Yes | 票证描述 |
| projectKey | string | Yes | 项目密钥(例如TEST) |
| issueType | string | Yes | 问题类型(例如,任务、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 | Yes | Jira票证id(例如TEST-123) |
请求正文:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| body | string | Yes | 注释文本 |
请求示例:
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 | Yes | Jira票证id(例如TEST-123) |
请求正文:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| transitionId | string | Yes | 要执行的转换的ID |
请求示例:
POST /api/tickets/TEST-123/status
Content-Type: application/json
{
"transitionId": "21"
}
示例响应:
Updated status of TEST-123
搜索门票
使用文本搜索在指定项目中搜索工单。
端点: GET /api/tickets/search
查询参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| searchText | string | Yes | 要在票中搜索的文本 |
| projectKeys | string | Yes | 要搜索的逗号分隔的项目关键字列表 |
| maxResults | number | No | 返回的最大结果数(默认值: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
----------------------------------------
