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
- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Click "Create API token"
- Give it a name (e.g., "Claude Desktop MCP")
- 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-serveris 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:
priorityfield 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
- Built for use with Claude Desktop
- Uses the Model Context Protocol
- Inspired by the need for reliable Jira automation
Support
Note: This is an independent project and is not affiliated with Atlassian or Anthropic.
Metadata
Release files for jira-mcp-simple 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jira_mcp_simple-1.0.0.tar.gz | 18.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jira_mcp_simple-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.7 kB
Release files / jira_mcp_simple-1.0.0.tar.gz
| Download URL | jira_mcp_simple-1.0.0.tar.gz |
|---|---|
| Size | 18.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
af6445d5b467cf0c222018d99a0c01e4bd00d27d3ebd006eb0996f35bdff51b3
|
|
BLAKE2b-256 checksum How to use checksums |
2d2f653df5f57dccc8b789cf1f75d0fedb938b6ac0284d1944bf8ec3865f8e93
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / jira_mcp_simple-1.0.0-py3-none-any.whl
| Download URL | jira_mcp_simple-1.0.0-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b017078858a5b3c64dd3db0fedf106b960593bbf8276847d2aea259ab9208ccd
|
|
BLAKE2b-256 checksum How to use checksums |
eb7c1c57ff4702d1733fa6b54a55e4f3e018832397df0046bc1c2e16463cca18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|