get_jiraLABSCO SUMMARY
Writes are a deliberate switch, not a default.
Two design choices carry this: write tools stay unregistered until you set the flag, and the HTTP transport refuses to lend out the operator's own credential. The authors are explicit that this began as a learning exercise and point at more mature Jira servers — take that at face value, and take the token handling as the part worth copying.
What it is
A containerised Python MCP server for Jira, built for Cursor and usable by any MCP client. It runs from a published image with your Jira personal access token supplied through an env file, and can also serve HTTP so callers bring their own token instead of the server's.
What you get
- Issues —
get_jiraby key,search_issueswith JQL,create_issue,update_issue,delete_issue - Comments and assignment —
get_issue_comments,add_comment,delete_comment,assign_issue,unassign_issue - Workflow —
transition_issueto a new status,get_issue_transitionsfor what is available,add_issue_labels,remove_issue_labels - Projects —
list_projects,get_project,get_project_components,get_project_versions,get_project_roles,get_project_permission_scheme,get_project_issue_types - Boards and sprints —
list_boards,list_sprints,get_sprint,get_sprints_by_name - Users —
search_users,get_user,get_current_user,get_assignable_users_for_project,get_assignable_users_for_issue - Writes are gated: with the default
JIRA_ENABLE_WRITE=falseCursor shows 20 tools; set it to true and you get 30
Requirements
Podman (or another container runtime) and a Jira personal access token. Create a .env with the token and register podman run -i --rm --env-file <YOUR_PATH_TO_DOTENV>/file.env quay.io/sbaird/jira-mcp:latest in your client. Developers can build locally with make setup, which builds the image, configures Cursor and creates ~/.rh-jira-mcp.env. For HTTP use, run python server.py --transport http --port 3075; in that mode the server ignores the Jira token in its own environment and requires each caller to send their own Jira token as a Bearer header, so one person's account is not shared with everyone who can reach the service. MIT.
Setup effort
Build from source — git clone https://github.com/redhat-community-ai-tools/jira-mcp
USE CASES
Finding the issues that matter right now
Run a JQL search from the chat and open the details of whichever key looks relevant.
Moving a ticket without opening Jira
Check which transitions the issue allows, then move it and leave a comment explaining why.
Planning against the current sprint
List the board's sprints, open the active one, and see what is assigned to whom.
Handing work to the right person
Look up who can be assigned on that project or issue, then assign it.
30 tools
Listed in project docs. Your client may show a different list.
search_issuescreate_issueupdate_issuedelete_issueget_issue_commentsadd_commentdelete_commentassign_issueunassign_issuetransition_issueget_issue_transitionsadd_issue_labelsremove_issue_labelslist_projectsget_projectget_project_componentsget_project_versionsget_project_rolesget_project_permission_schemeget_project_issue_typeslist_boardslist_sprintsget_sprintget_sprints_by_namesearch_usersget_userget_current_userget_assignable_users_for_projectget_assignable_users_for_issueBEFORE YOU INSTALL
What to know first
Tools you get
30 tools named in the project's documentation.
Requires
- podman on PATH
- JIRA_API_TOKEN in your environment
INSTALLATION
Connect your client
Server setup
git clone https://github.com/redhat-community-ai-tools/jira-mcp
cd jira-mcp
make setupMCP Clients
Cursor
{
"mcpServers": {
"jiraMcp": {
"command": "podman",
"args": [
"run",
"-i",
"--rm",
"--env-file",
"<YOUR_PATH_TO_DOTENV>/file.env",
"quay.io/sbaird/jira-mcp:latest"
],
"description": "A containerized MCP server to query Jira issues"
}
}
}Self-host — HTTP server
In your clone, install the Python dependencies:
pip install -r requirements.txtStart the server over Streamable HTTP with JIRA_URL from your env file: export $(grep -v '^#' ~/.rh-jira-mcp.env | xargs) && python server.py --transport http --port 3075
Point your client at http://localhost:3075/mcp and have it send your own Jira personal access token as the header Authorization: Bearer followed by the token.
In HTTP mode the server ignores the token in its own environment and requires every caller to send one, so each person connects with their own Jira account.