sthirugn/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 henry@mcphub.com.
The Jira MCP Server is a Model Context Protocol server designed to integrate Jira with Cursor and other MCP-compatible tools, facilitating seamless issue and project management.
Jira MCP Server
A clean and focused Model Context Protocol (MCP) server that provides seamless integration between AI assistants and Jira, enabling natural language interaction with your Jira projects, issues, and workflows.
๐ฏ Features
- 11 Comprehensive Tools for full Jira interaction
- Natural Language Interface - Ask AI to manage your Jira work
- Real-time Updates - Get current project status and issue information
- Secure Authentication - API token-based authentication
- Cross-platform - Works with any MCP-compatible client
- Easy Setup - Simple configuration and testing
๐ ๏ธ Available Tools
Tool | Description | Example Usage |
---|---|---|
get_issue | Get detailed issue info | get_issue(issue_key="PROJ-12345") |
search_issues | Search with JQL | search_issues(jql="project = PROJ") |
create_issue | Create new issue | create_issue(project_key="PROJ", issue_type="Bug", summary="...") |
update_issue | Update existing issue | update_issue(issue_key="PROJ-12345", summary="New title") |
add_comment | Add comment to issue | add_comment(issue_key="PROJ-12345", comment="...") |
get_comments | Get all comments | get_comments(issue_key="PROJ-12345") |
transition_issue | Move through workflow | transition_issue(issue_key="PROJ-12345", transition_name="In Progress") |
get_project | Get project info | get_project(project_key="PROJ") |
get_issue_types | Get available types | get_issue_types(project_key="PROJ") |
get_my_issues | Get assigned issues | get_my_issues(max_results=20) |
get_project_issues | Get project issues | get_project_issues(project_key="PROJ") |
๐ Quick Start (5 minutes)
Prerequisites
- Python 3.8 or higher
- Jira account with API access
- MCP-compatible client (Cursor, VS Code, etc.)
1. Clone and Setup
cd jira-mcp-server
pip install -r requirements.txt
2. Configure Credentials
Create a .env
file with your Jira details:
JIRA_SERVER=https://your-company.atlassian.net
JIRA_EMAIL=your-email@company.com
JIRA_API_TOKEN=your-api-token
Getting Your API Token:
- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Click "Create API token"
- Copy the token to your
.env
file
3. Test Connection
python3 test_connection.py
4. Configure MCP Client
For Cursor:
Add to ~/.cursor/mcp.json
:
{
"mcpServers": {
"jira": {
"type": "stdio",
"command": "python3",
"args": ["/full/path/to/jira-mcp-server/server.py"],
"env": {
"JIRA_SERVER": "https://your-company.atlassian.net",
"JIRA_EMAIL": "your-email@company.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
For VS Code:
Add to your VS Code MCP configuration:
{
"mcpServers": {
"jira": {
"type": "stdio",
"command": "python3",
"args": ["/full/path/to/jira-mcp-server/server.py"],
"env": {
"JIRA_SERVER": "https://your-company.atlassian.net",
"JIRA_EMAIL": "your-email@company.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
Important:
- Use the full absolute path to
server.py
! - The
"type": "stdio"
field is required for proper MCP communication - If using a virtual environment, use the full path to the Python interpreter:
"/path/to/venv/bin/python3"
5. Start the Server
python3 server.py
6. Restart and Test
Restart your MCP client and try these commands:
- "Show me all open issues in project XYZ"
- "Create a new task for fixing the login bug"
- "Search for high priority bugs assigned to me"
๐ Project Structure
jira-mcp-server/
โโโ server.py # Main MCP server implementation
โโโ test_connection.py # Connection test script
โโโ requirements.txt # Python dependencies
โโโ .env # Environment variables (create this)
โโโ README.md # This file
๐ Related Projects
- Jira Weekly Reports - Generate automated weekly team summaries from Jira tickets
๐ฏ Usage Examples
Get Your Issues
# Get issues assigned to you
get_my_issues(max_results=10)
Search for Specific Issues
# Find high priority bugs
search_issues(jql="project = PROJ AND priority = High AND type = Bug")
# Find recent updates
search_issues(jql="project = PROJ AND updated >= -7d")
Create New Issue
create_issue(
project_key="PROJ",
issue_type="Task",
summary="Implement new feature",
description="Add support for advanced filtering",
priority="Medium"
)
Update Issue Status
transition_issue(
issue_key="PROJ-12345",
transition_name="In Progress"
)
Get Issue Details
# Get details for issue PROJ-12345
get_issue(issue_key="PROJ-12345")
Search Issues
# Search for open issues in PROJ project
search_issues(jql="project = PROJ AND status = Open", max_results=10)
๐ JQL Query Examples
Common Patterns
# Your assigned issues
assignee = currentUser()
# Issues in specific project
project = PROJ
# Open issues
status = Open
# Issues updated in last 7 days
updated >= -7d
# High priority issues
priority = High
# Issues with specific component
component = "Backend"
# Status filters
status IN ("In Progress", "Code Review")
# Date filters
created >= "2025-01-01"
# Priority filters
priority IN ("High", "Critical")
# Combined queries
project = PROJ AND status = Open AND priority = High
assignee = currentUser() AND updated >= -3d
๐งช Testing Your Setup
1. Connection Test
python3 test_connection.py
โ Should show: "Successfully connected to Jira"
2. Start Server (Optional Test)
python3 server.py
โ Should start the MCP server and wait for connections.
3. Individual Tool Test
# Test search functionality
python3 -c "
import asyncio
from server import JiraMCPServer
async def test():
server = JiraMCPServer()
await server._init_jira_client()
result = await server._search_issues('project = PROJ', max_results=3)
print(f'Found {len(result)} results')
asyncio.run(test())
"
๐ Starting the Server
Simply run the server directly:
python3 server.py
Note: Make sure you've completed the setup steps above (installing dependencies, creating .env
file, and testing connection) before starting the server.
๐ Security Best Practices
- Never commit
.env
file - Add to.gitignore
- Use API tokens instead of passwords
- Rotate tokens regularly
- Limit token permissions to minimum required
- Use environment variables for sensitive data
๐ Troubleshooting
Common Issues
-
Authentication Error
- Check your API token is correct
- Ensure your email matches your Jira account
- Verify token hasn't expired
-
Connection Error
- Check your internet connection
- Verify JIRA_SERVER URL is correct
- Ensure firewall allows HTTPS connections
-
Permission Error
- Check your Jira permissions
- Verify you have access to the project/issue
- Contact your Jira administrator
-
"Permission denied" errors
- Run:
chmod +x server.py test_connection.py
- Run:
-
"Module not found" errors
- Run:
pip install -r requirements.txt
- Run:
-
Cursor doesn't see the server
- Double-check the absolute path in your MCP config
- Restart Cursor completely
- Check that the
.env
file has the correct credentials - "No tools or prompts" error: Ensure
"type": "stdio"
is included in your MCP configuration - Virtual environment: Use the full path to your Python interpreter (e.g.,
/path/to/venv/bin/python3
)
Debug Mode
Enable debug logging by modifying the logging level in server.py
:
logging.basicConfig(level=logging.DEBUG)
๐ ๏ธ Development
Adding New Tools
- Add tool definition to
list_tools()
method - Add handler in
call_tool()
method - Implement the actual tool method
- Update this README
Error Handling
The server includes comprehensive error handling:
- Connection errors
- Authentication failures
- Invalid issue keys
- JQL syntax errors
- Permission errors
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ค Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
๐ Success!
Your Jira MCP server is now properly configured and ready to use! You can:
- โ Search and view Jira issues
- โ Create and update issues
- โ Manage comments and transitions
- โ Get project information
- โ Handle your assigned work
The server provides a powerful interface between AI assistants and your Jira workflow, making it easier to manage projects and track progress.
๐ What's Next?
Once it's working, you can:
- Ask about specific issues: "What's the status of PROJ-123?"
- Create issues: "Create a bug report for the navbar not working"
- Search with JQL: "Find all issues in project ABC that are in review"
- Add comments: "Add a comment to PROJ-456 saying testing is complete"
- Transition issues: "Move PROJ-789 to Done"
Enjoy your new Jira integration! ๐