Skip to main content
Glama
Jira Enterprise MCP

Jira Enterprise MCP

by w-10-m

Jira Enterprise MCP

Small MCP server for Codex that connects to enterprise Jira with a Jira personal access token.

What it does

  • Tests connectivity to Jira

  • Lists accessible Jira projects

  • Looks up a Jira issue by key

  • Looks up a Jira issue by key, including derived acceptance criteria when present in a custom field

  • Looks up a Jira issue by key and can return screenshot/image attachments as MCP image content, including derived acceptance criteria when present in a custom field

  • Fetches individual attachments and can return raw attachment bytes as base64, with image attachments also exposed as MCP image content

  • Inspects issue creation metadata for a project and issue type, with a fallback for tenants that do not expose createmeta

  • Runs JQL searches

  • Creates a Jira issue

  • Updates an existing issue

  • Lists issue comments

  • Lists or performs issue transitions

  • Uploads attachments to an issue

  • Uploads an attachment and posts a comment that references it, with optional inline image markup

  • Lists linked issues

  • Fetches and creates worklog entries

  • Adds a comment to an existing issue

Related MCP server: Jira MCP Server

Requirements

  • Node.js 18+

  • A Jira PAT that works against your Jira instance

  • Network access to your Jira base URL

Setup

  1. Install dependencies:

npm install
  1. Copy .env.example to .env and fill in your values if you want a local template file:

cp .env.example .env
  1. Export the variables before launching the MCP server, or let your MCP host pass them in:

export JIRA_BASE_URL=https://your-jira.example.com
export JIRA_PAT=your-token
export JIRA_DEFAULT_PROJECT=YOURPROJECT
export JIRA_REQUEST_TIMEOUT_MS=30000
export JIRA_MAX_ATTACHMENT_BYTES=26214400

Run locally

npm start

Note: this server reads JIRA_BASE_URL, JIRA_PAT, and JIRA_DEFAULT_PROJECT from process.env. It does not load .env automatically, so .env.example is a template, not a runtime loader.

Project structure

  • src/index.js starts the stdio transport only.

  • src/server.js builds the MCP server and wires tool listing/call handlers.

  • src/jira-client.js owns Jira HTTP requests, auth headers, timeouts, attachment downloads, and uploads.

  • src/tools/*-tools.js co-locates each feature area's MCP tool schemas with its handlers.

  • src/tools/registry.js combines feature modules into the MCP tool list and dispatch table.

  • src/config.js, src/validation.js, src/jira-formatters.js, and src/mcp-content.js keep shared config, validation, serialization, and MCP response helpers isolated.

Use this order when validating a new PAT against your Jira instance:

  1. jira_test_connection

  2. jira_list_projects

  3. jira_get_create_meta

  4. jira_get_issue

  5. jira_get_issue_with_images

  6. jira_get_attachment

  7. jira_list_issue_comments

  8. jira_transition_issue

  9. jira_update_issue

  10. jira_search

  11. jira_create_issue

  12. jira_add_attachment

  13. jira_add_comment_with_attachment

  14. jira_get_issue_links

  15. jira_get_worklog

  16. jira_add_worklog

  17. jira_add_comment

This matters because enterprise Jira tenants often allow reads before creates, and issue creation may require project-specific issue types or custom fields.

MCP host wiring

Codex

If you are using Codex locally, point an MCP entry at this server command:

{
  "mcpServers": {
    "jira-enterprise": {
      "command": "node",
      "args": ["/absolute/path/to/src/index.js"],
      "env": {
        "JIRA_BASE_URL": "https://your-jira.example.com",
        "JIRA_PAT": "YOUR_PAT",
        "JIRA_DEFAULT_PROJECT": "YOURPROJECT"
      }
    }
  }
}

If you prefer the Codex CLI helper, the shape should be equivalent to:

codex mcp add jira-enterprise --env JIRA_BASE_URL=https://your-jira.example.com --env JIRA_PAT=YOUR_PAT --env JIRA_DEFAULT_PROJECT=YOURPROJECT -- node /absolute/path/to/src/index.js

The exact config location can vary by Codex app version, so use whichever local MCP configuration flow your Codex build exposes.

Claude

For Claude clients that support local MCP servers, use the equivalent mcpServers entry and pass the same environment variables:

{
  "mcpServers": {
    "jira-enterprise": {
      "command": "node",
      "args": ["/absolute/path/to/src/index.js"],
      "env": {
        "JIRA_BASE_URL": "https://your-jira.example.com",
        "JIRA_PAT": "YOUR_PAT",
        "JIRA_DEFAULT_PROJECT": "YOURPROJECT"
      }
    }
  }
}

If your Claude app exposes an MCP configuration file or settings UI, add the server there. The important part is that Claude launches node /absolute/path/to/src/index.js with those three env vars present.

Notes

  • This server uses Authorization: Bearer <PAT>.

  • JIRA_REQUEST_TIMEOUT_MS and JIRA_MAX_ATTACHMENT_BYTES are optional safety limits. Defaults are 30 seconds and 25 MiB.

  • If your Jira instance accepts UI logins but rejects API calls, the PAT may not be enabled for your tenant or may require a different auth scheme.

  • If your Jira admins require custom CA certificates, you may need to trust that certificate at the OS or Node runtime level before this server can connect cleanly.

  • On some Jira tenants, createmeta may return 404 "Issue Does Not Exist". The MCP falls back to project issue types and workflow statuses so you can still discover valid issue types even when field-level create metadata is unavailable.

Tools

  • jira_test_connection

  • jira_list_projects

  • jira_get_issue

  • jira_get_issue_with_images

  • jira_get_attachment

  • jira_list_issue_comments

  • jira_transition_issue

  • jira_update_issue

  • jira_get_create_meta

  • jira_search

  • jira_create_issue

  • jira_add_attachment

  • jira_add_comment_with_attachment

  • jira_get_issue_links

  • jira_get_worklog

  • jira_add_worklog

  • jira_add_comment

Attachment content behavior

  • jira_get_attachment with includeContent: false returns attachment metadata only.

  • jira_get_attachment with includeContent: true returns raw file bytes in contentBase64 with contentEncoding: "base64".

  • For image attachments such as PNGs, the tool also includes MCP image preview content, but the downloadable bytes are always in contentBase64.

Available Tools

17 tools
jira_add_attachmentC

Upload a file attachment to a Jira issue using base64-encoded content.

NameRequiredDescriptionDefault
filenameYesFilename to store in Jira
issueKeyYesJira issue key, for example ABC-123
mimeTypeNoOptional MIME type, for example image/png
contentBase64YesBase64-encoded file content
jira_add_commentB

Add a comment to an existing Jira issue.

NameRequiredDescriptionDefault
commentYesComment body
issueKeyYesJira issue key, for example ABC-123
jira_add_comment_with_attachmentA

Upload an attachment to a Jira issue and then post a comment that references it, with optional inline image markup.

NameRequiredDescriptionDefault
commentNoComment body to post after the attachment upload
filenameYesFilename to store in Jira
issueKeyYesJira issue key, for example ABC-123
mimeTypeNoOptional MIME type, for example image/png
embedInlineNoWhen true, add Jira wiki-style inline image markup for image attachments. Defaults to true.
contentBase64YesBase64-encoded file content
jira_add_worklogC

Add a worklog entry to a Jira issue.

NameRequiredDescriptionDefault
commentNoOptional worklog comment
startedNoOptional start timestamp in Jira format, for example 2026-04-09T09:00:00.000-0400
issueKeyYesJira issue key, for example ABC-123
timeSpentYesTime spent string, for example 1h 30m
jira_create_issueB

Create a Jira issue in the given project.

NameRequiredDescriptionDefault
summaryYesShort issue summary
issueTypeYesIssue type name, for example Task, Story, or Bug.
projectKeyNoProject key. Falls back to JIRA_DEFAULT_PROJECT if omitted.
descriptionNoIssue description
jira_get_attachmentA

Fetch Jira attachment metadata and optionally include attachment content. When includeContent is true, raw attachment bytes are returned as base64 in the JSON payload; image attachments also include MCP image preview content.

NameRequiredDescriptionDefault
attachmentIdYesJira attachment id
includeContentNoWhen true, download the attachment content and return raw bytes as base64 in contentBase64. Defaults to false.
jira_get_create_metaA

Inspect issue creation metadata for a project, optionally filtered to a specific issue type. Falls back to project issue types and statuses when this Jira tenant does not expose createmeta.

NameRequiredDescriptionDefault
projectKeyNoProject key. Falls back to JIRA_DEFAULT_PROJECT if omitted.
issueTypeNameNoOptional issue type name, for example Task, Story, or Bug.
jira_get_issueA

Fetch a Jira issue by key, including common fields and rendered metadata.

NameRequiredDescriptionDefault
issueKeyYesJira issue key, for example ABC-123
jira_get_issue_with_imagesA

Fetch a Jira issue with attachment metadata and include screenshot/image attachments as MCP image content.

NameRequiredDescriptionDefault
issueKeyYesJira issue key, for example ABC-123
maxImagesNoMaximum number of image attachments to include. Defaults to 5, max 10.
includeImageDataNoWhen true, download image attachments and return them as MCP image content. Defaults to true.
jira_get_worklogA

Fetch worklogs for a Jira issue.

NameRequiredDescriptionDefault
issueKeyYesJira issue key, for example ABC-123
jira_list_issue_commentsC

List comments for a Jira issue in a simplified shape.

NameRequiredDescriptionDefault
issueKeyYesJira issue key, for example ABC-123
jira_list_projectsA

List Jira projects visible to the PAT. Useful for validating access and choosing a default project.

NameRequiredDescriptionDefault

No parameters

jira_test_connectionA

Verify that the Jira PAT works and return the current user profile.

NameRequiredDescriptionDefault

No parameters

jira_transition_issueA

List available transitions for an issue or perform a transition by id.

NameRequiredDescriptionDefault
commentNoOptional comment to add while transitioning the issue.
issueKeyYesJira issue key, for example ABC-123
transitionIdNoTransition id to execute. If omitted, the tool lists available transitions.
jira_update_issueC

Update selected common fields on an existing Jira issue.

NameRequiredDescriptionDefault
summaryNoUpdated issue summary
issueKeyYesJira issue key, for example ABC-123
descriptionNoUpdated issue description
assigneeNameNoAssignee username or account identifier supported by the tenant
priorityNameNoPriority name, for example High

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv0.1.0
    • First observedjira_add_attachment
    • First observedjira_add_comment
    • First observedjira_add_comment_with_attachment
    • First observedjira_add_worklog
    • First observedjira_create_issue
    • First observedjira_get_attachment
    • First observedjira_get_create_meta
    • First observedjira_get_issue
    • First observedjira_get_issue_links
    • First observedjira_get_issue_with_images
    • First observedjira_get_worklog
    • First observedjira_list_issue_comments
    • First observedjira_list_projects
    • First observedjira_search
    • First observedjira_test_connection
    • First observedjira_transition_issue
    • First observedjira_update_issue

TDQS

B3.4/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have distinct purposes, but `jira_add_attachment` and `jira_add_comment_with_attachment` overlap in attachment functionality, potentially causing misselection. Descriptions help clarify, so ambiguity is minimal.

Naming Consistency5/5

All tools follow the `jira_verb_noun` pattern consistently. Naming is predictable and clear, with only minor exceptions like `search` (no noun) which is still unambiguous.

Tool Count4/5

17 tools is slightly above the typical well-scoped range but reasonable for a complex system like Jira. The set covers many aspects without being excessive.

Completeness3/5

Core issue operations (create, read, update, transition) are covered, but a delete issue tool is missing. Other gaps like project management and user operations are acceptable for a focused MCP server.

Maintenance

ActivityInactive
ResponsivenessNo recent community 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
    481 npm
    15
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A local MCP server that wraps the Jira REST API v3, enabling issue management, searching, commenting, and transitions for openmrs.atlassian.net via Basic Auth.
    1
    -