Skip to main content

A clean, reliable MCP server for Jira integration with Claude Desktop

Project description

Jira MCP Server

A clean, reliable Model Context Protocol server for Jira integration, designed for use with Claude Desktop and other MCP clients.

Why This Exists

The existing Jira MCP servers have quality issues:

  • Pydantic dependency conflicts
  • Deprecated API usage (v2 instead of v3)
  • Poor error handling
  • Unreliable connections

This implementation focuses on:

  • ✅ Modern Jira REST API v3
  • ✅ Minimal, stable dependencies
  • ✅ Proper error handling
  • ✅ Multi-instance support
  • ✅ Type safety throughout

Features

Core Operations

  • 🔍 Search issues with JQL (Jira Query Language)
  • 📄 Get issue details with full field information
  • Create issues with descriptions, labels, and custom fields
  • ✏️ Update issues (summary, description, labels, etc.)
  • 💬 Add comments to issues
  • 🔄 Transition issues between statuses
  • 📋 List projects accessible to the user

Multi-Instance Support

Connect to multiple Jira instances simultaneously:

  • Different organizations
  • Personal and work accounts
  • Multiple teams

Quick Start

1. Installation

Option A: Install from PyPI (Recommended)

pip install jira-mcp-server

Option B: Install from source

git clone https://github.com/Positronic-AI/jira-mcp.git
cd jira-mcp
pip install -e .

2. Get Your Jira API Token

  1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
  2. Click "Create API token"
  3. Give it a name (e.g., "Claude Desktop MCP")
  4. Copy the token

3. Test Connection

export JIRA_MYCOMPANY_URL="https://your-company.atlassian.net"
export JIRA_MYCOMPANY_EMAIL="your.email@company.com"
export JIRA_MYCOMPANY_TOKEN="your_api_token_here"

jira-mcp --test-connection mycompany

You should see:

✓ Connected successfully!
  User: Your Name (your@email.com)
  Account ID: 123abc...
  Accessible projects: N

4. Configure Claude Desktop

Edit your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Add this configuration:

{
  "mcpServers": {
    "jira": {
      "command": "jira-mcp",
      "args": ["--instance", "mycompany"],
      "env": {
        "JIRA_MYCOMPANY_URL": "https://your-company.atlassian.net",
        "JIRA_MYCOMPANY_EMAIL": "your.email@company.com",
        "JIRA_MYCOMPANY_TOKEN": "your_api_token_here"
      }
    }
  }
}

Note: If you installed in a virtual environment, use the full path to jira-mcp, e.g., /path/to/venv/bin/jira-mcp

5. Restart Claude Desktop

Completely quit and reopen Claude Desktop.

6. Test It!

Try these commands in Claude:

List my Jira projects

Search for issues assigned to me

Show me PROJECT-123

Create a new task in PROJECT called "Test MCP integration"

Usage Examples

Natural Language Commands

Once configured, you can use natural language with Claude:

  • "Find all open bugs in the MOBILE project"
  • "Show me high priority issues assigned to me"
  • "Create a task about fixing the login page"
  • "Add a comment to PROJ-42 saying the fix is deployed"
  • "Move PROJ-42 to In Progress"
  • "Update the summary of PROJ-42 to include more details"

Direct JQL Queries

Search Jira with: project = PROJ AND status = "In Progress" ORDER BY priority DESC

Multi-Instance Configuration

To connect multiple Jira instances:

{
  "mcpServers": {
    "jira-work": {
      "command": "jira-mcp",
      "args": ["--instance", "work"],
      "env": {
        "JIRA_WORK_URL": "https://company.atlassian.net",
        "JIRA_WORK_EMAIL": "you@company.com",
        "JIRA_WORK_TOKEN": "token1"
      }
    },
    "jira-personal": {
      "command": "jira-mcp",
      "args": ["--instance", "personal"],
      "env": {
        "JIRA_PERSONAL_URL": "https://personal.atlassian.net",
        "JIRA_PERSONAL_EMAIL": "you@personal.com",
        "JIRA_PERSONAL_TOKEN": "token2"
      }
    }
  }
}

Claude will know which instance to use based on context.

Architecture

jira-mcp/
├── server.py          # Main MCP server
├── jira_client.py     # Jira REST API v3 wrapper
├── config.py          # Configuration management
├── requirements.txt   # Python dependencies
└── examples/          # Configuration examples

Key Design Decisions

Minimal Dependencies: Only essential, stable packages (mcp, httpx, pydantic, python-dotenv)

Modern API: Uses Jira REST API v3 (/rest/api/3/search/jql) instead of deprecated v2

Type Safety: Full type hints throughout for better IDE support and fewer bugs

Error Handling: Clear error messages propagated from Jira API

Multi-Instance: Environment-based configuration for multiple Jira instances

Available Tools

The server exposes these MCP tools:

Tool Description
jira_search Search issues using JQL with pagination
jira_get_issue Get detailed issue information
jira_create_issue Create new issues with custom fields
jira_update_issue Update existing issue fields
jira_add_comment Add comments to issues
jira_transition_issue Change issue status
jira_list_projects List accessible projects

Troubleshooting

Connection fails

  • Verify your API token is correct
  • Check the Jira URL has no trailing slash
  • Ensure your email matches the Atlassian account
  • Test with: jira-mcp --test-connection <instance>

Claude Desktop doesn't see the server

  • Verify JSON config is valid
  • Use absolute paths (not ~/ or relative)
  • Restart Claude Desktop completely
  • Check Claude Desktop logs for errors

"Module not found" errors

  • Ensure jira-mcp-server is installed: pip install jira-mcp-server
  • If using a virtual environment, ensure it's activated or use the full path

"Field cannot be set" errors

  • Not all fields are available on all projects
  • Check your project's issue type screen configuration
  • Common issue: priority field not on screen (make it optional)

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

Areas we'd especially appreciate help:

  • Unit and integration tests
  • Jira Data Center support
  • Attachment handling
  • Sprint/board operations
  • Custom field improvements

Development

# Clone and setup
git clone https://github.com/Positronic-AI/jira-mcp.git
cd jira-mcp
pip install -e ".[dev]"

# Test connection
export JIRA_TEST_URL="https://test.atlassian.net"
export JIRA_TEST_EMAIL="test@example.com"
export JIRA_TEST_TOKEN="test_token"
jira-mcp --test-connection test

License

MIT License - see LICENSE for details.

Acknowledgments

Support


Note: This is an independent project and is not affiliated with Atlassian or Anthropic.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jira_mcp_simple-1.0.0.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jira_mcp_simple-1.0.0-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file jira_mcp_simple-1.0.0.tar.gz.

File metadata

  • Download URL: jira_mcp_simple-1.0.0.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for jira_mcp_simple-1.0.0.tar.gz
Algorithm Hash digest
SHA256 af6445d5b467cf0c222018d99a0c01e4bd00d27d3ebd006eb0996f35bdff51b3
MD5 429ae46fa0051ed04757df48bcbcc8ff
BLAKE2b-256 2d2f653df5f57dccc8b789cf1f75d0fedb938b6ac0284d1944bf8ec3865f8e93

See more details on using hashes here.

File details

Details for the file jira_mcp_simple-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for jira_mcp_simple-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b017078858a5b3c64dd3db0fedf106b960593bbf8276847d2aea259ab9208ccd
MD5 e0f12e72fd3c1575c14b4fa25d921dff
BLAKE2b-256 eb7c1c57ff4702d1733fa6b54a55e4f3e018832397df0046bc1c2e16463cca18

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page