Learn Claude Code: Tool Integrations Linear & Jira: Ticket-to-PR Workflows

Linear & Jira: Ticket-to-PR Workflows

Intermediate 🕐 13 min Lesson 3 of 11
What you'll learn
  • Connect the Linear MCP server via OAuth and the Jira MCP server via an Atlassian API token
  • Implement a feature directly from a Linear or Jira ticket description without leaving Claude Code
  • Build a ticket-to-PR pipeline that reads a ticket, implements the work, creates a GitHub PR, and updates the ticket status in one session

When the feature lives in Linear and the code lives in Claude Code

Most engineering teams separate their project management from their code. The ticket lives in Linear or Jira with acceptance criteria, design links, and comments from the PM. The code lives in your editor. Getting from ticket to implementation usually involves: open the ticket, read the acceptance criteria, copy the relevant parts, switch to Claude, paste them in, write the code, switch back to the ticket, update the status, switch to GitHub to open the PR.

Connecting your issue tracker closes this loop. Claude reads the ticket directly, implements the work based on what's actually in it, and can update the status and create the PR — all from one session.

Connecting Linear

Linear provides an official remote MCP server with OAuth 2.1 authentication. No API key setup is required — you authenticate through your browser, and Linear handles the rest.

Add the server:

claude mcp add --transport http linear https://mcp.linear.app/mcp

Check its status:

claude mcp list

Linear will show as ! Needs authentication. Start a Claude session and authenticate:

/mcp

Select linear from the list, choose Authenticate, and complete the OAuth flow in your browser. When you return, the server status changes to ✓ Connected. Claude now has access to your Linear workspace: issues, projects, cycles, and teams.

If you previously used the SSE URL (https://mcp.linear.app/sse), Linear deprecated that transport. Remove the old entry and re-add with the HTTP URL above.

Connecting Jira

Atlassian's Jira uses a personal API token as a Bearer credential. First, generate one at id.atlassian.com/manage-profile/security/api-tokens and copy it. Then add the server with your Atlassian domain and email:

claude mcp add --transport http jira https://YOUR_DOMAIN.atlassian.net/rest/mcp/v1 --header "Authorization: Bearer YOUR_API_TOKEN"

Replace YOUR_DOMAIN with your Atlassian subdomain and YOUR_API_TOKEN with the token you created. Verify with claude mcp list. Because the token is static, Jira shows as ✓ Connected immediately without an OAuth step.

For Jira Cloud, the bearer token approach is the standard path. On-premise Jira Data Center uses the same pattern but with your internal domain.

Working with tickets

Once connected, you can reference tickets directly in your prompts. For Linear:

Read Linear issue ENG-4521 and implement the feature it describes. The issue has acceptance criteria and a Figma link in the description.

Claude reads the issue body, acceptance criteria, comments, and any attached context, then works from that information rather than a summary you typed.

For Jira:

Read Jira ticket PAYMENTS-234 and tell me what needs to be built. Then implement it.

Claude retrieves the ticket, reads the description and any sub-tasks, and begins the implementation. If the ticket is ambiguous, Claude will ask for clarification based on what the ticket actually says — not a generic question.

The ticket-to-PR pipeline

The real value of combining your issue tracker with GitHub is a complete ticket-to-PR pipeline in a single session. With both Linear and GitHub connected:

Read Linear issue ENG-4521. Implement the feature. When done, create a GitHub PR in owner/repo linked to this issue, and update the Linear issue status to In Review.

Claude executes this as a sequence of tool calls: reads the Linear ticket, writes the implementation in your local files, creates the GitHub PR with a description that references the issue, and updates the Linear status. The full cycle — from ticket to merged-ready PR — happens inside one Claude session.

This is the workflow the official Claude Code docs describe as the target for connected tools: "Add the feature described in JIRA issue ENG-4521 and create a PR on GitHub." With both servers connected, that is a single prompt.

Scope and access considerations

Linear's MCP server exposes all the issues, projects, and teams your Linear account can access. If you are working across multiple Linear teams, Claude can see all of them once authenticated.

Jira's access follows the same rules as your API token: it can access the projects your Atlassian account has permission to see. For a read-only workflow, you can create a Jira API token on a service account with read-only project permissions rather than your personal admin account.

Both servers can be added at user scope (--scope user) so they are available in every project without re-adding them each time.

Key takeaways
  • Linear's MCP server uses OAuth with no API key setup required — add the URL and authenticate once through the browser to access your entire workspace.
  • Jira connects via an Atlassian API token as a Bearer header — generate it from your Atlassian account settings and pass it at add time.
  • Reading ticket details directly through the server gives Claude the actual acceptance criteria, comments, and context — not a summary you typed from memory.
  • Combining your issue tracker with GitHub MCP enables a complete ticket-to-PR pipeline in a single Claude session — from reading the ticket to updating its status after the PR is created.
  • Add both servers at user scope so they are available across all your projects without reconfiguring them each time you start a new repo.