jira-service-desk-mcp
Allows interaction with Jira Service Management, enabling AI assistants to manage service desks, requests, comments, customers, organizations, approvals, attachments, and perform transitions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jira-service-desk-mcpget details of request IT-123"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jira-service-desk-mcp
MCP (Model Context Protocol) server for Jira Service Management (formerly Jira Service Desk).
Connects AI assistants — Claude Code, Claude Desktop, Cursor, and others — to your JSM instance via Anthropic's MCP.
Built on top of atlassian-python-api and inspired by mcp-atlassian.
Features
Category | Tools |
Service Desks | List desks, get desk by ID, app info |
Request Types | List types, get type details, get required fields |
Customer Requests | Create, get, list my requests, get status |
Comments | Add public/internal comments, list, get by ID |
Customers | Create customer, list, add/remove from desk |
Participants | List, add, remove request participants |
Transitions | List available transitions, perform transition |
Organizations | CRUD organizations, manage users, link to desks |
Queues | List queues, list issues in queue |
SLA | Get SLA info per request, by metric ID |
Approvals | List approvals, get by ID, approve/decline |
Attachments | Upload temp file, attach to request |
40 tools total. Write operations are gated by READ_ONLY_MODE.
Quick Start
Install from PyPI
pip install jira-service-desk-mcpOr with uv:
uv pip install jira-service-desk-mcpOr install from source:
pip install -e .Configure
Copy .env.example to .env and fill in your credentials:
cp .env.example .envRecommended shared format (same env shape as mcp-atlassian):
JIRA_URL=https://jira.your-company.com
JIRA_PERSONAL_TOKEN=<base64-encoded username:token>Use a base64-encoded username:token string when you want one MCP config style
that works across both mcp-atlassian and jira-service-desk-mcp for
Atlassian Cloud. On non-Cloud/self-hosted Jira instances, JIRA_PERSONAL_TOKEN
now defaults to Bearer/PAT handling to avoid misclassifying base64-looking PATs.
If you intentionally need basic auth there, set JIRA_PERSONAL_TOKEN_MODE=basic.
Alternative: Atlassian Cloud (username + API token):
JIRA_URL=https://your-instance.atlassian.net
JIRA_USERNAME=your-email@example.com
JIRA_API_TOKEN=your-api-tokenGenerate an API token at https://id.atlassian.com/manage-profile/security/api-tokens.
Alternative: Server / Data Center (raw Personal Access Token):
JIRA_URL=https://jira.your-company.com
JIRA_PERSONAL_TOKEN=your-personal-access-tokenThe token can be either a raw PAT (bearer token), the full
Bearer <token> header value, or a base64-encoded username:api_token
string. The server strips Bearer automatically when present.
For non-Cloud/self-hosted Jira, JIRA_PERSONAL_TOKEN is treated as Bearer/PAT
by default, even if it looks like base64. This avoids accidental fallback to
Basic auth for PATs that happen to decode cleanly. If you need to force Basic
auth from JIRA_PERSONAL_TOKEN, set:
JIRA_PERSONAL_TOKEN_MODE=basicNote:
JIRA_IS_CLOUDis auto-detected from the URL (.atlassian.net→ Cloud). Set it explicitly only if the heuristic is wrong for your instance.
Run
stdio (default — for Claude Code, Claude Desktop, Cursor, etc.):
jira-service-desk-mcpSSE (for remote/web clients):
jira-service-desk-mcp --transport sse --port 8000Claude Code Integration
The fastest way to connect JSM to Claude Code:
claude mcp add jira-service-desk -- jira-service-desk-mcpWith environment variables inline:
claude mcp add jira-service-desk \
-e JIRA_URL=https://jira.your-company.com \
-e JIRA_PERSONAL_TOKEN=<base64-encoded username:token> \
-- uvx jira-service-desk-mcpTo scope the server to your project only:
claude mcp add --scope project jira-service-desk \
-e JIRA_URL=https://jira.your-company.com \
-e JIRA_PERSONAL_TOKEN=<base64-encoded username:token> \
-- uvx jira-service-desk-mcpVerify it works:
claude mcp listShared MCP Config
Add the same shape to ~/.claude.json, project-level .mcp.json,
claude_desktop_config.json, or .cursor/mcp.json:
{
"mcpServers": {
"mcp-atlassian": {
"type": "stdio",
"command": "uvx",
"args": ["mcp-atlassian"],
"env": {
"JIRA_URL": "https://jira.your-company.com",
"JIRA_PERSONAL_TOKEN": "<base64-encoded username:token>"
}
},
"jira-service-desk": {
"type": "stdio",
"command": "uvx",
"args": ["jira-service-desk-mcp"],
"env": {
"JIRA_URL": "https://jira.your-company.com",
"JIRA_PERSONAL_TOKEN": "<base64-encoded username:token>"
}
}
}
}This mirrors the mcp-atlassian configuration style for Atlassian Cloud while
still allowing jira-service-desk-mcp to distinguish Cloud basic-auth tokens
from non-Cloud Bearer/PAT tokens.
Environment Variables
Variable | Required | Description |
| Yes | Jira instance URL |
| Cloud | Email for Atlassian Cloud |
| Cloud | API token for Cloud auth |
| Recommended | Raw PAT or base64-encoded |
| No |
|
| — | Basic auth password (not recommended) |
| No | Auto-detected from URL; set explicitly to override |
| No |
|
| No |
|
Available Tools
Service Desks
get_service_desk_info— Application infolist_service_desks— All accessible service desksget_service_desk— Service desk by ID
Request Types
list_request_types— Request types for a deskget_request_type— Specific request typeget_request_type_fields— Fields required for a request type
Customer Requests
create_customer_request— Create a new requestget_customer_request— Get request by keylist_my_customer_requests— Your requestsget_customer_request_status— Request status
Comments
add_request_comment— Add public or internal commentlist_request_comments— List comments on a requestget_request_comment— Get comment by ID
Customers
create_customer— Create customer accountlist_customers— List customers of a deskadd_customers_to_service_desk— Add customersremove_customers_from_service_desk— Remove customers
Participants
list_request_participants— List participantsadd_request_participants— Add participantsremove_request_participants— Remove participants
Transitions
list_customer_transitions— Available transitionsperform_transition— Execute a transition
Organizations
list_organizations— List organizationsget_organization— Organization by IDcreate_organization— Create organizationdelete_organization— Delete organizationadd_organization_to_service_desk— Link org to deskremove_organization_from_service_desk— Unlink orglist_users_in_organization— Users in orgadd_users_to_organization— Add users to orgremove_users_from_organization— Remove users from org
Queues
list_queues— Queues in a service desklist_issues_in_queue— Issues in a queue
SLA
get_request_sla— SLA info for a requestget_request_sla_by_id— Specific SLA metric
Approvals
list_approvals— Approvals for a requestget_approval— Approval by IDanswer_approval— Approve or decline
Attachments
upload_temporary_attachment— Upload temp fileattach_file_to_request— Attach to request
Architecture
src/mcp_jira_service_desk/
├── __init__.py # CLI entry point (click)
├── __main__.py # python -m support
├── config.py # Environment-based configuration
├── client.py # ServiceDeskClient — wraps atlassian-python-api
├── formatting.py # Human-readable formatting for API responses
└── server.py # FastMCP server with all tool definitionsconfig.py — reads
JIRA_*env vars, determines auth typeclient.py — thin typed wrapper around
atlassian.ServiceDesk, normalizes paginated responsesformatting.py — converts raw API dicts into markdown for LLM consumption
server.py —
FastMCPinstance with@mcp.tool()decorators for each operation
Development
git clone https://github.com/CzSadykov/jira-service-desk-mcp.git
cd jira-service-desk-mcp
pip install -e ".[dev]"
pytestLicense
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/CzSadykov/jira-service-desk-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server