JIRA MCP Server for AI integration - fetch user stories and issues
Project description
JIRA MCP Server
A Model Context Protocol (MCP) server for JIRA integration that allows AI assistants to read user stories and issues from JIRA projects.
🚀 Quick Start with Docker
# Pull from Docker Hub
docker pull yourusername/jira-mcp-server:latest
# Run with environment variables
docker run -d \
-e JIRA_URL=https://your-company.atlassian.net \
-e JIRA_USERNAME=your-email@company.com \
-e JIRA_API_TOKEN=your-api-token \
--name jira-mcp-server \
yourusername/jira-mcp-server:latest
📋 Features
- 46 JIRA Tools: Complete JIRA operations ecosystem
- Core Operations: User stories, issues, projects, search, stats
- Workflow Management: Transitions, comments, assignments, worklogs
- Agile Support: Boards, sprints, backlogs, burndown charts
- File Management: Upload, download, list attachments
- Advanced Features: Webhooks, reporting, batch operations
- MCP Protocol: Standard Model Context Protocol for AI integration
- Docker Ready: Pre-built Docker images available
- Secure: Uses JIRA API tokens for authentication
🔧 Configuration
Required Environment Variables
| Variable | Description | Example |
|---|---|---|
JIRA_URL |
Your JIRA instance URL | https://company.atlassian.net |
JIRA_USERNAME |
Your JIRA email | user@company.com |
JIRA_API_TOKEN |
JIRA API token | ATATT3xFfGF0... |
Getting JIRA API Token
- Go to Atlassian Account Settings
- Click "Create API token"
- Copy the generated token
🐳 Docker Usage
Using Docker Hub Image
# Basic usage
docker run -d \
-e JIRA_URL=https://your-company.atlassian.net \
-e JIRA_USERNAME=your-email@company.com \
-e JIRA_API_TOKEN=your-api-token \
yourusername/jira-mcp-server:latest
# With custom name and restart policy
docker run -d \
--name jira-mcp \
--restart unless-stopped \
-e JIRA_URL=https://your-company.atlassian.net \
-e JIRA_USERNAME=your-email@company.com \
-e JIRA_API_TOKEN=your-api-token \
yourusername/jira-mcp-server:latest
Using Docker Compose
version: '3.8'
services:
jira-mcp-server:
image: yourusername/jira-mcp-server:latest
environment:
- JIRA_URL=https://your-company.atlassian.net
- JIRA_USERNAME=your-email@company.com
- JIRA_API_TOKEN=your-api-token
restart: unless-stopped
🛠️ Local Development
Prerequisites
- Python 3.10+
- uv package manager
Setup
# Clone repository
git clone https://github.com/yourusername/jira-mcp-server.git
cd jira-mcp-server
# Install dependencies
uv sync
# Copy environment template
cp .env.example .env
# Edit .env with your JIRA credentials
nano .env
# Test connection
uv run python test_connection.py
# Run server
uv run python server.py
🔌 MCP Integration
With Claude Desktop
Add to your Claude Desktop MCP configuration:
{
"mcpServers": {
"jira": {
"command": "docker",
"args": [
"exec", "-i", "jira-mcp-server",
"uv", "run", "python", "server.py"
]
}
}
}
With Other MCP Clients
The server communicates via stdio using the standard MCP protocol:
# Send MCP requests via stdin
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | docker exec -i jira-mcp-server uv run python server.py
📖 Available Tools (46 Total)
Core JIRA Operations (10 tools)
get_user_stories- Fetch user stories from projectsget_issue- Get specific issue by keyget_projects- List all accessible projectssearch_issues- Search issues with JQLget_project_stats- Get project statisticsget_recent_issues- Get recently updated issuesget_issues_by_assignee- Get issues by assigneecreate_issue- Create new issuesupdate_issue- Update existing issuesadvanced_jql_search- Advanced JQL search
Workflow Management (6 tools)
transition_issue- Change issue statusbulk_transition_issues- Bulk status changesget_transitions- Get available transitionsadd_comment- Add comments to issuesassign_issue- Assign issues to usersadd_worklog- Log work time
File & Attachment Management (3 tools)
upload_attachment- Upload files to issuesdownload_attachment- Download attachmentslist_attachments- List issue attachments
Project & User Management (5 tools)
get_issue_types- Get project issue typesget_project_components- Get project componentsget_project_versions- Get project versionsget_custom_fields- Get custom field definitionsget_users- Get project users
Agile & Sprint Management (4 tools)
get_boards- Get agile boardsget_sprints- Get board sprintsget_sprint_issues- Get sprint issuesadd_to_sprint- Add issues to sprints
Issue Relationships & Hierarchy (4 tools)
link_issues- Create issue linksget_issue_links- Get issue relationshipsget_subtasks- Get issue subtaskscreate_subtask- Create subtasks
Batch Operations (2 tools)
bulk_update_issues- Bulk update multiple issuesbulk_transition_issues- Bulk transition multiple issues
Webhooks & Notifications (3 tools)
list_webhooks- List configured webhooksadd_watcher- Add issue watchersget_watchers- Get issue watchers
Advanced Issue Operations (1 tool)
clone_issue- Clone existing issues
Reporting & Analytics (3 tools)
get_time_tracking_report- Get time tracking dataget_project_roles- Get project role assignmentsexport_issues- Export issues in various formats
Advanced Admin & Edge Cases (5 tools)
create_webhook- Create new webhookscreate_version- Create project versionsget_user_permissions- Get user permissionsget_workflows- Get workflow definitionsrelease_version- Release project versionsget_burndown_data- Get sprint burndown data
Example Usage:
{
"name": "get_user_stories",
"arguments": {
"project": "KW",
"limit": 20
}
}
🧪 Testing
# Run all tests (recommended)
python run_tests.py
# Quick validation (30 seconds)
python run_tests.py --smoke
# Core functionality (2 minutes)
python run_tests.py --unit
# All 46 tools (5 minutes)
python run_tests.py --comprehensive
# Test JIRA connection
python test_connection.py
🔒 Security
- Uses JIRA API tokens (not passwords)
- Validates input parameters
- Rate limiting and timeout protection
- No data persistence or logging of sensitive information
📝 License
MIT License - see LICENSE file for details.
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
📞 Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
🏷️ Tags
mcp jira ai model-context-protocol docker python atlassian
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jira_mcp_standalone-1.14.1.tar.gz.
File metadata
- Download URL: jira_mcp_standalone-1.14.1.tar.gz
- Upload date:
- Size: 92.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bf97fdc51e1e59e0421835a03ffefcd7c90e8630eaa94bed9d973a8c932aed1
|
|
| MD5 |
1b3b3da0c47008878c132bbfc8445e1b
|
|
| BLAKE2b-256 |
c69778ed61493343717c72d382d0af75b0b51a2f50e4367db9fabaa1fdcec9ff
|
File details
Details for the file jira_mcp_standalone-1.14.1-py3-none-any.whl.
File metadata
- Download URL: jira_mcp_standalone-1.14.1-py3-none-any.whl
- Upload date:
- Size: 114.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ef5978ffc362fd12a6d3a63514df76acbfc30c52123bd6f06319df04f62a0f0
|
|
| MD5 |
47f64ba9e7fea1eb8006a555d6af3cfa
|
|
| BLAKE2b-256 |
0e85d6810f79a4e8644e06f7156d8887e4d5b8243e05ded796ef69746a8c23e3
|