Jira MCP serverand Python AI tasks
qbash hosts a Jira MCP server you can use in Claude, ChatGPT, Codex, Cursor, Grok Bot and Muse.
Developers use qbash Tasks to write cloud-hosted Python functions that pair Jira with models such as Claude and GPT.
MCP server
Build a Jira MCP server
Give ChatGPT, Claude and your other AI tools access to Jira through one server. You pick which Jira tools it shares, and you can add other connectors, memory folders and Tasks to the same server.
How to set it up
- Connect Jira on the qbash Connectors page.
- Create an MCP server and add the Jira tools you want to share.
- Paste the server URL into your client. It connects with OAuth or an access token.
Python AI task
Write a Jira task in Python
A qbash Task is a hosted Python function that calls Jira and AI models.
Prepare a ticket handoff
Read an issue with its recent comments and ask an inline prompt for its status, the outcome the reporter asked for and the questions nobody has answered yet.
report = qbash.integrations.jira.get_ticket(ticket_id="PROJ-123")
ticket = report.get("ticket")
if ticket and ticket.get("key"):
brief = qbash.ai.run_prompt(
slug="jira-ticket-handoff",
variables={"ticket": json.dumps(ticket)},
)
qbash.output(brief)
else:
qbash.output("The response did not include an issue to summarise.")
Sample get_ticket response
{
"status": "success",
"ticket_id": "PROJ-123",
"ticket": {
"key": "PROJ-123",
"id": "10001",
"summary": "Export audit report",
"description": "Add CSV export for the monthly audit review.\n\nFinance needs it before the October close.",
"status": {
"name": "In Progress",
"id": "3"
},
"assignee": {
"displayName": "Sam",
"emailAddress": "sam@example.com",
"accountId": "5b10ac8d82e05b22cc7d4ef5"
},
"reporter": {
"displayName": "Alex",
"emailAddress": null,
"accountId": "5b10a2844c20165700ede21g"
},
"issuetype": {
"name": "Task",
"id": "10001"
},
"priority": {
"name": "Medium",
"id": "3"
},
"created": "2026-09-25T09:00:00.000+0000",
"updated": "2026-09-28T12:00:00.000+0000",
"resolution": null,
"labels": [
"finance",
"audit"
],
"components": [
"Reporting"
],
"project": {
"key": "PROJ",
"name": "Platform"
},
"parent": {
"key": "PROJ-100",
"summary": "Audit tooling"
},
"links": [
{
"type": "Blocks",
"direction": "inward",
"description": "is blocked by",
"key": "PROJ-98",
"summary": "Store export jobs",
"status": {
"name": "Done",
"id": "10002"
}
}
],
"attachments": [
{
"id": "10200",
"filename": "audit-columns.csv",
"mime_type": "text/csv",
"size": 2048,
"created": "2026-09-25T09:05:00.000+0000",
"author": {
"displayName": "Alex",
"accountId": "5b10a2844c20165700ede21g"
}
}
],
"comments": [
{
"id": "10301",
"author": {
"displayName": "Sam",
"emailAddress": "sam@example.com",
"accountId": "5b10ac8d82e05b22cc7d4ef5"
},
"created": "2026-09-28T11:40:00.000+0000",
"updated": "2026-09-28T11:40:00.000+0000",
"body": "Which date format does finance expect in the export?",
"is_internal": false
}
],
"comments_total": 1,
"custom_fields": {
"customfield_10016": {
"name": "Story point estimate",
"value": 3
}
}
},
"message": "Ticket retrieved"
}
What the Jira connector can do
- Get a JIRA ticket by ID, with its comments, attachments, links and custom fields
- List JIRA tickets filtered by date range or ticket number range
- Update fields and labels on a JIRA ticket
- Add a comment to a JIRA ticket
- Transition a JIRA ticket to a new workflow status
- List the comments on a JIRA ticket, one page at a time
- Download a JIRA attachment and return a file reference
- List the fields on the JIRA site, with their ids and types
- Search JIRA tickets by JQL, or by text, project and recent updates
- List the JIRA projects the credential can see
- List the issue types of a JIRA project
- List the fields a new JIRA ticket takes for a project and issue type
- List the fields the user can edit on a JIRA ticket
- List the workflow transitions a JIRA ticket can take now
- List the issue link types of the JIRA site
- Read the field changes on JIRA tickets. Only status changes unless field_ids names other fields or "all"
- Create a JIRA ticket in a project, checked against the project's create screen
- Link two JIRA tickets, such as one that duplicates or blocks another
- Add a link to a page outside JIRA, such as a support record, to a ticket
qbash Tasks: AI applications in Python
A Task is a Python function that calls Jira, your other connectors and models such as Claude, GPT, Gemini and Grok. qbash hosts and runs it.
Run Tasks on a schedule or from your team's tools
- Deterministic where it counts Write the logic in Python and call a model only for the steps that need judgement, so the rest runs the same way every time.
- Version controlled Every save is a revision you can compare and roll back.
- Logged Each run records its inputs, output, errors and what started it.
- Shared credentials Connections belong to your organization, so a Task keeps working when its author is away.
Jira MCP questions
Does Atlassian have an official Jira MCP server?
Yes. Atlassian runs the Rovo MCP server for Jira and Confluence Cloud, with OAuth sign-in. On a qbash server, Jira tools can share one URL with other connectors and Tasks.
Does it work with Jira Data Center?
No. The qbash Jira connector calls REST API v3 paths that only Jira Cloud serves, so Jira Server and Data Center sites cannot connect.
Whose permissions does each call use?
Every call acts as the Atlassian account that connected, with that account’s project permissions. Atlassian API tokens expire within a year, and qbash asks you to reconnect when Jira refuses one.
Guides that use Jira
Related developer connectors
Build a Jira task
Write it in Python with AI steps, and qbash hosts it with versions and run logs.
Build a Jira MCP server
Pick the Jira tools to share and connect ChatGPT, Claude or Grok Bot.