Jira MCP
Provides tools to retrieve issue details and create issues in Jira, supporting both Jira Cloud and Jira Data Center.
Click on "Deploy 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 MCPshow me the details for Jira issue PROJ-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 MCP
Production FastMCP server for Jira Cloud (REST v3 / ADF) and Data Center (often REST v2 / plain text). This is a self-hosted adapter you run against your site. It is not Atlassian's hosted Rovo endpoint; it uses the same MCP ideas (Streamable HTTP, inbound auth, annotated tools, structured output).
Auth follows the same split used by Azure MCP and Atlassian Rovo:
Inbound — the MCP client authenticates to this server (HTTP only).
Outbound — this server authenticates to Jira with email + API token (Cloud Basic auth).
HTTP is fail-closed without MCP_JWKS_URI or MCP_JWT_SECRET.
Author: Clinton Follette.
Tools
Tool | Access | Notes |
| read | Key, status, summary, Source Ticket #, Customer Order #. |
| write | Project, issue type, summary, description. Hidden when |
Look up custom field ids with GET /rest/api/3/field after you create Source Ticket # and Customer Order # and put them on the create screen.
Related MCP server: Jira Issue MCP Server
Install (local STDIO)
{
"mcpServers": {
"jira": {
"command": "mcp-jira",
"env": {
"JIRA_BASE_URL": "https://your-site.atlassian.net",
"JIRA_EMAIL": "you@example.com",
"JIRA_API_TOKEN": "<api-token>",
"JIRA_SOURCE_TICKET_FIELD": "customfield_10001",
"JIRA_CUSTOMER_ORDER_FIELD": "customfield_10002"
}
}
}
}Create a Cloud token at id.atlassian.com.
pip install .
mcp-jiraRemote HTTP
export MCP_TRANSPORT=http
export MCP_HOST=127.0.0.1
export MCP_PORT=8003
export MCP_JWKS_URI=https://login.example.com/.well-known/jwks.json
export MCP_JWT_ISSUER=https://login.example.com
export MCP_JWT_AUDIENCE=mcp-jira
mcp-jiraEndpoint: http://127.0.0.1:8003/mcp. Health: GET /health.
Outbound Jira configuration
Variable | Required | Purpose |
| yes | Site origin |
| yes | Cloud account |
| yes | API token |
| no | Default |
| no |
|
| no | Default |
| for close-loop |
|
| for T2 |
|
| no | Hide |
Security
HTTP without inbound JWT configuration refuses to boot.
Issue and project keys are validated before they are placed in URLs.
Custom field ids must start with
customfield_or they are ignored.mask_error_detailsis on.
See SECURITY.md.
License
MIT. Copyright (c) 2026 Clinton Follette.
Available Tools
2 toolscreate_issueCreate issueB
Create a Jira work item. Cloud v3 descriptions are sent as Atlassian Document Format. Source Ticket # and Customer Order # are written when those customfield ids are configured.
| Name | Required | Description | Default |
|---|---|---|---|
| labels | No | Optional Jira labels. | |
| summary | Yes | Issue summary. | |
| issue_type | No | Issue type name. Defaults to JIRA_ISSUE_TYPE (Task). | |
| description | No | Plain-text description. Converted to ADF on Cloud v3. | |
| project_key | Yes | Project key, for example SDG or SDE. | |
| source_ticket | No | Ivanti IncidentNumber stored in Source Ticket #. | |
| customer_order | No | Epicor OrderNum stored in Customer Order #. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| key | Yes | |
| self_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write semantics (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the safety profile is covered. The description adds genuinely useful non-obvious behavior: description text is converted to ADF on Cloud v3, and Source Ticket #/Customer Order # are only written when their customfield ids are configured. It omits auth requirements and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that lead with the core action and follow with caveats; every clause carries information. The customfield sentence is slightly dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and annotations cover the safety profile. The description adds the ADF and customfield-config quirks that an agent could not infer, though it leaves permission/error behavior unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already documented in the schema. The description's note that custom fields are conditionally written mirrors the schema wording rather than adding new syntax or format detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a Jira work item'), and the verb naturally distinguishes it from the sibling get_issue. It stops short of explicitly contrasting with the read sibling, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (project permissions, required fields), and no mention of the get_issue alternative for reads. Usage is only implied by the verb 'Create'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issueGet issueARead-onlyIdempotent
Read a Jira issue key, status, summary, Source Ticket #, and Customer Order #.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Issue key, for example SDG-12. |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | Yes | |
| status | No | |
| summary | No | |
| source_ticket | No | |
| customer_order | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds that it returns a specific set of fields, but says nothing about error behavior for missing keys, permission requirements, or field projection options.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and resource. The trailing field list ('Source Ticket #, and Customer Order #') is slightly awkward but still earns its place by previewing the returned data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated, yet the description supplies a useful preview anyway. For a single-parameter read tool with full annotation coverage, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single key parameter is documented in the schema with a concrete example (SDG-12). The description only repeats the notion of a key, adding no format or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('a Jira issue'), plus the fields surfaced (key, status, summary, Source Ticket #, Customer Order #). The read verb implicitly contrasts with the sibling create_issue, but it never names or explicitly distinguishes it, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is only implied: fetch one issue by key. There is no statement of when to prefer this over alternatives or when it is inapplicable, though with only create_issue as a sibling the ambiguity is low.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
create_issue - First observed
get_issue
TDQS
Scored across 2 tools
get_issue and create_issue have unambiguous, non-overlapping purposes — one reads, one writes. An agent can select correctly without hesitation.
Both tools follow a clean, predictable verb_noun snake_case pattern (get_issue, create_issue), consistent with common MCP conventions.
Only 2 tools for a server branded as a general 'Jira MCP' is thin; it covers just a narrow read/create slice of the Jira domain and leaves the set feeling minimally scoped.
Create and get are present but there is no update, delete, search, transition, or comment operation, so agents hit dead ends for common Jira workflows. The narrow customfield focus partially excuses the gap but not fully.
Maintenance
Related MCP Connectors
Read and write Mission Control state via MCP — projects, tasks, subtasks, templates, status updates.
An MCP server that provides access to Testiny projects, test cases and test runs
Manage feature requests, votes, roadmaps, and changelogs from any MCP client.
Jepto MCP server that provides access to client knowledgebase & analytics for connected data sources
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server for interacting with self-hosted Jira instances using Personal Access Token (PAT) authentication. It enables users to perform CRUD operations on issues, search with JQL, manage comments, and list projects through the Jira REST API.12342 npm11MIT
- AlicenseCqualityDmaintenanceEnables interaction with Jira through OAuth 2.0 to create and manage issues directly from MCP-compatible clients. It supports secure authentication and local token caching to facilitate automated task management within Jira projects.3MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for interacting with Jira Cloud instances. Enables issue management, JQL queries, project and sprint management, and batch operations via natural language interfaces.195 npm4MIT
- FlicenseBqualityDmaintenanceMCP server that connects AI assistants to your Jira site, supporting PAT or SSO authentication for search, read, create, update, and delete operations on issues.1718 npm-