Install
$ agentstack add mcp-stolostron-jira-mcp-server ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Jira MCP Server
[](https://github.com/stolostron/jira-mcp-server/actions/workflows/ci.yml)
A Model Context Protocol (MCP) server that provides seamless integration with Jira instances. This server enables AI applications to interact with Jira issues, projects, and workflows through a standardized interface.
Jira Cloud Migration
The server has been updated to work with the new Jira Cloud instance. To migrate:
- Pull the latest changes
cd /path/to/jira-mcp-server && git pull
- Update your
.envfile
JIRA_SERVER_URL=https://redhat.atlassian.net
JIRA_ACCESS_TOKEN=
JIRA_EMAIL=@redhat.com
- Get your API token — Go to https://id.atlassian.com/manage-profile/security/api-tokens and click "Create API token"
- Reconnect — In Claude Code run
/mcpto reconnect, or restart your client (Cursor, Gemini CLI, etc.)
All custom field IDs and work type IDs have been updated in the code. No other changes needed.
Table of Contents
- [Features](#features)
- [Installation](#installation)
- [Configuration](#configuration)
- [Usage](#usage)
- [Client Configuration](#client-configuration)
- [Available Tools](#available-tools)
- [Slash Commands](#slash-commands)
- [Automatic Update Notifications](#automatic-update-notifications)
- [Development](#development)
- [Troubleshooting](#troubleshooting)
- [Advanced Configuration](#advanced-configuration)
- [License & Contributing](#license--contributing)
Features
- Issue Management: Search, create, update, and transition Jira issues
- Team Management: Define teams with multiple members and assign them to issues as watchers
- Component Aliases: Use short, memorable aliases instead of long component names
- Watcher Management: Add, remove, and list watchers on issues
- Issue Linking: Create links between issues with different relationship types (blocks, relates to, etc.)
- Project Access: List and browse Jira projects and components
- User Search: Find Jira users by name, email, or username for assignment
- Comments: Add comments to issues with security levels
- Time Logging: Log work time on issues with detailed comments
- Workflow Enforcement: Requires fix_version before transitioning beyond "In Progress"
- JQL Support: Full Jira Query Language support for advanced searching
- Rate Limiting: Built-in throttling to respect Jira API limits
- Async Operations: Fully asynchronous for optimal performance
- Type Safety: Pydantic models for structured data validation
- Multiple Transports: Support for both STDIO and SSE (HTTP) transports
- Client Integration: Works with Claude Code, Gemini CLI, Cursor, and other MCP clients
Installation
- Clone the repository:
git clone https://github.com/stolostron/jira-mcp-server.git
cd jira-mcp-server
- Install the package:
pip install -e .
Or install with development dependencies:
pip install -e ".[dev]"
> macOS: Use pip3 instead of pip: > ``bash > pip3 install -e . > ``
Configuration
- Copy the example environment file:
cp .env.example .env
- Edit
.envwith your Jira credentials:
JIRA_SERVER_URL=https://your-company.atlassian.net
JIRA_ACCESS_TOKEN=your-personal-access-token
JIRA_EMAIL=your-email@company.com
JIRA_VERIFY_SSL=true
JIRA_TIMEOUT=30
JIRA_MAX_RESULTS=100
# Optional: Configure teams (JSON format with usernames, NOT email addresses)
JIRA_TEAMS={"frontend": ["alice", "bob"], "backend": ["charlie", "david"], "devops": ["eve"]}
# Optional: Configure component aliases (JSON format mapping aliases to actual component names)
JIRA_COMPONENT_ALIASES={"ui": "User Interface", "be": "Backend Services", "infra": "Infrastructure"}
Note: Team member names must be Jira usernames, not email addresses.
Jira Cloud Setup
For Jira Cloud (Atlassian Cloud), you'll need to:
- Create a personal access token:
- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Click "Create API token"
- Use the access token as the
JIRA_ACCESS_TOKEN
- Set
JIRA_EMAILto the email address associated with your Atlassian account (required for Cloud authentication)
- Use your full Atlassian domain (e.g.,
https://yourcompany.atlassian.net)
Jira Server/Data Center Setup
For on-premise Jira instances:
- Use your Jira server URL
- Use your personal access token
- Ensure the user has appropriate permissions for the operations you need
Usage
Running the Server
STDIO Transport (Default)
Start the MCP server with STDIO transport (for use with MCP clients):
jira-mcp-server
Or run directly with Python:
python -m jira_mcp_server.main
SSE Transport (HTTP)
Start the MCP server with SSE (Server-Sent Events) transport for HTTP-based communication:
jira-mcp-server --transport sse
Or with custom host and port:
jira-mcp-server --transport sse --host 0.0.0.0 --port 9000
Or run directly with Python:
python -m jira_mcp_server.main --transport sse --host 127.0.0.1 --port 8000
When running with SSE transport, the server will expose:
- SSE Endpoint:
http://127.0.0.1:8000/sse(for real-time server-to-client communication) - Message Endpoint:
http://127.0.0.1:8000/messages/(for client-to-server communication)
Transport Types
- STDIO: Best for integration with MCP clients like Claude Code, IDEs, or command-line tools
- SSE: Best for web applications, REST API integration, or when you need HTTP-based communication
SSE Client Example
An example SSE client is provided to demonstrate how to connect to the server using HTTP transport:
# First, start the server with SSE transport
jira-mcp-server --transport sse
# Then run the example client (in another terminal)
python examples/sse_client.py
The example client demonstrates:
- Connecting to the SSE endpoint
- Listing available tools
- Getting Jira projects
- Searching for issues
Client Configuration
Claude Code
Claude Code is Anthropic's code editor application that supports MCP servers for enhanced AI-powered development assistance.
Configuration File Locations
Claude Code looks for MCP server configurations in the following locations (in order of precedence):
- Project-specific:
.mcp.jsonin your project directory - Project-specific:
.claude/settings.jsonin your project directory - Global:
~/.mcp.jsonin your home directory - Global:
~/.claude/settings.jsonin your home directory
Recommended: Use a project-specific .mcp.json or .claude/settings.json file for better portability and team sharing.
Setup Steps
- Create a project-specific configuration file (recommended, same format in all options):
{
"mcpServers": {
"jira-mcp-server": {
"command": "python",
"args": ["-m", "jira_mcp_server.main"],
"cwd": "/home/user/workspace_git/jira-mcp-server",
}
}
}
> macOS: Use python3 (or the full path /usr/local/bin/python3) instead of python: > ``json > { > "mcpServers": { > "jira-mcp-server": { > "command": "/usr/local/bin/python3", > "args": ["-m", "jira_mcp_server.main"], > "cwd": "/home/user/workspace_git/jira-mcp-server" > } > } > } > ``
Option A: Create .mcp.json in your project root:
Option B: Create .claude/settings.json in your project root:
- Or create a global configuration:
Option A: For global access across all projects, create ~/.mcp.json:
Option B: Or create ~/.claude/settings.json:
- Restart Claude Code to apply the configuration.
- Verify the connection by asking Claude to list your Jira issues or projects.
Example Usage
Once connected, you can ask Claude:
- "Show me all my assigned Jira issues"
- "Create a new bug report for the login issue"
- "What are the high priority issues in the PROJECT project?"
- "Add a comment to issue PROJ-123 saying it's been fixed"
- "Log 2 hours of work on issue PROJ-123 for debugging the login bug"
- "Link issue PROJ-123 to PROJ-456 with a 'blocks' relationship"
- "Show me all available link types for this Jira instance"
- "Assign the frontend team to issue PROJ-123"
- "Create a new issue and assign it to the backend team"
- "Who is watching issue PROJ-123?"
- "Add alice as a watcher to issue PROJ-456"
- "Find all issues assigned to the frontend team"
- "Show me open issues assigned to the backend team"
Gemini CLI
Gemini CLI is Google's command-line interface that supports MCP servers.
Configuration File Locations
- Global:
~/.gemini/settings.json - Project-specific:
/.gemini/settings.json
Setup Steps
- Create or edit the configuration file:
{
"mcpServers": {
"jira-mcp-server": {
"command": "python",
"args": ["-m", "jira_mcp_server.main"],
"cwd": "/home/user/workspace_git/jira-mcp-server",
"timeout": 30000,
"trust": false
}
}
}
> macOS: Use python3 (or the full path /usr/local/bin/python3) instead of python for the "command" value.
- Restart Gemini CLI to apply the configuration.
- Test the connection by running a command that interacts with Jira.
Example Usage
# Ask about Jira issues
gemini "Show me my assigned Jira issues"
# Create a new issue
gemini "Create a new bug report titled 'Login Error' in project PROJ"
# Log time on an issue
gemini "Log 2 hours on issue PROJ-123 for implementing the new feature"
# Link two issues together
gemini "Link issue PROJ-123 to PROJ-456 with a blocks relationship"
Cursor
Cursor is a code editor that supports MCP servers for AI-powered development assistance.
Recommended model: GPT-5 or claude-4-sonnet-1m (MAX)
Configuration File Locations
- Project-specific:
/.cursor/mcp.json - Global:
~/.cursor/mcp.json
Setup Steps
- Create or edit the configuration file:
{
"mcpServers": {
"jira-mcp-server": {
"command": "python",
"args": ["-m", "jira_mcp_server.main"],
"cwd": "/home/user/workspace_git/jira-mcp-server",
}
}
}
> macOS: Use python3 (or the full path /usr/local/bin/python3) instead of python for the "command" value.
- Restart Cursor to apply the configuration.
- Use the integration by asking Cursor to help with Jira-related tasks in your code.
Available Tools
The server provides the following MCP tools:
search_issues
Search for issues using JQL (Jira Query Language):
# Example JQL queries:
"project = MYPROJ AND status = Open"
"assignee = currentUser() AND priority = High"
"created >= -7d AND project in (PROJ1, PROJ2)"
search_issues_by_team
Search for issues assigned to any member of a team:
search_issues_by_team(
team_name="frontend",
project_key="PROJ", # Optional
status="In Progress" # Optional
)
This automatically generates a JQL query like:
project = PROJ AND (assignee = "alice" OR assignee = "bob") AND status = "In Progress"
get_issue
Get detailed information about a specific issue:
get_issue(issue_key="PROJ-123")
create_issue
Create a new issue:
create_issue(
project_key="PROJ",
summary="Fix login bug",
description="Users cannot log in with special characters",
issue_type="Bug",
priority="High"
)
update_issue
Update an existing issue:
update_issue(
issue_key="PROJ-123",
summary="Updated summary",
assignee="john.doe"
)
transition_issue
Change the status of an issue:
transition_issue(
issue_key="PROJ-123",
transition="Done"
)
Note: Transitions beyond "New", "Backlog", and "In Progress" require fix_version to be set on the issue. This ensures all completed work is tied to a release version.
add_comment
Add a comment to an issue:
add_comment(
issue_key="PROJ-123",
comment="This has been resolved"
)
link_issue
Create a link between two issues:
link_issue(
link_type="Blocks",
inward_issue="PROJ-123",
outward_issue="PROJ-456",
comment="This issue blocks the other one"
)
get_link_types
Get all available issue link types:
get_link_types()
log_time
Log time spent on an issue:
log_time(
issue_key="PROJ-123",
time_spent="2h 30m",
comment="Implemented new feature"
)
get_projects
List all accessible projects:
get_projects()
get_project_components
Get components for a specific project:
get_project_components(project_key="PROJ")
search_users
Search for Jira users by name, email, or username:
search_users(
query="john",
max_results=50
)
Returns matching users with their accountid, name, displayname, email_address, and active status. Useful for finding user IDs when assigning issues.
debug_issue_fields
Get all raw Jira fields for an issue (useful for debugging custom fields):
debug_issue_fields(issue_key="PROJ-123")
Team Management Tools
list_teams
List all configured teams and their members:
list_teams()
add_team
Add or update a team configuration:
add_team(
team_name="frontend",
members=["alice", "bob", "charlie"]
)
remove_team
Remove a team configuration:
remove_team(team_name="frontend")
assign_team_to_issue
Assign a team to an issue by adding all team members as watchers:
assign_team_to_issue(
issue_key="PROJ-123",
team_name="frontend"
)
Note: When creating issues, you can also use the team parameter to automatically add team members as watchers:
create_issue(
project_key="PROJ",
summary="Fix login bug",
description="Users cannot log in",
issue_type="Bug",
priority="High",
team="frontend" # All frontend team members will be added as watchers
)
Watcher Management Tools
get_issue_watchers
Get all watchers for an issue:
get_issue_watchers(issue_key="PROJ-123")
add_watcher_to_issue
Add a single watcher to an issue:
add_watcher_to_issue(
issue_key="PROJ-123",
username="alice"
)
remove_watcher_from_issue
Remove a watcher from an issue:
remove_watcher_from_issue(
issue_key="PROJ-123",
username="alice"
)
Component Alias Management Tools
list_component_aliases
List all configured component aliases:
list_component_aliases()
add_component_alias
Add or update a component alias:
add_component_alias(
alias="ui",
component_name="User Interface"
)
remove_component_alias
Remove a component alias:
remove_component_alias(alias="ui")
Available Resources
The server also provides MCP resources for read-only access:
jira://issue/{issue_key}- Get formatted issue detailsjira://projects- Get formatted list of all projects
Slash Commands
The project includes custom slash commands that can be installed for use in Claude Code.
/jira-create — Interactive Issue Creation
The /jira-create command provides a guided, interactive flow for creating Jira issues. It walks you through each step using prompts:
- Issue Type — Select from Story, Bug, Task, Spike, Feature, Epic, or Sub-task
- Specialist Agent — A specialist agent (e.g.,
story-specialist,bug-specialist) is launched to help craft the summary and description based on the issue type - Core Fields — Priority, Work Type, Original Estimate, Story Points
- Categorization — Component, Labels, Target Version
- Parent / Linking — Link to a parent issue or related issues
- Confirmation — Review all fields before creation
- **P
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: stolostron
- Source: stolostron/jira-mcp-server
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.