Model Context Protocol server for Jira integration
Project description
MCP Server for JIRA
A Model Context Protocol (MCP) server that provides seamless integration with Jira. This server enables AI assistants to retrieve issue information, comments, and attachments from any Jira instance.
Features
- 🎫 Issue Management: Get, create, update, and transition issues
- 🔍 Advanced Search: JQL-based issue search with custom fields
- 📊 Epic & Sprint Tracking: Monitor progress, story points, and completion
- 🔗 Issue Relationships: View and manage issue links
- 💬 Comments: Add and retrieve issue comments
- 📎 Attachments: Download issue attachments
- 📜 History: Track all changes to issues
- 🚀 Release Management: View project versions and releases
- 👥 Assignment: Assign/unassign issues to users
- 🔒 Secure Authentication: Uses Jira API tokens
Installation
Using uvx (Recommended)
uvx jira-mcp-tools
Using pip
pip3 install jira-mcp-tools
Prerequisites
- Python 3.10 or higher
- Jira API token (How to create)
- UV package manager (Installation guide)
Configuration
Environment Variables
The server requires three environment variables:
JIRA_URL: Your Jira instance URLJIRA_EMAIL: Your Jira account emailJIRA_TOKEN: Your Jira API token
MCP Client Configuration
Add to your MCP client configuration (e.g., Claude Desktop, Bob):
{
"mcpServers": {
"jira": {
"command": "uvx",
"args": ["jira-mcp-tools"],
"env": {
"JIRA_URL": "https://jsw.ibm.com/",
"JIRA_EMAIL": "your-email@ibm.com",
"JIRA_TOKEN": "your-api-token"
}
}
}
}
Available Tools
Issue Information
get_jira_ticket_info
Get detailed information about a Jira issue including description and comments.
Parameters:
issue_key(string): Issue key (e.g., "PROJ-123")
Example: get_jira_ticket_info("PROJ-123")
get_jira_ticket_attachments
Download attachments from a Jira issue.
Parameters:
issue_key(string): Issue key
Example: get_jira_ticket_attachments("PROJ-456")
get_issue_history
Get complete change history of an issue including status transitions and field updates.
Parameters:
issue_key(string): Issue key
Example: get_issue_history("PROJ-123")
get_issue_links
Get all linked issues (blocks, relates to, etc.).
Parameters:
issue_key(string): Issue key
Example: get_issue_links("PROJ-123")
Search & Discovery
search_issues
Search for issues using JQL (Jira Query Language).
Parameters:
jql(string): JQL query (e.g., 'project = PROJ AND status = "In Progress"')max_results(int, optional): Maximum results (default: 50)fields(string, optional): Comma-separated field list
Examples:
search_issues('project = MYPROJ')
search_issues('assignee = currentUser() AND status != Done')
search_issues('updated >= -7d ORDER BY updated DESC')
Epic & Sprint Management
get_epic_details
Get epic information including child issues, progress metrics, and story points.
Parameters:
epic_key(string): Epic issue key
Example: get_epic_details("PROJ-123")
get_sprint_info
Get sprint information for a board.
Parameters:
board_id(int): Jira board IDsprint_id(int, optional): Specific sprint ID (omit for all sprints)
Examples:
get_sprint_info(42) # All sprints for board 42
get_sprint_info(42, 123) # Specific sprint
Project Management
get_project_releases
Get all releases/versions for a project with associated issues.
Parameters:
project_key(string): Project key (e.g., "PROJ")
Example: get_project_releases("PROJ")
Issue Modification
create_issue
Create a new Jira issue.
Parameters:
project_key(string): Project keysummary(string): Issue titledescription(string): Issue descriptionissue_type(string, optional): Issue type (default: "Task")
Example: create_issue("PROJ", "Fix bug", "Description here", "Bug")
update_issue
Update fields of an existing issue.
Parameters:
issue_key(string): Issue keyfields(dict): Fields to update
Examples:
update_issue("PROJ-123", {"summary": "New title"})
update_issue("PROJ-123", {"priority": {"name": "High"}})
update_issue("PROJ-123", {"labels": ["bug", "urgent"]})
transition_issue
Move an issue to a new status.
Parameters:
issue_key(string): Issue keytransition_name(string): Transition name (e.g., "In Progress", "Done")
Example: transition_issue("PROJ-123", "In Progress")
assign_issue
Assign an issue to a user.
Parameters:
issue_key(string): Issue keyassignee(string): Username/email (use "none" to unassign)
Example: assign_issue("PROJ-123", "user@company.com")
add_comment
Add a comment to an issue.
Parameters:
issue_key(string): Issue keycomment_text(string): Comment text
Example: add_comment("PROJ-123", "This is a comment")
Development
Local Development Setup
-
Clone the repository
git clone <repository-url> cd mcp-jira
-
Install dependencies
uv sync -
Configure environment
cp env.template .env # Edit .env with your Jira credentials: # JIRA_URL=https://your-instance.atlassian.net/ # JIRA_EMAIL=your-email@company.com # JIRA_TOKEN=your-api-token
-
Run the server
uv run mcp_jira/server.py
Testing with Bob
-
Add to Bob's MCP settings (
~/.bob/mcp_settings.jsonor via Bob UI):{ "mcpServers": { "jira": { "command": "uv", "args": ["--directory", "/path/to/mcp-jira", "run", "mcp_jira/server.py"], "env": { "JIRA_URL": "https://your-instance.atlassian.net/", "JIRA_EMAIL": "your-email@company.com", "JIRA_TOKEN": "your-api-token" } } } }
-
Restart Bob to load the MCP server
-
Switch to Advanced mode in Bob to access MCP tools
-
Test the connection:
- Ask Bob: "Search for issues in project PROJ"
- Or: "Get details for issue PROJ-123"
Running Tests
# Run tests
uv run pytest
# Run with coverage
uv run pytest --cov
Use Cases
- AI-Assisted Development: Let AI assistants fetch and analyze Jira issues
- Automated Workflows: Integrate Jira data into automated processes
- Context-Aware Coding: Provide issue context to AI coding assistants
- Documentation: Auto-generate documentation from Jira issues
Roadmap
- Support for creating and updating issues
- Advanced search capabilities
- Support for Jira workflows and transitions
- Enhanced attachment handling (PDFs, images)
- Bulk operations support
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details.
Support
- Issues: GitHub Issues
- Documentation: Full Documentation
Acknowledgments
Built with:
- FastMCP - Fast MCP server framework
- jira-python - Python Jira library
- Model Context Protocol - MCP specification
Project details
Release history Release notifications | RSS feed
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_tools-0.2.3.tar.gz.
File metadata
- Download URL: jira_mcp_tools-0.2.3.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddcab0dc7cfb55b2f2e5d45cad962017e1069813ce7752ca19d4c42892dbd616
|
|
| MD5 |
b981b217f55e9d0849e8cabd06294b49
|
|
| BLAKE2b-256 |
1e8bba7e69970595a6a1eb3a175449ec1f4d6531e7658ff296f644c423007c3d
|
File details
Details for the file jira_mcp_tools-0.2.3-py3-none-any.whl.
File metadata
- Download URL: jira_mcp_tools-0.2.3-py3-none-any.whl
- Upload date:
- Size: 11.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 |
bc2800b8f66c0498af04c5c420aa6ff03fb14e6aa7ba37565c68295f6744f153
|
|
| MD5 |
f2486c19ca956fb76ba4e18d08d29159
|
|
| BLAKE2b-256 |
1bda0658c44c8684fe73068be8af80988382198a01444c8a1c44f62987c82d62
|