Skip to main content
Glama

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:

  1. Inbound — the MCP client authenticates to this server (HTTP only).

  2. 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

get_issue

read

Key, status, summary, Source Ticket #, Customer Order #.

create_issue

write

Project, issue type, summary, description. Hidden when MCP_READ_ONLY=true.

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-jira

Remote 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-jira

Endpoint: http://127.0.0.1:8003/mcp. Health: GET /health.

Outbound Jira configuration

Variable

Required

Purpose

JIRA_BASE_URL

yes

Site origin

JIRA_EMAIL

yes

Cloud account

JIRA_API_TOKEN

yes

API token

JIRA_API_PATH

no

Default /rest/api/3

JIRA_DESCRIPTION_FORMAT

no

adf (Cloud v3) or plain (often DC v2)

JIRA_ISSUE_TYPE

no

Default Task

JIRA_SOURCE_TICKET_FIELD

for close-loop

customfield_XXXXX

JIRA_CUSTOMER_ORDER_FIELD

for T2

customfield_YYYYY

MCP_READ_ONLY

no

Hide create_issue

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_details is on.

See SECURITY.md.

License

MIT. Copyright (c) 2026 Clinton Follette.

Available Tools

2 tools
create_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsNoOptional Jira labels.
summaryYesIssue summary.
issue_typeNoIssue type name. Defaults to JIRA_ISSUE_TYPE (Task).
descriptionNoPlain-text description. Converted to ADF on Cloud v3.
project_keyYesProject key, for example SDG or SDE.
source_ticketNoIvanti IncidentNumber stored in Source Ticket #.
customer_orderNoEpicor OrderNum stored in Customer Order #.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
keyYes
self_urlNo

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 issueA
Read-onlyIdempotent

Read a Jira issue key, status, summary, Source Ticket #, and Customer Order #.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesIssue key, for example SDG-12.

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
statusNo
summaryNo
source_ticketNo
customer_orderNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 2 tool updatesv0.1.0
    • First observedcreate_issue
    • First observedget_issue

TDQS

B3.4/5.0

Scored across 2 tools

Disambiguation5/5

get_issue and create_issue have unambiguous, non-overlapping purposes — one reads, one writes. An agent can select correctly without hesitation.

Naming Consistency5/5

Both tools follow a clean, predictable verb_noun snake_case pattern (get_issue, create_issue), consistent with common MCP conventions.

Tool Count2/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    An 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.
    12
    342 npm
    11
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for interacting with Jira Cloud instances. Enables issue management, JQL queries, project and sprint management, and batch operations via natural language interfaces.
    195 npm
    4
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    MCP server that connects AI assistants to your Jira site, supporting PAT or SSO authentication for search, read, create, update, and delete operations on issues.
    17
    18 npm
    -