Jira集成服务器

一个基于TypeScript的MCP服务器,用于与Jira集成,使Cursor能够与Jira工单进行交互。

  • by kornbed
  • TypeScript
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 kornbed/jira-mcp-server

使用说明

用于游标的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
  1. 安装依赖项:
npm install
  1. 创建一个 .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代币:

  1. 登录到 https://id.atlassian.com/manage/api-tokens
  2. 点击“创建API令牌”
  3. 复制令牌并将其粘贴到您的 .env 文件

发展

运行开发服务器:

npm run dev

构建并运行

构建项目:

npm run build

启动服务器:

npm start

光标集成

要将此MCP服务器与Cursor一起使用,您有两个选项:

选项1:基于命令的集成(推荐)

  1. 构建项目:
npm run build
  1. 打开Cursor的设置:

    • 点击光标菜单
    • 选择“设置”(或使用键盘快捷键)
    • 导航到“扩展”或“集成”部分
  2. 添加MCP配置:

{
  "mcpServers": {
    "jira": {
      "command": "node",
      "args": ["/path/to/jira-mcp-cursor/dist/server.js"]
    }
  }
}

替换 /path/to/jira-mcp-cursor 与你的项目的绝对路径。

选项2:基于HTTP的集成(替代方案)

  1. 启动MCP服务器(如果尚未运行):
npm start
  1. 打开Cursor的设置:

    • 点击光标菜单
    • 选择“设置”(或使用键盘快捷键)
    • 导航到“扩展”或“集成”部分
  2. 添加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
----------------------------------------