jiraxmcp
v0.2.5
Published
TypeScript stdio MCP server and CLI for Jira Cloud.
Maintainers
Readme
jiraxmcp
jiraxmcp is an open-source Jira stdio MCP server built on top of jira.js, commander, and @modelcontextprotocol/sdk.
It lets MCP-compatible clients interact with Jira Cloud through issue, search, agile, comment, link, and attachment tools. It can also subscribe to inbound Jira webhook events through an MCP notification channel backed by a built-in HTTP server.
Highlights
- Exposes Jira Cloud as an MCP server over stdio.
- Uses the official
jira.jsclient for Jira REST and Agile API access. - Supports either
JIRA_ACCESS_TOKENorJIRA_EMAILplusJIRA_API_TOKEN. - Provides issue CRUD, search, field lookup, agile board and sprint tools, comments, changelogs, links, and attachment helpers.
- Can emit incoming Jira webhook events over an optional MCP notification channel.
- Starts a built-in Express webhook listener on
/webhookwhen channel mode is enabled.
Requirements
- Node.js
24+ - Jira Cloud base URL exported as
JIRA_HOST - Either:
JIRA_EMAILandJIRA_API_TOKEN, orJIRA_ACCESS_TOKEN
Installation
Use it without installing globally:
npx jiraxmcp mcpOr for local development:
npm install
npm run build
npm run dev -- mcpQuick Start
- Export your Jira credentials:
export JIRA_HOST="https://your-domain.atlassian.net"
export JIRA_EMAIL="[email protected]"
export JIRA_API_TOKEN="your-api-token"Or with an access token:
export JIRA_HOST="https://your-domain.atlassian.net"
export JIRA_ACCESS_TOKEN="your-access-token"- Start the MCP server:
npx jiraxmcp mcp- If your MCP host supports notifications and you want inbound Jira webhook events, enable channels:
npx jiraxmcp mcp --channels- Configure Jira webhooks to point to your listener:
http://your-host:6543/webhookJIRA_WEBHOOK_PORT overrides the default listener port 6543. JIRA_WEBHOOK_HOST controls the bind host and defaults to 127.0.0.1.
If you configure a webhook secret in Jira admin webhooks, also set JIRA_WEBHOOK_SECRET so incoming X-Hub-Signature headers are verified before events are emitted.
The server uses stdio, so it is meant to be launched by an MCP client or wrapper rather than browsed directly in a terminal.
CLI Usage
MCP Server
npx jiraxmcp mcpStarts the stdio MCP server for the configured Jira Cloud instance.
MCP Tools
The server currently exposes these tools:
jira_get_issuejira_create_issuejira_update_issuejira_delete_issuejira_batch_create_issuesjira_transition_issuejira_get_transitionsjira_get_all_projectsjira_get_project_issuesjira_search_issuesjira_search_fieldsjira_get_field_optionsjira_get_agile_boardsjira_get_board_issuesjira_get_sprints_from_boardjira_get_sprint_issuesjira_create_sprintjira_update_sprintjira_add_issues_to_sprintjira_add_commentjira_edit_commentjira_batch_get_changelogsjira_get_user_profilejira_search_usersjira_get_link_typesjira_create_issue_linkjira_remove_issue_linkjira_link_to_epicjira_create_remote_issue_linkjira_download_attachmentsjira_get_issue_images
Push Channel
When started with --channels, the server:
- advertises the experimental MCP capability
hooman/channel - advertises
hooman/userwith pathmeta.user - advertises
hooman/sessionwith pathmeta.session - advertises
hooman/threadwith pathmeta.thread - starts a built-in HTTP webhook listener on
/webhook - verifies
X-Hub-SignaturewhenJIRA_WEBHOOK_SECRETis set - ignores duplicate webhook deliveries in memory using
X-Atlassian-Webhook-Identifier - emits
notifications/hooman/channelfor inbound Jira webhook events
Each notification includes:
content: a JSON-encoded event payloadmeta.source:jirameta.user: the best available Jira actor identifier from the webhook payloadmeta.session: usually the issue key, otherwise the project key or webhook event namemeta.thread: omitted for Jira webhook events
The JSON-decoded content payload includes:
sourceselfeventtimestamppayloadissue: an object with optionalkeyproject: an object with optionalkeyuser: a best-effort object withid,name, andemail
Environment
jiraxmcp reads environment variables from the shell and from .env automatically.
Supported variables:
JIRA_HOSTJIRA_EMAILJIRA_API_TOKENJIRA_ACCESS_TOKENJIRA_WEBHOOK_PORTJIRA_WEBHOOK_HOSTJIRA_WEBHOOK_SECRET
If JIRA_WEBHOOK_PORT is not set, the webhook listener uses 6543. JIRA_WEBHOOK_HOST defaults to 127.0.0.1; set it to 0.0.0.0 if you need Jira to reach the listener from another machine. JIRA_WEBHOOK_SECRET is optional, but when set the webhook endpoint only accepts deliveries whose X-Hub-Signature matches the raw request body.
Local Data
jiraxmcp stores local state under ~/.jiraxmcp/.
Downloaded issue attachments are saved under attachments/ within that data directory.
License
MIT. See LICENSE.
