Jira MCP Server
You can use this server to let AI agents and CLI scripts work with Jira Cloud efficiently, covering issues, JQL search, projects, agile boards/sprints/epics, comments, worklogs, attachments, users, filters, links, watchers/votes, metadata, and permissions.
Manage Jira issues: get, create, update, delete, bulk-create, list/perform transitions, assign, and read changelogs.
Search with JQL and fetch JQL autocomplete metadata.
Read, add, update, and delete issue comments, with ADF flattened to plain text.
Look up users: current user, search, get by accountId, list assignable users, and bulk-fetch users.
Manage projects, components, versions, and per-issue-type statuses.
Work with Agile boards: list/get/create/delete, configuration, issues, backlog, and epics.
Manage sprints: list/get/create/update/delete, list issues, move issues into sprints or back to backlog.
Inspect epics and move issues into or out of epics.
List/add/update/delete worklogs with remaining-estimate adjustments.
Add, inspect, and delete attachments by local file path.
Manage saved JQL filters, including favourites.
Create, get, delete issue links and list link types.
List/add/remove watchers and list/add/remove votes.
List Jira metadata: fields, issue types, priorities, statuses, resolutions, and create metadata.
Search groups, list group members, and inspect current-user permissions.
Inspect Jira server version/build/deployment info.
Use token-efficient trimmed summaries with full raw responses saved to disk and referenced by path.
Optionally run as a standalone CLI, in code-api mode, with Docker, and with tool filtering to reduce context cost.
Access Jira data via MCP resources for projects, issues, boards, sprints, and current user.
Provides comprehensive access to Jira Cloud functionality including issue management, project administration, agile boards and sprints, epics, comments, attachments, worklogs, and JQL search capabilities through the Jira REST API v3 and Agile API 1.0.
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 MCP Server show me open issues in the current sprint"
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.
Ultra Jira MCP Server/CLI
A token-efficient Jira MCP server and CLI for Claude, ChatGPT, Cursor, Cline, and any other Model Context Protocol (MCP) client. Gives AI agents full access to Jira Cloud via the REST API v3 and Agile API 1.0 — without burning your context window on Jira's verbose JSON.
Built for the way real teams use AI agents with Jira: triaging tickets, planning sprints, summarizing comment threads, drafting status updates, running JQL searches, moving issues through workflows — not just for engineers writing code. If your agent talks to Jira, this server keeps it fast and cheap.
Keywords: Jira MCP server, Jira Cloud MCP, Claude Jira integration, ChatGPT Jira, Cursor Jira, Cline Jira, Atlassian MCP, AI agent for Jira, JQL agent, sprint management AI, ticket triage AI.
Why this over other Jira MCP servers
Most Jira MCP servers wrap the REST API one endpoint per tool and pass raw responses straight to the agent. That works on toy tickets and falls over the moment you point it at a real backlog. Here's what ultra-jira-mcp does differently:
~17× smaller per-call responses. A real "investigate this ticket with its comments" call drops from 270 KB (~67k tokens) of raw Jira JSON to 15 KB (~3,900 tokens) — same description, comments, subtasks, and links, just without Jira's
selfURLs, icon URLs, nested schema metadata, and ADF rich-text ASTs. See docs/BENCHMARK.md for the full table.Up to 99× smaller tool-list cost (the bytes paid into your context window on every conversation, before the agent has done anything). 16 consolidated tools instead of 80+ thin ones; optional
code-apimode collapses that to a single tool that hands the agent a shell binary.Full responses are never lost — they're written to a session-scoped temp dir and referenced by path. The agent reads the trimmed summary by default and
cats the full payload only when it actually needs the detail.ADF flattening built in. Atlassian Document Format trees become plain text on the way out, so a 500-byte comment doesn't arrive as a 4 KB nested AST.
Works as a standalone CLI too. The same
jira-clibinary runs without any MCP server in the picture — drop it in a script, a CI job, or a non-MCP agent framework.Tool surface you can prune.
JIRA_ENABLED_CATEGORIESandJIRA_DISABLED_ACTIONSlet you whitelist only the operations your agent should see (and block destructive ones likeissue.deleteat the dispatch layer, not just hide them from the schema).Covers REST v3 and Agile API 1.0. Issues, comments, worklogs, attachments, users, projects, boards, sprints, epics, filters, links, watchers/votes, fields, groups. Not just CRUD on issues.
Ships a Claude Code skill. One command (
jira-cli install-skill) drops a SKILL.md under~/.claude/skills/jira/so any future Claude Code session discovers the CLI on demand whenever the user mentions Jira.
If you're building anything beyond a demo — an agent that lives in a Slack channel triaging incoming tickets, a sprint-planning assistant that reads three boards, a release-notes drafter that scans a JQL filter — the per-call savings dominate every conversation longer than a handful of calls.
Related MCP server: Jira MCP
Use cases
This isn't only for coding agents. Anywhere an LLM talks to Jira:
Ticket triage and routing — agent reads new issues, classifies, assigns, sets priority.
Sprint planning and retros — pull the backlog, summarize blockers, draft sprint goals.
Status reporting — JQL → trimmed list → human-readable update for Slack, email, or a Confluence page.
Comment thread summarization — long discussion threads collapse to the decisions and open questions.
Workflow automation — agent moves issues through transitions, assigns reviewers, links related work.
Incident and bug investigation — agent pulls a rich ticket with all comments, attachments, and linked issues in one trimmed response.
Cross-tool workflows — pair with Confluence, GitHub, Slack, or Bitbucket MCP servers to drive end-to-end flows.
Coding agents — yes, this too. Claude Code, Cursor, Cline, and friends can pick up tickets, implement them, and update status without flooding context.
Installation
npx ultra-jira-mcpOr globally:
npm install -g ultra-jira-mcpConfiguration
Set these environment variables on the server process. With Claude Desktop or Claude Code that means the env block on the MCP server config.
Variable | Description | Required |
| Jira instance URL (e.g. | Yes |
| Atlassian account email | Yes |
| API token from Atlassian Account Settings | Yes |
| Cloud ID for scoped (ATATT/ATSTT) tokens; auto-fetched if omitted | No |
|
| No |
| Comma-separated category whitelist. Empty = all 16 categories enabled. | No |
| Comma-separated | No |
Claude Desktop / Claude Code setup
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or your ~/.claude.json:
{
"mcpServers": {
"jira": {
"command": "npx",
"args": ["-y", "ultra-jira-mcp"],
"env": {
"JIRA_HOST": "https://yourcompany.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}Docker
To keep npm ci and dependency install scripts off your machine, build the image from a checkout:
docker build -t ultra-jira-mcp .Then point your MCP client at docker run. Each -e NAME flag (no value) passes that variable through from the env block, so the token never appears in the container's command line:
{
"mcpServers": {
"jira": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--init",
"-v", "/tmp/jira-mcp:/tmp/jira-mcp",
"-e", "JIRA_HOST", "-e", "JIRA_EMAIL", "-e", "JIRA_API_TOKEN",
"ultra-jira-mcp"
],
"env": {
"JIRA_HOST": "https://yourcompany.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}The
/tmp/jira-mcpmount puts the full responses at the same path on the host, so theref: /pathin each summary stays readable by the agent.Pass
JIRA_CLOUD_ID,JIRA_ENABLED_CATEGORIESorJIRA_DISABLED_ACTIONSthe same way (-e NAMEplus anenventry) if you use them.Use classic mode. code-api mode hands the agent a CLI path and a unix socket inside the container, which a host shell can't reach.
Tool surface
Default mode is classic: 16 consolidated MCP tools, each taking an action argument plus action-specific args. For example jira_issue covers get, create, update, delete, bulkCreate, listTransitions, transition, assign, changelog — discriminated by action: "...".
The 16 tools and their actions
Tool | Actions |
| get, create, update, delete, bulkCreate, listTransitions, transition, assign, changelog |
| issues, jqlAutocompleteData, jqlSuggestions |
| list, add, update, delete |
| myself, search, get, assignable, bulkGet |
| list, get, create, update, delete, listComponents, createComponent, listVersions, createVersion, updateVersion, statuses |
| list, get, create, delete, configuration, issues, backlog, epics |
| listForBoard, get, create, update, delete, issues, moveIssues, moveIssuesToBacklog |
| get, issues, moveIn, removeFromCurrent |
| list, add, update, delete |
| get, delete, meta |
| list, get, create, update, delete, listFavourite |
| create, get, delete, types |
| list, add, remove, listVotes, addVote, removeVote |
| list, issueTypes, priorities, statuses, resolutions, createMeta |
| search, members, myPermissions |
| info |
Every action returns a trimmed summary (e.g. IssueSummary with key, status, assignee, recent comments, attachment list) plus the full untrimmed body written to disk under ${TMPDIR}/jira-mcp/${session}/. Agents read the full response only when they need the detail.
Tool filtering
Two env vars cut the tool-list cost paid every conversation:
"env": {
"JIRA_ENABLED_CATEGORIES": "issue,search,comment",
"JIRA_DISABLED_ACTIONS": "issue.delete,project.delete"
}JIRA_ENABLED_CATEGORIES— whitelist of consolidated tool categories (the part afterjira_). Tools outside the whitelist drop from the listing.JIRA_DISABLED_ACTIONS—category.actionpairs (manifest operation names likeissue.delete,permissions.mine,vote.add). Disabled actions are stripped from each tool'soneOfschema and rejected at dispatch time, so they're blocked even in code-api mode.
Concrete numbers from a recent benchmark run on a real Jira instance:
filter | tool-list bytes | ~tokens | factor |
none (16 tools) | 30.6KB | ~7,800 | 1× |
3 categories | 6.3KB | ~1,600 | 5× |
3 cats + 5 disabled actions | 4.6KB | ~1,200 | 6.6× |
code-api mode (1 tool) | 0.4KB | ~100 | 76× |
For the full v1-vs-v2 picture (per-call cost, three scenarios, ratios) see docs/BENCHMARK.md.
code-api mode (recommended for shell-capable agents)
If your agent can run shell commands (Claude Code, etc.), set JIRA_TOOL_MODE=code-api for a ~76× smaller tool-list footprint paid on every conversation. Per-call cost is essentially the same as classic, so the savings are pure win once your agent is making more than a few Jira calls.
Set JIRA_TOOL_MODE=code-api to expose a single MCP tool, jira_code_api. Calling it returns the path to the bundled jira-cli binary plus the JIRA_MCP_SOCKET address. The agent then drives Jira from a shell:
JIRA_MCP_SOCKET=/tmp/jira-mcp/${session}/ipc.sock \
node <cli-path> issue.get --issueIdOrKey=PROJ-1
# stdout: trimmed summary as JSON, then a final `ref: /path` line
# pointing at the full response on disk (`cat` it for detail).Discovery: node <cli-path> --help lists every operation; node <cli-path> <op> --help lists its flags.
Stays as classic by default because tool-only MCP clients (no shell access) can't drive jira-cli. See docs/MIGRATION.md for the full flow.
Standalone CLI (no MCP server)
The same jira-cli binary works without an MCP server. Set JIRA_HOST / JIRA_EMAIL / JIRA_API_TOKEN in your shell (or a .env.local in the cwd) and invoke it directly:
export JIRA_HOST=https://yourcompany.atlassian.net
export JIRA_EMAIL=you@example.com
export JIRA_API_TOKEN=...
npx -y -p github:scottlepp/ultra-jira-mcp#codeapi jira-cli issue.get --issueIdOrKey=PROJ-1The CLI auto-selects between bridge mode (JIRA_MCP_SOCKET set, talks to a running server) and direct mode (no socket, builds a JiraClient in-process). Same trim + ref output either way; credentials never leave the CLI's process.env, so they don't enter the agent's context.
For Claude Code users, install the skill once so the agent discovers the CLI on its own:
npx -y -p github:scottlepp/ultra-jira-mcp#codeapi jira-cli install-skillThis writes ~/.claude/skills/jira/SKILL.md. The skill loads on demand whenever the user mentions Jira and teaches the agent the canonical invocation, common operations, and --help discovery. Re-run with --force to update; --print dumps the rendered SKILL.md to stdout without writing.
Resources
The server also exposes Jira data via MCP resources:
jira://projects— list of accessible projectsjira://project/{key}— project detailsjira://issue/{key}— issue detailsjira://boards— all boardsjira://board/{id}— board detailsjira://sprint/{id}— sprint detailsjira://myself— current user
Development
npm install
npm run build # tsc → build/
npm test # vitest, ~400 unit tests, no live Jira
npm run benchmark # measures tool-list + per-call bytes against live Jira
npm run inspector # @modelcontextprotocol/inspector against build/index.jsThe benchmark requires .env.local with the regular JIRA_* vars plus JIRA_BENCH_TICKET_RICH and JIRA_BENCH_TICKET_SIMPLE keys. To include v1 in the comparison, set up a sibling worktree once: git worktree add ../ultra-jira-mcp-v1 v1.0.0 && (cd ../ultra-jira-mcp-v1 && npm install && npm run build). See docs/BENCHMARK.md for the latest numbers.
License
MIT
Available Tools
16 toolsjira_attachmentA
Add, inspect, or delete attachments. add uploads local file(s) by path (server reads the bytes — never pass contents). To download bytes, use the streaming downloader (returns a local path).
Inputs: action (required), full, filePath, attachmentId, +1 more.
jira_boardA
Manage Agile boards: list/get/create/delete, fetch configuration, list board issues, backlog, and epics.
Inputs: action (required), jql, done, full, +10 more.
jira_commentA
List, add, update, and delete comments on a Jira issue. Bodies are ADF documents.
Inputs: action (required), body, full, expand, +6 more.
jira_epicA
Inspect epics, list issues under an epic, and move issues into or out of epics.
Inputs: action (required), jql, full, expand, +5 more.
jira_fieldA
List Jira metadata: fields, issue types, priorities, statuses, resolutions, and per-project createMeta.
Inputs: action (required), full, expand, projectIds, +3 more.
jira_filterA
Manage saved JQL filters: list/get/create/update/delete plus the current user's favourites.
Inputs: action (required), id, jql, full, +14 more.
jira_groupA
Search groups, list group members, and inspect the current user's permissions.
Inputs: action (required), full, query, groupId, +10 more.
jira_issueA
Manage Jira issues: get, create, update, delete, bulk-create, list/perform transitions, assign, and read changelog. Returns trimmed summaries with refs to full payloads on disk.
Inputs: action (required), full, expand, fields, +11 more.
jira_linkA
Create, fetch, delete issue links, and list available link types.
Inputs: action (required), full, type, linkId, +3 more.
jira_projectA
Manage Jira projects, their components, versions, and per-issue-type statuses.
Inputs: action (required), key, full, name, +21 more.
jira_searchA
Search Jira issues with JQL or fetch JQL autocomplete metadata. Issue results come back as a trimmed list with refs.
Inputs: action (required), jql, full, expand, +6 more.
jira_serverA
Inspect the Jira server: version, build, deployment type.
Inputs: action (required), full.
jira_sprintA
Manage Jira sprints: list/get/create/update/delete, list sprint issues, and move issues in or out.
Inputs: action (required), jql, full, goal, +16 more.
jira_userC
Look up Jira users: current authenticated user, search by query/accountId, list assignable users for a project or issue, or bulk-fetch by accountId.
Inputs: action (required), full, query, expand, +10 more.
jira_watcherA
List, add, and remove watchers on an issue. Also: list votes and toggle the current user's vote.
Inputs: action (required), full, accountId, issueIdOrKey.
jira_worklogA
List, add, update, and delete worklogs on an issue. Supports remaining-estimate adjustment.
Inputs: action (required), full, expand, comment, +14 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Each tool targets a distinct Jira resource (issue, project, board, sprint, etc.) with no functional overlap. Tool names clearly indicate the resource they operate on.
All tools follow the consistent pattern 'jira_<resource_noun>', making it easy to predict tool names. No mixing of conventions.
16 tools cover the major Jira entities comprehensively without being excessive. The scope matches typical Jira usage well.
The tool set covers CRUD operations for core entities (issues, projects, boards, sprints), plus search, user management, and metadata. No obvious gaps for standard workflows.
Maintenance
Related MCP Connectors
Connect to Atlassian Jira, Confluence, Loom, and more to search, create, and manage your work.
Task manager your agent can fully operate: boards, tasks, sprints, roles, worklogs, day planner.
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Jira Cloud instances for comprehensive issue management including creating, updating, searching issues, managing comments, workflow transitions, and project metadata discovery. Supports JQL queries, user search, and custom field operations with secure API token authentication.122,052 npm8MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Jira Cloud instances, including creating and updating issues, managing sprints and projects, adding comments, tracking worklogs, and searching with presets.7 npmMIT
- AlicenseAqualityNot gradedmaintenanceEnables AI assistants to interact with Atlassian Jira Cloud, allowing users to manage projects, issues, comments, and workflows through natural language commands.61,677 npm3-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Jira Cloud through the REST API, supporting project management, issue operations (create, read, update, delete), JQL search, task assignments, and status transitions.-