jira-mcp
A local MCP server that wraps the Jira REST API v3 for openmrs.atlassian.net, providing a comprehensive alternative to the Atlassian Rovo MCP Server. Bypasses the Rovo server's "anonymous project" bug by calling the REST API directly with Basic Auth.
Prerequisites
- uv installed
- A Jira API token (see below)
Generating a Jira API Token
- Go to <https://id.atlassian.com/manage-profile/security/api-tokens>
- Click Create API token, give it a label (e.g. "Claude MCP"), and copy the token.
Environment Variables
| Variable | Required | Description | |---|---|---| | JIRA_EMAIL | Yes | Your Atlassian account email | | JIRA_API_TOKEN | Yes | The API token you generated above | | JIRA_BASE_URL | No | Defaults to https://openmrs.atlassian.net |
Installation
Install as a tool so it's available as a standalone command:
uv tool install /absolute/path/to/jira-mcp
Replace /absolute/path/to/jira-mcp with the actual path to this directory. This creates a jira-mcp command (typically at ~/.local/bin/jira-mcp).
To update after pulling changes:
uv tool install --force /absolute/path/to/jira-mcp
Claude Desktop MCP Config
Add the following to your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux / WSL:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"jira": {
"command": "jira-mcp",
"env": {
"JIRA_EMAIL": "you@example.com",
"JIRA_API_TOKEN": "your-api-token-here"
}
}
}
}
If jira-mcp is not on Claude Desktop's PATH, use the full path (e.g. "/Users/you/.local/bin/jira-mcp").
Claude Code MCP Config
In your Claude Code settings (e.g. ~/.claude/settings.json), add:
{
"mcpServers": {
"jira": {
"command": "jira-mcp",
"env": {
"JIRA_EMAIL": "you@example.com",
"JIRA_API_TOKEN": "your-api-token-here"
}
}
}
}
Tools
| Tool | Description | Key Parameters | |---|---|---| | createJiraIssue | Create a new issue | projectKey, summary, issueType, description, priority, labels, assigneeAccountId | | getJiraIssue | Fetch an issue by key/ID | issueIdOrKey, fields | | editJiraIssue | Update fields on an issue | issueIdOrKey, summary, description, priority, labels, assigneeAccountId, issueType | | searchJiraIssues | Search with JQL | jql, maxResults, fields | | addCommentToJiraIssue | Add a comment | issueIdOrKey, body | | getTransitionsForJiraIssue | List available transitions | issueIdOrKey | | transitionJiraIssue | Move issue to new status | issueIdOrKey, transitionId | | getVisibleJiraProjects | List visible projects | maxResults | | getJiraIssueTypeMetaWithFields | Get create metadata for a project/issue type | projectIdOrKey, issueTypeId | | lookupJiraAccountId | Search users by name/email | query, maxResults |
All description and comment body parameters accept Markdown, which is automatically converted to Atlassian Document Format (ADF) before sending.











