jira-mcp
Connects MCP clients to a Jira Server / Data Center instance via the REST API v2, enabling AI agents to search issues with JQL, retrieve issues, changelogs, comments, transitions, and worklogs, browse projects, issue types, priorities, statuses, users, versions, components, and fields, as well as create, update, clone, comment on, transition, link, log work on, and delete issues, comments, and attachments. Includes field discovery helpers for create/edit metadata, bulk operations on up to 50 issues, and attachment upload/download.
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 all open Jira bugs assigned to me in project PROJ"
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
A local stdio MCP server for Jira Server / Data Center. Connect MCP clients (Claude, Codex, Cursor, VS Code, opencode, …) to your Jira instance through the REST API v2 — search, create, update, comment, transition, log work, and more, all through natural language.
Verified against Jira Server 8.13.5. Jira Cloud is only partially compatible (API token authentication, no session fallback).
Features
41 tools — 22 read-only, 16 write, 3 delete (see Tools)
Read-only by default — set
JIRA_ALLOW_WRITE=truefor writes andJIRA_ALLOW_DELETE=truefor deletesSafe by design — the server never bypasses Jira permissions; 401/403/404 are mapped to explicit error codes with suggestions
Basic auth with session fallback — automatically falls back to session-cookie auth when Basic auth is rejected
Field discovery helpers —
jira_get_create_meta/jira_get_edit_metalist the fields available on your project screensStructured results — every tool returns
structuredContentplus a text summaryNo credential leakage — credentials come from env vars or CLI args only; never logged, never echoed in errors
Built on the official MCP TypeScript SDK (v2)
Related MCP server: jira-mcp
Requirements
Node.js >= 20
A reachable Jira Server / Data Center instance (REST API v2)
Quick start
Standard configuration (works in most clients):
{
"mcpServers": {
"jira": {
"command": "npx",
"args": ["-y", "--package=github:kevinclouds/jira-mcp#v0.1.0", "jira-mcp"],
"env": {
"JIRA_URL": "https://jira.example.com",
"JIRA_USERNAME": "your-username",
"JIRA_PASSWORD": "your-password",
"JIRA_ALLOW_WRITE": "true",
"JIRA_ALLOW_DELETE": "true"
}
}
}
}Pin a reviewed tag or commit SHA in production — avoid mutable branches.
claude mcp add jira \
-e JIRA_URL=https://jira.example.com \
-e JIRA_USERNAME=your-username \
-e JIRA_PASSWORD=your-password \
-- npx -y --package=github:kevinclouds/jira-mcp#v0.1.0 jira-mcpAdd to ~/.codex/config.toml:
[mcp_servers.jira]
command = "npx"
args = ["-y", "--package=github:kevinclouds/jira-mcp#v0.1.0", "jira-mcp"]
[mcp_servers.jira.env]
JIRA_URL = "https://jira.example.com"
JIRA_USERNAME = "your-username"
JIRA_PASSWORD = "your-password"
JIRA_ALLOW_WRITE = "true"
JIRA_ALLOW_DELETE = "true"Add to .vscode/mcp.json:
{
"servers": {
"jira": {
"command": "npx",
"args": ["-y", "--package=github:kevinclouds/jira-mcp#v0.1.0", "jira-mcp"],
"env": {
"JIRA_URL": "https://jira.example.com",
"JIRA_USERNAME": "your-username",
"JIRA_PASSWORD": "your-password",
"JIRA_ALLOW_WRITE": "true",
"JIRA_ALLOW_DELETE": "true"
}
}
}
}Add to ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jira": {
"type": "local",
"command": ["npx", "-y", "--package=github:kevinclouds/jira-mcp#v0.1.0", "jira-mcp"],
"environment": {
"JIRA_URL": "https://jira.example.com",
"JIRA_USERNAME": "your-username",
"JIRA_PASSWORD": "your-password",
"JIRA_ALLOW_WRITE": "true",
"JIRA_ALLOW_DELETE": "true"
}
}
}
}git clone https://github.com/kevinclouds/jira-mcp.git
cd jira-mcp
npm install # installs the MCP SDK and builds dist via prepare{
"mcpServers": {
"jira": {
"command": "node",
"args": ["/absolute/path/jira-mcp/dist/index.mjs"],
"env": {
"JIRA_URL": "https://jira.example.com",
"JIRA_USERNAME": "your-username",
"JIRA_PASSWORD": "your-password",
"JIRA_ALLOW_WRITE": "true",
"JIRA_ALLOW_DELETE": "true"
}
}
}
}Configuration
Environment variables (recommended)
Variable | Description |
| Jira base URL |
| Account username |
| Account password (API token on Jira Cloud) |
| Set to |
| Set to |
CLI arguments
Argument | Description |
| Same as the env vars above |
| Disable session-cookie fallback on 401 |
Write and delete permissions are controlled only through the environment variables above. CLI permission flags are not supported.
Tools
Full JSON schemas are discoverable via tools/list. Read-only tools are registered by default; set JIRA_ALLOW_WRITE=true for write tools and JIRA_ALLOW_DELETE=true for delete tools.
jira_search_issues— Search Jira issues with JQLjira_get_issue— Get one Jira issue by keyjira_get_issue_history— Get the changelog of an issuejira_get_issue_comments— List issue commentsjira_get_issue_transitions— List available transitions for an issuejira_get_worklogs— List worklogs of an issuejira_list_projects— List visible Jira projectsjira_get_project— Get a Jira projectjira_list_issue_types— List all issue typesjira_list_priorities— List all prioritiesjira_list_statuses— List all statusesjira_list_users— Search usersjira_list_versions— List project versionsjira_list_components— List project componentsjira_get_myself— Get the current Jira accountjira_get_server_info— Get Jira server version and deployment informationjira_list_fields— List all Jira fields, including custom fieldsjira_get_create_meta— Get create-issue field metadata for a project and issue typejira_get_edit_meta— Get the editable fields of an issuejira_get_issue_link_types— List issue link typesjira_download_attachment— Download attachment content as base64jira_get_capabilities— Show the MCP write flags for this session
jira_create_issue— Create an issue (full field set, incl. custom fields)jira_update_issue— Update issue fieldsjira_clone_issue— Clone an issue into another projectjira_update_issue_assignee— Change the assigneejira_update_issue_labels— Replace labelsjira_update_issue_priority— Change priorityjira_update_issue_components— Replace componentsjira_add_comment— Add a commentjira_edit_comment— Edit a commentjira_upload_attachment— Upload an attachment (base64)jira_add_worklog— Add a worklog entryjira_link_issues— Link two issuesjira_create_issue_link— Create a remote issue linkjira_transition_issue— Transition an issuejira_bulk_update_issues— Update up to 50 issues with the same fieldsjira_bulk_transition_issues— Transition up to 50 issues
jira_delete_issue— Delete an issuejira_delete_comment— Delete a commentjira_delete_attachment— Delete an attachment
Security
Credentials are read from environment variables or CLI arguments only — they are never written to disk by this server, logged, or included in error messages
The server never bypasses Jira permissions; every operation is subject to the authenticated account's actual permissions
Errors are mapped to explicit codes:
JIRA_AUTHENTICATION_FAILED,JIRA_PERMISSION_DENIED,JIRA_RESOURCE_NOT_FOUND,JIRA_INVALID_REQUEST,JIRA_SERVER_ERROR,JIRA_NETWORK_ERRORAttachment downloads are restricted to URLs on the configured Jira host
No telemetry, no third-party services — the server only talks to the Jira URL you configure
Known constraints
Suppressing notifications (
notifyUsers=false) requires Jira administrator or project administrator permission; regular accounts receive a 403Optional fields must be enabled on the project's create/edit screens; check with
jira_get_create_meta/jira_get_edit_metabefore setting themDeleting issues, creating projects and similar operations depend on the account's permissions
On Jira Server 8.13, the issue changelog is fetched via
expand=changelog(no standalone changelog endpoint)
Development
npm install # installs dependencies and builds dist (prepare)
npm run build # rebuild dist
npm run release-check # secret-pattern scan + npm auditProject layout:
src/
index.mjs # stdio entry point
server.mjs # McpServer assembly and tool registration
lib/ # config, guard, Jira REST client, result helpers
tools/ # tool definitions by domain: read / write / delete
scripts/ # build and release checksLicense
MIT — see the LICENSE file.
This server cannot be deployed
Maintenance
Related MCP Connectors
One OAuth connector for your team's remote MCP servers, with Tool Packs, guardrails and logs.
1Read and write Mission Control state via MCP — projects, tasks, subtasks, templates, status updates.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- 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.115 npm4MIT
- AlicenseNot gradedqualityDmaintenanceWraps Jira Data Center operations as MCP tools, enabling AI assistants to interact with Jira for project management and issue tracking.54 npmApache 2.0
- FlicenseNot gradedqualityBmaintenanceMCP server for Jira Data Center / Server (self-hosted Jira, REST API v2) that exposes core work-item project-management operations (platform + Agile) as MCP tools.-
- FlicenseAqualityBmaintenanceMCP server that connects to Jira Data Center, enabling issue search, retrieval, creation, comments, workflow transitions, project listing, arbitrary JQL, and turning meeting notes into structured Jira stories, tasks, and bugs.13-