Development · MODEL CONTEXT PROTOCOL
kornbed jira mcp server
A TypeScript-based MCP server for Jira integration with Cursor
连接能力
kornbed jira mcp server 为 AI Agent 提供什么
- List Jira tickets
- Get ticket details
- Get ticket comments
- Create new tickets
- Add comments to tickets
- Update ticket status
- Full MCP protocol support for Cursor integration
- Install dependencies:
- Create a `.env` file based on `.env.example` and fill in your Jira credentials:
- Log in to <https://id.atlassian.com/manage/api-tokens>
- Click "Create API token"
- Copy the token and paste it in your `.env` file
- Build the project:
- Open Cursor's settings:
- Click on the Cursor menu
- Select "Settings" (or use the keyboard shortcut)
- Navigate to the "Extensions" or "Integrations" section
- Add the MCP configuration:
- Start the MCP server (if not already running):
- Open Cursor's settings:
- Click on the Cursor menu
- Select "Settings" (or use the keyboard shortcut)
- Navigate to the "Extensions" or "Integrations" section
- Add the MCP configuration:
- `/jira list` - List your tickets
- `/jira view TICKET-123` - View ticket details
- `/jira comments TICKET-123` - Get ticket comments
- `/jira create` - Create a new ticket
- `/jira comment TICKET-123` - Add a comment
- `/jira status TICKET-123` - Update ticket status
- Stdio communication for command-based integration
- Tool registration for Jira operations
安全
MCP 收录不等于安全审核
MCP 服务器可能获得模型上下文、凭据、本地文件或调用外部系统的权限。连接 Agent 前,请检查代码、环境变量、网络行为、软件包来源与维护状态。
README
仓库文档
A TypeScript-based MCP server that integrates with Jira, allowing Cursor to interact with Jira tickets.
- List Jira tickets
- Get ticket details
- Get ticket comments
- Create new tickets
- Add comments to tickets
- Update ticket status
- Full MCP protocol support for Cursor integration
To install Jira MCP Server for Cursor for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @kornbed/jira-mcp-server --client claude- Install dependencies:
npm install- Create a
.envfile based on.env.exampleand fill in your Jira credentials:
JIRA_HOST=https://your-domain.atlassian.net
JIRA_EMAIL=your-email@example.com
JIRA_API_TOKEN=your-api-token
PORT=3000To get your Jira API token:
- Log in to https://id.atlassian.com/manage/api-tokens
- Click "Create API token"
- Copy the token and paste it in your
.envfile
Run the development server:
npm run devBuild the project:
npm run buildStart the server:
npm startTo use this MCP server with Cursor, you have two options:
- Build the project:
npm run build-
Open Cursor's settings:
- Click on the Cursor menu
- Select "Settings" (or use the keyboard shortcut)
- Navigate to the "Extensions" or "Integrations" section
-
Add the MCP configuration:
{
"mcpServers": {
"jira": {
"command": "node",
"args": ["/path/to/jira-mcp-cursor/dist/server.js"]
}
}
}Replace /path/to/jira-mcp-cursor with the absolute path to your project.
- Start the MCP server (if not already running):
npm start-
Open Cursor's settings:
- Click on the Cursor menu
- Select "Settings" (or use the keyboard shortcut)
- Navigate to the "Extensions" or "Integrations" section
-
Add the MCP configuration:
{
"mcpServers": {
"jira": {
"url": "http://localhost:3000",
"capabilities": [
"list_tickets",
"get_ticket",
"get_comments",
"create_ticket",
"update_status",
"add_comment"
]
}
}
}
}After configuring the MCP server, you can use Jira commands directly in Cursor:
/jira list- List your tickets/jira view TICKET-123- View ticket details/jira comments TICKET-123- Get ticket comments/jira create- Create a new ticket/jira comment TICKET-123- Add a comment/jira status TICKET-123- Update ticket status
The server implements the Model-Client-Protocol (MCP) required by Cursor:
- Stdio communication for command-based integration
- Tool registration for Jira operations
Retrieves a list of Jira tickets, optionally filtered by a JQL query.
Endpoint: GET /api/tickets
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| jql | string | No | Jira Query Language (JQL) string to filter tickets |
Example Request:
GET /api/tickets?jql=project=TEST+AND+status=OpenExample Response:
TEST-123: Example ticket (Open)
TEST-124: Another ticket (In Progress)
Retrieves detailed information about a specific ticket.
Endpoint: GET /api/tickets/:id
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | The Jira ticket ID (e.g., TEST-123) |
Example Request:
GET /api/tickets/TEST-123Example Response:
Key: TEST-123
Summary: Example ticket
Status: Open
Type: Task
Description:
Detailed ticket description
Retrieves all comments for a specific ticket.
Endpoint: GET /api/tickets/:id/comments
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | The Jira ticket ID (e.g., TEST-123) |
Example Request:
GET /api/tickets/TEST-123/commentsExample Response:
[3/20/2024, 10:00:00 AM] John Doe:
Comment text
---
[3/20/2024, 9:30:00 AM] Jane Smith:
Another comment
---
Creates a new Jira ticket.
Endpoint: POST /api/tickets
Request Body:
| Parameter | Type | Required | Description |
|---|---|---|---|
| summary | string | Yes | The ticket summary |
| description | string | Yes | The ticket description |
| projectKey | string | Yes | The project key (e.g., TEST) |
| issueType | string | Yes | The type of issue (e.g., Task, Bug) |
Example Request:
POST /api/tickets
Content-Type: application/json
{
"summary": "New feature request",
"description": "Implement new functionality",
"projectKey": "TEST",
"issueType": "Task"
}Example Response:
Created ticket: TEST-124
Adds a new comment to an existing ticket.
Endpoint: POST /api/tickets/:id/comments
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | The Jira ticket ID (e.g., TEST-123) |
Request Body:
| Parameter | Type | Required | Description |
|---|---|---|---|
| body | string | Yes | The comment text |
Example Request:
POST /api/tickets/TEST-123/comments
Content-Type: application/json
{
"body": "This is a new comment"
}Example Response:
Added comment to TEST-123
Updates the status of an existing ticket.
Endpoint: POST /api/tickets/:id/status
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | The Jira ticket ID (e.g., TEST-123) |
Request Body:
| Parameter | Type | Required | Description |
|---|---|---|---|
| transitionId | string | Yes | The ID of the transition to perform |
Example Request:
POST /api/tickets/TEST-123/status
Content-Type: application/json
{
"transitionId": "21"
}Example Response:
Updated status of TEST-123
Searches for tickets across specified projects using text search.
Endpoint: GET /api/tickets/search
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| searchText | string | Yes | Text to search for in tickets |
| projectKeys | string | Yes | Comma-separated list of project keys to search in |
| maxResults | number | No | Maximum number of results to return (default: 50) |
Example Request:
GET /api/tickets/search?searchText=login+bug&projectKeys=TEST,PROD&maxResults=10Example Response:
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
----------------------------------------
社区