Jira MCP server
Prebuilt SnapLogic agentic-tool pipelines that let an LLM read from and act on Jira, callable as MCP tools via Pipeline Execute. Published in the SnapLogic pattern catalog.
Overview
These tools give agents full read and write access to a Jira issue tracker, covering search, create, update, transition, link, and delete operations. Metadata tools let an agent look up projects, priorities, issue types, statuses, and assignable users before creating or updating issues.
For setup instructions, see SnapLogic MCP Server quickstart.
Example Prompts
- File a bug in the SNAP project: 'Login page 500s on Safari', priority High
- Create a story in PROJ called 'Add SSO support' and assign it to Maria
- Log a task in SNAP with the label 'tech-debt' and this description
- Raise a Bug in PROJ against the 'Billing' component, priority Highest
- Delete SNAP-99, it was created by mistake
- Remove the duplicate ticket PROJ-451 from Jira
- Clean up the test issue SNAP-1234
- What fields are required to create a Bug in the SNAP project?
- Which issue types can I create in PROJ?
- Show me the create metadata for the SNAP project
Tools
| Tool Name | Functions |
|---|---|
| JiraCreateIssue | Create a new Jira issue in a project. |
| JiraDeleteIssue | Permanently delete a Jira issue by key or id. |
| JiraGetCreateMeta | Get the create-screen field schema for a project (optionally one issue type). |
| JiraGetIssue | Fetch a single Jira issue by key or id. |
| JiraGetTransitions | List the workflow transitions currently available on an issue. |
| JiraLinkIssues | Link two Jira issues with a named link type. |
| JiraListMetadata | Fetch a Jira reference list such as priorities, issue types or statuses. |
| JiraListProjects | List all Jira projects visible to the account. |
| JiraSearch | Run a JQL query and return the matching issues. |
| JiraSearchUsers | Find users assignable to issues on a given project. |
| JiraTransitionIssue | Move an issue through its workflow using a transition id. |
| JiraUpdateIssue | Update fields on an existing Jira issue, or add a comment. |
| SearchMeetingTranscripts | Search Meeting Transcripts |
Set up the MCP Server tools
- Download jira_tools.zip.
- In SnapLogic Designer, open the target project space (or create one), then choose Import Project / Import Pipelines and select the downloaded jira_tools.zip. Designer unpacks each pipeline into the project.
- Attach the required account to the connectivity snaps (see Connection Setup).
- Expose the project as an MCP server — each pipeline becomes a tool named after its label. New to this? Start with the MCP quickstart, then use the MCP Server Pipeline Builder to generate the server from the imported pipelines.
Configure account
Attach a JIRA account (Basic auth with an API token, or OAuth 2.0) to the JIRA snaps in Designer after import.
These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute.
See the SnapLogic account documentation for this connector: Configuring Jira Accounts.
JiraCreateIssue
Creates a new Jira issue in a project with a required type and summary, plus optional description, assignee, priority, labels, components, and custom fields. Use JiraGetCreateMeta or JiraListMetadata first if you are unsure which values the project accepts.
| Parameter | Type | Default | Description |
|---|---|---|---|
| project_key* | string | — | Key of the project the issue is created in, sent as fields.project.key, e.g. SNAP. |
| issue_type* | string | — | Issue type name, sent as fields.issuetype.name, e.g. Bug or Story. Must match a type the project's create screen allows. |
| summary* | string | — | Issue summary (title), sent as fields.summary. |
| description | string | — | Issue description, sent as fields.description. Omitted when blank. |
| assignee | string | — | Username of the assignee, sent as fields.assignee.name. Omitted when blank. |
| priority | string | — | Priority name, sent as fields.priority.name, e.g. High. Omitted when blank. |
| labels | array | — | Labels to set, sent as fields.labels. Omitted when null. |
| components | array | — | Components to set, sent as fields.components. Omitted when null. |
| custom_fields | object | — | Map of custom field ids to values, carried on the request document as custom_fields_merged. Omitted when null. |
* Required parameter.
Try asking:
- File a bug in the SNAP project: 'Login page 500s on Safari', priority High
- Create a story in PROJ called 'Add SSO support' and assign it to Maria
- Log a task in SNAP with the label 'tech-debt' and this description
- Raise a Bug in PROJ against the 'Billing' component, priority Highest
JiraDeleteIssue
Permanently deletes a single Jira issue with no undo. Use it only for duplicates, test data, or tickets filed by mistake; to close work normally, use JiraTransitionIssue instead.
| Parameter | Type | Default | Description |
|---|---|---|---|
| issue_id* | string | — | Issue key or numeric id to delete, e.g. SNAP-99. |
* Required parameter.
Try asking:
- Delete SNAP-99, it was created by mistake
- Remove the duplicate ticket PROJ-451 from Jira
- Clean up the test issue SNAP-1234
JiraGetCreateMeta
Returns the create-screen field schema for a project, including available issue types, required fields, and allowed values. Use it before creating an issue in an unfamiliar project, or when a create attempt fails on an invalid field.
| Parameter | Type | Default | Description |
|---|---|---|---|
| jira_base_url* | string | — | Base URL of the Jira instance, prefixed onto the REST path, e.g. https://yourcompany.atlassian.net. |
| project_key* | string | — | Project key passed as projectKeys on the createmeta call, e.g. SNAP. |
| issue_type | string | — | Issue type name to narrow the metadata to, passed as issuetypeNames, e.g. Bug. Omit for all types in the project. |
* Required parameter.
Try asking:
- What fields are required to create a Bug in the SNAP project?
- Which issue types can I create in PROJ?
- Show me the create metadata for the SNAP project
- What are the allowed values for the components field on PROJ stories?
JiraGetIssue
Retrieves the full record for a single Jira issue by its key or ID. Use it when the user names a specific ticket and needs its details rather than a list of results.
| Parameter | Type | Default | Description |
|---|---|---|---|
| issue_id* | string | — | Issue key or numeric id to fetch, e.g. PROJ-123. |
* Required parameter.
Try asking:
- What's the status of SNAP-42?
- Show me the full details of PROJ-123
- Who is PROJ-987 assigned to and what does the description say?
- Pull up ticket SNAP-1001
JiraGetTransitions
Lists the workflow transitions currently available on an issue, each with the ID that JiraTransitionIssue needs to execute it. Use it when you know the target state by name but need the transition ID to proceed.
| Parameter | Type | Default | Description |
|---|---|---|---|
| jira_base_url* | string | — | Base URL of the Jira instance, prefixed onto the REST path, e.g. https://yourcompany.atlassian.net. |
| issue_id* | string | — | Issue key or numeric id whose available transitions are listed, e.g. SNAP-42. |
* Required parameter.
Try asking:
- What statuses can SNAP-42 move to right now?
- Show me the available transitions for PROJ-123
- Can I close SNAP-88 directly, or does it have to go through review first?
JiraLinkIssues
Creates a named link between two Jira issues, such as Blocks, Relates, or Duplicate. Use it to record dependencies or duplication the user describes in conversation.
| Parameter | Type | Default | Description |
|---|---|---|---|
| link_type* | string | — | Name of the link type, sent as type.name, e.g. Blocks, Relates or Duplicate, as configured on the instance. |
| inward_issue* | string | — | Key of the inward issue in the link, sent as inwardIssue.key, e.g. SNAP-1. |
| outward_issue* | string | — | Key of the outward issue in the link, sent as outwardIssue.key, e.g. SNAP-2. |
| comment | string | — | Comment text recorded with the link, sent as comment.body. Omitted when blank. |
* Required parameter.
Try asking:
- Link SNAP-1 as blocking SNAP-2
- Mark PROJ-451 as a duplicate of PROJ-300
- Relate SNAP-42 to SNAP-88 and add a comment explaining why
- SNAP-10 is blocked by SNAP-11 — record that in Jira
JiraListMetadata
Fetches a Jira reference list such as priorities, issue types, statuses, or resolutions. Use it to discover the exact names this instance accepts before creating or updating an issue.
| Parameter | Type | Default | Description |
|---|---|---|---|
| jira_base_url* | string | — | Base URL of the Jira instance, prefixed onto the REST path, e.g. https://yourcompany.atlassian.net. |
| metadata_type* | string | — | Reference list to fetch, appended to /rest/api/2/, e.g. priority, issuetype, status, resolution or field. |
* Required parameter.
Try asking:
- What priority levels does our Jira use?
- List the available issue types
- Show me all the statuses configured in Jira
- What resolutions can I set on a ticket?
- List the custom fields defined in this Jira instance
JiraListProjects
Lists all Jira projects visible to the connected account. Use it to find a project key when the user refers to a project by name, or to validate a project key before creating or searching issues.
| Parameter | Type | Default | Description |
|---|---|---|---|
| jira_base_url* | string | — | Base URL of the Jira instance, prefixed onto the REST path, e.g. https://yourcompany.atlassian.net. |
* Required parameter.
Try asking:
- What Jira projects do we have?
- What's the project key for the Platform team's board?
- List every project in Jira with its key
- Is there a project called 'Billing' in Jira?
JiraSearch
Runs a JQL query against Jira and returns the matching issues. Use it for any 'find me the issues where Y' request, since JQL supports filtering by project, status, assignee, sprint, labels, dates, and more.
| Parameter | Type | Default | Description |
|---|---|---|---|
| jql* | string | — | JQL query passed straight to the JIRA Search snap, e.g. project = SNAP AND status = Open. |
| max_results | string | 50 |
Maximum number of issues to return (default 50). |
| fields | string | — | Comma-separated list of issue fields to return, e.g. summary,status,assignee. Omit to return the default field set. |
| expand | string | — | Jira expand string for extra sections, e.g. changelog or renderedFields. Omit for none. |
* Required parameter.
Try asking:
- Show me all open bugs in the SNAP project
- What's assigned to me in Jira and still in progress?
- Find issues in PROJ updated in the last 7 days, just summary and status
- List the top 20 highest-priority unresolved tickets across all projects
- Search Jira for anything labelled 'security' that isn't done
JiraSearchUsers
Finds users who can be assigned issues on a given project, optionally filtered by a name fragment. Use it to look up a valid assignee before creating or updating a ticket.
| Parameter | Type | Default | Description |
|---|---|---|---|
| jira_base_url* | string | — | Base URL of the Jira instance, prefixed onto the REST path, e.g. https://yourcompany.atlassian.net. |
| project_key* | string | — | Project key passed as project on the assignable-user search, e.g. SNAP. |
| username | string | — | Username fragment to match, passed as username. Omit to return all assignable users. |
| max_results | string | 50 |
Maximum number of users to return, passed as maxResults (default 50). |
* Required parameter.
Try asking:
- Who can I assign issues to on the SNAP project?
- Find someone called Maria who can take tickets in PROJ
- List the first 10 assignable users on the SNAP board
- Is john able to be assigned work in PROJ?
JiraTransitionIssue
Moves an issue through its workflow by executing a transition, with optional fields and a comment. Use JiraGetTransitions first to find the transition ID, then call this to start, resolve, or close the issue.
| Parameter | Type | Default | Description |
|---|---|---|---|
| issue_id* | string | — | Issue key or numeric id to transition, e.g. SNAP-42. |
| transition_id* | string | — | Id of the transition to execute, sent as transition.id, e.g. 31. Get it from JiraGetTransitions. |
| fields | object | — | Field map for values the transition screen requires, e.g. {resolution: {name: 'Done'}}. Omitted when null. |
| comment | string | — | Comment text added as part of the transition. Omitted when blank. |
* Required parameter.
Try asking:
- Move SNAP-42 to In Progress
- Close PROJ-123 as Done with the comment 'fixed in release 4.2'
- Transition SNAP-88 to Ready for Review and note that the PR is up
- Resolve PROJ-500 and set the resolution to Won't Fix
JiraUpdateIssue
Edits fields on an existing Jira issue, such as summary, priority, assignee, or a comment. To change an issue's workflow status, use JiraTransitionIssue instead.
| Parameter | Type | Default | Description |
|---|---|---|---|
| issue_id* | string | — | Issue key or numeric id to update, e.g. SNAP-42. |
| fields* | object | — | Field map of values to set, e.g. {summary: '...', priority: {name: 'High'}}. |
| update | object | — | Jira update operations for list-style fields, most usefully {comment: [{add: {body: '...'}}]}. Omitted when null. |
* Required parameter.
Try asking:
- Change the summary of SNAP-42 to 'Login fails on Safari 17'
- Reassign PROJ-123 to Alex and bump the priority to High
- Add a comment to SNAP-88 saying we're waiting on the vendor
- Set the story points on PROJ-500 to 5
SearchMeetingTranscripts
Searches meeting transcripts by keyword, owner, category, date range, or opportunity ID.
| Parameter | Type | Default | Description |
|---|---|---|---|
| search_term | string | — | — |
| owner | string | — | — |
| category | string | — | — |
| date_from | string | — | — |
| date_to | string | — | — |
| opportunity_id | string | — | — |
| max_results | string | 20 |
— |