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.