MCP
developer

Jira

Query and update Jira issues, projects, and worklogs via raw REST verbs.

Requires Growth plan or above.

Connect Jira

Create an API token at id.atlassian.com → Security → API tokens, then paste the token plus your site URL and email on the Jira card at /dashboard/connections.

Example

Search for the top 10 unresolved bugs in a project using JQL.

app/api/open-bugs/route.ts
export async function GET() {
const res = await fetch('https://leash.build/api/integrations/jira/jira_get', {
method: 'POST',
headers: {
'x-api-key': process.env.LEASH_API_KEY!,
'content-type': 'application/json',
},
body: JSON.stringify({
endpoint: '/rest/api/3/search',
params: {
jql: 'project = ENG AND type = Bug AND resolution = Unresolved',
maxResults: 10,
fields: 'summary,status,assignee,priority',
},
}),
})
const { data } = await res.json()
// data =>
// {
// total: 47,
// issues: [
// {
// key: 'ENG-1024',
// fields: {
// summary: 'Webhook retries duplicate events',
// status: { name: 'In Progress' },
// priority: { name: 'High' },
// assignee: { displayName: 'Alice' }
// }
// },
// ...
// ]
// }
return Response.json(data)
}

Available tools

  • jira_get — read endpoint (JQL search, get issue, list projects, etc.).
  • jira_post — create issues, add comments, run transitions.
  • jira_put — full replace of a resource (issue body, worklog).
  • jira_patch — partial update (single field change).
  • jira_delete — delete an issue, comment, or worklog.

Common gotchas

  • Use the Jira REST v3 API path (/rest/api/3/...). v2 still works but returns different content shapes for rich-text fields.
  • JQL is timezone-sensitive. updated >= "-1d" uses the API user's configured timezone — not UTC.
  • Description fields are Atlassian Document Format (ADF). Plain strings are ignored on Cloud; wrap content in an ADF doc node.

See the Jira Cloud REST API reference for the underlying provider docs.

Other languages: see SDK overview.