Jira MCP Server for Cursor

by kornbed
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Allows interaction with Jira tickets, including listing tickets, viewing details, creating new tickets, adding comments, and updating ticket status through Jira's API.

用于 Cursor 的 Jira MCP 服务器

基于 TypeScript 的 MCP 服务器与 Jira 集成,允许 Cursor 与 Jira 票证进行交互。

特征

  • 列出 Jira 票证
  • 获取票务详情
  • 获取票证评论
  • 创建新票证
  • 向票证添加评论
  • 更新票证状态
  • 完整的 MCP 协议支持 Cursor 集成

设置

  1. 安装依赖项:
npm install
  1. 根据.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 令牌:

  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. 打开光标的设置:
    • 点击光标菜单
    • 选择“设置”(或使用键盘快捷键)
    • 导航至“扩展”或“集成”部分
  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. 打开光标的设置:
    • 点击光标菜单
    • 选择“设置”(或使用键盘快捷键)
    • 导航至“扩展”或“集成”部分
  2. 添加 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 所需的模型-客户端协议 (MCP):

  • 基于命令的集成的 Stdio 通信
  • Jira 操作工具注册

API 端点

列出门票

检索 Jira 票证列表,可选择通过 JQL 查询进行过滤。

端点: GET /api/tickets

查询参数:

范围类型必需的描述
jql细绳用于过滤工单的 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细绳是的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细绳是的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

请求正文:

范围类型必需的描述
概括细绳是的票务摘要
描述细绳是的票证描述
项目密钥细绳是的项目密钥(例如,TEST)
问题类型细绳是的问题类型(例如,任务、错误)

示例请求:

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细绳是的Jira 票证 ID(例如,TEST-123)

请求正文:

范围类型必需的描述
身体细绳是的评论文本

示例请求:

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细绳是的Jira 票证 ID(例如,TEST-123)

请求正文:

范围类型必需的描述
转换ID细绳是的要执行的转换的 ID

示例请求:

POST /api/tickets/TEST-123/status Content-Type: application/json { "transitionId": "21" }

响应示例:

Updated status of TEST-123

搜索门票

使用文本搜索在指定项目中搜索票证。

端点: GET /api/tickets/search

查询参数:

范围类型必需的描述
搜索文本细绳是的在票证中搜索的文本
项目密钥细绳是的要搜索的项目键的逗号分隔列表
最大结果数字返回的最大结果数(默认值: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 ----------------------------------------

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

基于 TypeScript 的服务器,使 Cursor 编辑器能够与 Jira 票证进行交互,以便直接从编辑器查看、创建、评论和更新票证。

  1. Features
    1. Setup
      1. Development
        1. Build and Run
          1. Cursor Integration
            1. Option 1: Command-based Integration (Recommended)
            2. Option 2: HTTP-based Integration (Alternative)
          2. Using Jira in Cursor
            1. MCP Protocol Support
              1. API Endpoints
                1. List Tickets
                2. Get Ticket
                3. Get Ticket Comments
                4. Create Ticket
                5. Add Comment
                6. Update Status
                7. Search Tickets
              ID: s4vkqq31kd