Skip to main content
Glama
GiDanis

copilot-jira-mcp

by GiDanis

🎫 Copilot Jira MCP Server

Turn your Jira into an AI-powered co-pilot.

GitHub Stars npm version License: MIT Node.js Version MCP Standard

Quick Start β€’ Features β€’ Supported Clients β€’ Available Tools β€’ Examples β€’ Marketing & Community


⚑ 10-Second Quick Start

No manual file editing required. Run the guided installer in 1 command:

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/GiDanis/copilot-jira-mcp/main/setup/install.sh | bash

Windows (PowerShell)

irm https://raw.githubusercontent.com/GiDanis/copilot-jira-mcp/main/setup/install.ps1 | iex

Or using NPX (Any OS)

npx copilot-jira-mcp setup

The setup wizard will test your credentials and automatically register the server across GitHub Copilot CLI, Claude Desktop, and Cursor!


Related MCP server: Jira Cloud MCP Server

πŸ’‘ Why Copilot Jira MCP?

Without Copilot Jira MCP 😫

With Copilot Jira MCP πŸš€

πŸ”€ Constantly alt-tabbing between IDE and browser

πŸ’¬ Ask your AI assistant directly in your editor

πŸ“‹ Manually hunting down acceptance criteria

πŸ“ Instant Markdown-rendered specs & subtasks

πŸ–±οΈ 15 clicks to move a ticket to In Progress

⚑ "Move PROJ-42 to In Progress with comment..."

πŸ”Ž Writing manual JQL in Jira search bars

🧠 AI translates plain English into precise JQL

⏳ Context loss during code reviews

πŸ” Pull requirements right alongside the diff


πŸ”„ How It Works

sequenceDiagram
    autonumber
    actor Dev as πŸ‘¨β€πŸ’» Developer
    participant AI as πŸ€– AI Assistant (Copilot / Claude / Cursor)
    participant MCP as 🎫 Copilot Jira MCP Server
    participant Jira as ☁️ Atlassian Jira Cloud

    Dev->>AI: "Summarize PROJ-123 requirements and move it to In Progress"
    AI->>MCP: Call jira_get_issue(issue_key: "PROJ-123")
    MCP->>Jira: GET /rest/api/3/issue/PROJ-123
    Jira-->>MCP: Raw Atlassian Document Format (ADF)
    MCP-->>AI: Clean Markdown spec, fields & subtasks
    AI->>MCP: Call jira_transition_issue(issue_key: "PROJ-123", transition: "In Progress")
    MCP->>Jira: POST /rest/api/3/issue/PROJ-123/transitions
    Jira-->>MCP: 204 No Content (Success)
    MCP-->>AI: Transition confirmed
    AI-->>Dev: "Here are the requirements for PROJ-123. I've updated the status to In Progress!"

✨ Key Features

  • πŸ” Smart JQL Search - Search issues via natural language or raw JQL with full pagination support

  • πŸ“ Native ADF βž” Markdown Parser - Converts Atlassian Document Format (ADF) into clean Markdown (code blocks, lists, tables, quotes, headings)

  • ⚑ Workflow Transitions - Advance ticket statuses (e.g., To Do βž” In Progress βž” Done) with optional resolution comments

  • πŸ’¬ Comment Threads - Read discussions and append new comments to issues

  • πŸ†• Create & Update Issues - Create new Tasks, Bugs, and Stories; edit summaries, descriptions, priorities, and labels

  • πŸ”— Subtasks & Issue Links - Inspect parent-child hierarchies and linked blocking issues

  • πŸ“ Project Discovery - List all accessible Jira projects and metadata

  • πŸ‘€ My Work Overview - Instant access to issues assigned to you

  • πŸ”Œ 1-Click Multi-Client Auto-Registration - Configures Copilot CLI, Claude Desktop, and Cursor automatically

  • πŸ”’ Enterprise-Grade Security - Credentials strictly stay in local environment variables; zero third-party telemetry


πŸ“± Supported Clients

Client

Status

Configuration File

GitHub Copilot CLI

βœ… Native

~/.copilot/mcp.json

Claude Desktop

βœ… Native

claude_desktop_config.json

Cursor IDE

βœ… Native

~/.cursor/mcp.json

Windsurf & VS Code

βœ… Supported

Standard MCP Stdio Configuration

Antigravity / Gemini

βœ… Supported

Local Stdio Transport


πŸ› οΈ Available MCP Tools

Copilot Jira MCP exposes 12 comprehensive tools spanning read, write, and workflow actions:

Tool

Action

Description

jira_get_issue

πŸ” Read

Comprehensive issue details, markdown description, subtasks, links, priority

jira_search_issues

πŸ” Read

Search Jira issues using JQL syntax with pagination

jira_get_my_issues

πŸ” Read

Quick query for tickets assigned to current user, optional status filter

jira_get_comments

πŸ” Read

Retrieve discussion history with author, date, and formatted text

jira_get_subtasks

πŸ” Read

List all subtasks and child issues linked to a parent ticket

jira_get_projects

πŸ” Read

List all Jira projects accessible by authenticated account

jira_get_transitions

πŸ” Read

List valid status transitions for an issue workflow

jira_whoami

πŸ” Read

Test connection and display authenticated user details

jira_create_issue

✏️ Write

Create new issue (Task, Bug, Story) with summary, description, priority, labels

jira_update_issue

✏️ Write

Modify existing issue summary, description, priority, or labels

jira_add_comment

✏️ Write

Post a new comment to an issue (plain text or markdown supported)

jira_transition_issue

⚑ Action

Move an issue through workflow states (In Progress, Done, etc.)

(Legacy aliases jira_get_ticket, jira_search_tickets, and jira_get_my_tickets are maintained for 100% backwards compatibility).


πŸ’¬ Interactive Query Examples

Once installed, simply talk naturally to your AI:

# In Copilot CLI, Claude Desktop, or Cursor:

> "Show me my open tickets in project PROJ"
> "What are the acceptance criteria for PROJ-1234?"
> "Add a comment to PROJ-1234: 'PR #42 is up for review.'"
> "Move PROJ-1234 to 'In Progress'"
> "Create a high priority bug: 'Payment gateway timeout on checkout'"
> "List all blockers linked to PROJ-567"
> "Who am I logged in as in Jira?"

πŸ’» CLI Commands

The jira-mcp CLI provides interactive management commands:

# Interactive dashboard (wizard, client registration, diagnostics)
npx copilot-jira-mcp

# Guided setup wizard
jira-mcp setup

# Register with all detected MCP client configs
jira-mcp register

# Test Jira credentials and print connection info
jira-mcp test

# Start server directly (used by AI clients)
jira-mcp start

# Show help
jira-mcp --help

βš™οΈ Manual Configuration

If you prefer configuring manually, set these environment variables:

export JIRA_URL="https://your-company.atlassian.net"
export JIRA_EMAIL="your-email@company.com"
export JIRA_API_TOKEN="your-atlassian-api-token"

Then add this block to your client config (~/.copilot/mcp.json or claude_desktop_config.json):

{
  "mcpServers": {
    "jira": {
      "command": "npx",
      "args": ["-y", "copilot-jira-mcp", "start"],
      "env": {
        "JIRA_URL": "${JIRA_URL}",
        "JIRA_EMAIL": "${JIRA_EMAIL}",
        "JIRA_API_TOKEN": "${JIRA_API_TOKEN}"
      }
    }
  }
}

πŸ§ͺ Testing & Quality Assurance

# Run unit test suite (10/10 tests pass)
npm test

# Run ESLint check
npm run lint

πŸ” Security & Privacy

  • Zero Plaintext Storage: Tokens are stored strictly in user-level environment variables or .env.

  • Zero Third-Party Relays: Direct HTTPS communication with your Jira Cloud/Server instance.

  • .gitignore Enforced: Credential files are never tracked by version control.

  • See SECURITY.md for vulnerability disclosure.


πŸ“’ Spread the Word!

If Copilot Jira MCP saves you time and context-switching:


πŸ“œ License

MIT Β© 2026 Giuseppe Danise β€” see LICENSE for details.

Available Tools

3 tools
jira_get_my_ticketsB

Recupera tutti i ticket assegnati all'utente corrente

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFiltra per stato (es. "In Progress", "Open", "To Do")
max_resultsNoNumero massimo di risultati (default: 20)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It only states the primary action and scope but does not disclose read-only nature, default statuses, ordering, pagination behavior, or any authentication/rate-limit considerations. The max_results parameter hints at pagination but the description does not elaborate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that directly states the tool's purpose without any filler or repetition. It is appropriately front-loaded and concise.

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?

For a simple tool with two optional parameters and no output schema, the description covers the core functionality. However, it lacks usage differentiation from siblings and does not describe the return format or default behavior, which could be important for an agent to fully understand the tool's output.

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%, with clear descriptions for 'status' and 'max_results'. The tool description adds no extra meaning beyond those schema definitions, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Recupera tutti i ticket assegnati all'utente corrente' (Retrieves all tickets assigned to the current user), specifying a concrete action and resource with scope. It distinguishes from siblings by focusing on current-user assignment rather than a single ticket (jira_get_ticket) or general search (jira_search_tickets).

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 guidance is provided on when to use this tool versus the siblings. The description does not mention alternatives or contexts where jira_search_tickets might be more appropriate, nor any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_get_ticketA

Recupera i dettagli di un ticket Jira specifico tramite la sua chiave (es. IIAB-81069)

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_keyYesLa chiave del ticket Jira (es. IIAB-81069)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It states it retrieves details, implying a read-only operation, but does not disclose any additional behavioral traits such as error handling, required permissions, or side effects. The behavior is simple and inferable, so a 3 is appropriateβ€”clear but not rich in context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that contains all essential information: the action, the target, and the parameter format. No filler or redundancy. It is front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with one parameter and no output schema, the description is complete. It tells the agent exactly what the tool does and what input is needed. The lack of output structure is not a gap because the tool's purpose is clearβ€”returning ticket details.

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?

The schema description already covers the parameter fully (Key of the Jira ticket with example IIAB-81069). The tool description repeats the same example, adding no new semantic value beyond what the schema provides. Since schema coverage is 100%, baseline 3 is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Recupera i dettagli' - retrieves the details), the resource (a specific Jira ticket), and the unique identifier (its key). It distinguishes itself from siblings by emphasizing 'specifico tramite la sua chiave', which clearly separates it from searching or getting my tickets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: when you have a specific ticket key and need its details. It doesn't explicitly compare with sibling tools (jira_search_tickets, jira_get_my_tickets), but the context is clear enough that this is the tool for a known key. Missing explicit exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_search_ticketsA

Cerca ticket Jira usando JQL (Jira Query Language). Esempi: "project = IIAB AND status = Open", "assignee = currentUser()", "labels = backend"

ParametersJSON Schema
NameRequiredDescriptionDefault
jqlYesQuery JQL per cercare i ticket
max_resultsNoNumero massimo di risultati (default: 20)

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Non sono presenti annotations, quindi la descrizione deve indicare il comportamento. Dice solo che esegue una ricerca con JQL, ma non specifica se Γ¨ read-only, il formato di ritorno (es. array di ticket), l'ordine, la paginazione o eventuali limiti. Manca trasparenza su aspetti comportamentali rilevanti.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Descrizione in una frase breve con tre esempi immediatamente utili. Nessuna parola superflua, il contenuto Γ¨ front-loaded e facilmente consultabile.

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?

Per uno strumento semplice con due parametri ben documentati e una funzione di ricerca ben exemplificata, la descrizione Γ¨ quasi completa. Manca perΓ² la forma del risultato (output non definito) e un riferimento esplicito ai casi d'uso alternativi, ma il tutto resta comunque utilizzabile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Lo schema copre al 100% i parametri con descrizioni chiare. La descrizione aggiunge valore con esempi concreti di JQL che chiariscono la sintassi del parametro jql, pur non aggiungendo nulla su max_results oltre allo schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

La descrizione usa un verbo specifico ('Cerca') e indica chiaramente l'oggetto ('ticket Jira') e il metodo (JQL). Gli esempi illustrano il tipo di query, differenziando il tool dai sibling come jira_get_ticket e jira_get_my_tickets che non eseguono ricerche libere.

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?

L'uso Γ¨ implicito: si usa quando si vuole cercare ticket tramite JQL, come mostrato dagli esempi. Tuttavia non vengono esplicitati quando usare questo tool rispetto ai sibling (come jira_get_ticket per un ticket singolo o jira_get_my_tickets per i propri) nΓ© le esclusioni.

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. 3 tool updatesv1.0.0
    • First observedjira_get_my_tickets
    • First observedjira_get_ticket
    • First observedjira_search_tickets

TDQS

A3.7/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct retrieval mode: by key, by JQL query, and by assignee. Although search could mimic get_my_tickets with a JQL, the dedicated tool adds convenience and clarity.

Naming Consistency5/5

All tools follow a consistent 'jira_<verb>_<noun>' pattern, making the tool set predictable and easy to navigate.

Tool Count4/5

With only 3 tools, the set is concise but reasonable for a read-only Jira assistant. It is within the ideal range, though slightly sparse.

Completeness2/5

The server only supports reading tickets. Missing create, update, transition, and comment operations leaves significant gaps for typical Jira workflows, so the surface feels incomplete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers