royashish-in/jira-mcp-server
If you are the rightful owner of jira-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
A Model Context Protocol (MCP) server for JIRA integration that allows AI assistants to read user stories and issues from JIRA projects.
JIRA MCP Server
A Model Context Protocol (MCP) server for JIRA integration built with FastMCP 2.0 that allows AI assistants to read user stories and issues from JIRA projects.
🚀 Quick Start with Docker
# Pull from Docker Hub
docker pull royashish/jira-mcp-server:latest
# Test MCP protocol
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{"roots":{"listChanged":true},"sampling":{}},"clientInfo":{"name":"test","version":"1.0.0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_user_stories","arguments":{"project":"KW","limit":3}}}' | docker run -i --env-file .env royashish/jira-mcp-server:latest
📋 Features
- 47 JIRA Tools: Complete JIRA operations ecosystem (including global statistics)
- FastMCP 2.0: Modern, efficient implementation with 90% less code
- 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
- Auto Schema Generation: FastMCP handles validation and type safety
- 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
# Interactive MCP mode (recommended)
docker run -i --env-file .env royashish/jira-mcp-server:latest
# Background daemon mode
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 \
royashish/jira-mcp-server:latest
Using Docker Compose
version: '3.8'
services:
jira-mcp-server:
image: royashish/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
Using Kubernetes (Helm)
# Install with Helm
helm install jira-mcp ./helm-chart \
--set jira.url=https://your-company.atlassian.net \
--set jira.username=your-email@company.com \
--set jira.apiToken=your-api-token
🛠️ 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 (FastMCP 2.0)
uv run python server.py
🔌 MCP Integration
With Claude Desktop
Add to ~/.config/Claude Desktop/claude_desktop_config.json:
{
"mcpServers": {
"jira": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--env-file", "/path/to/.env",
"royashish/jira-mcp-server:latest"
]
}
}
}
With Other MCP Clients
Cline (VSCode) - Add to settings:
{
"cline.mcpServers": {
"jira": {
"command": "docker",
"args": ["run", "-i", "--env-file", ".env", "royashish/jira-mcp-server:latest"]
}
}
}
Continue - Add to config:
{
"mcpServers": {
"jira": {
"command": "docker",
"args": ["run", "-i", "--env-file", ".env", "royashish/jira-mcp-server:latest"]
}
}
}
Manual Testing
# Send MCP requests via stdin
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | docker run -i --env-file .env royashish/jira-mcp-server:latest
📖 Available Tools (47 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 (6 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 dataget_jira_statistics- Get comprehensive JIRA instance statistics
Example Usage:
{
"name": "get_user_stories",
"arguments": {
"project": "KW",
"limit": 20
}
}
🧪 Testing
# Run comprehensive test suite (all 47 tools)
python test/test_suite.py
# Test locally (without Docker)
python test/test_suite.py --local
See for detailed testing instructions.
🔒 Security
- Uses JIRA API tokens (not passwords)
- Validates input parameters
- Rate limiting and timeout protection
- No data persistence or logging of sensitive information
🧪 Testing
Comprehensive test suite validates all 47 tools:
# Test all tools with Docker
python test/test_suite.py
# Test locally
python test/test_suite.py --local
See for details.
🔧 Technical Details
- HTTP Client: Uses synchronous
requestslibrary (resolves MCP TaskGroup conflicts with async httpx) - MCP Protocol: JSON-RPC 2.0 over stdin/stdout
- Dependencies:
fastmcp>=2.0.0,requests>=2.25.0,python-dotenv>=1.0.0 - Python: 3.10+ required
MCP TaskGroup Fix
This server uses the synchronous requests library instead of httpx.AsyncClient to avoid TaskGroup management conflicts with MCP server frameworks. The async httpx client can cause 424 status codes and task cleanup issues when used within MCP's event loop management.
📝 License
MIT License - see 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