View as Markdown

Linear Integration

Manage Linear issues, projects, and cycles

The Linear integration provides access to manage Linear issues, projects, and cycles through the Integrate MCP server.

Installation

The Linear integration is included with the SDK:

import { linearIntegration } from "integrate-sdk/server";

Setup

1. Create a Linear OAuth App

  1. Go to Linear Settings
  2. Create a new OAuth application
  3. Configure your redirect URI
  4. Note your Client ID and Client Secret

2. Configure the Integration on Your Server

Add the Linear integration to your server configuration. The integration automatically reads LINEAR_CLIENT_ID and LINEAR_CLIENT_SECRET from your environment variables:

import { createMCPServer, linearIntegration } from "integrate-sdk/server";
 
export const { client: serverClient } = createMCPServer({
  apiKey: process.env.INTEGRATE_API_KEY,
  integrations: [
    linearIntegration({
    }),
  ],
});

You can override the environment variables by passing explicit values:

linearIntegration({
  clientId: process.env.CUSTOM_LINEAR_ID,
  clientSecret: process.env.CUSTOM_LINEAR_SECRET,
});

3. Client-Side Usage

The default client automatically includes all integrations. You can use it directly:

import { client } from "integrate-sdk";
 
await client.authorize("linear");
const result = await client.linear.createIssue({
  teamId: "value",
});
 
console.log(result);

If you're using a custom client, add the integration to the integrations array:

import { createMCPClient, linearIntegration } from "integrate-sdk";
 
const customClient = createMCPClient({
  integrations: [linearIntegration()],
});

Configuration Options

export interface LinearIntegrationConfig {
  /** Linear OAuth client ID (defaults to LINEAR_CLIENT_ID env var) */
  clientId?: string;

Tools

linear_create_issue

Create a new issue in Linear

export interface LinearCreateIssueParams {
    /** Team ID to create the issue in */
    teamId: string;

linear_list_issues

List issues in Linear

export interface LinearListIssuesParams {
    /** Team ID to filter by */
    teamId?: string;

linear_get_issue

Get a specific issue by ID or identifier

export interface LinearGetIssueParams {
    /** Issue ID or identifier (e.g., "ABC-123") */
    issueId: string;

linear_update_issue

Update an existing issue

export interface LinearUpdateIssueParams {
    /** Issue ID to update */
    issueId: string;

linear_archive_issue

Archive an issue

export interface LinearArchiveIssueParams {
    /** Issue ID to archive */
    issueId: string;

linear_delete_issue

Delete an issue permanently

export interface LinearDeleteIssueParams {
    /** Issue ID to delete */
    issueId: string;

linear_search_issues

Search for issues

export interface LinearSearchIssuesParams {
    /** Search query */
    query: string;

linear_add_comment

Add a comment to an issue

export interface LinearAddCommentParams {
    /** Issue ID to comment on */
    issueId: string;

linear_list_users

List users in the workspace

export interface LinearListUsersParams {
    /** Number of users to return (max 50) */
    first?: number;

linear_get_user

Get a specific user by ID

export interface LinearGetUserParams {
    /** User ID */
    userId: string;

linear_list_teams

List teams in Linear

export interface LinearListTeamsParams {
    /** Number of teams to return */
    first?: number;

linear_list_workflow_states

List workflow states

export interface LinearListWorkflowStatesParams {
    /** Team ID to filter by */
    teamId?: string;

linear_create_workflow_state

Create a new workflow state

export interface LinearCreateWorkflowStateParams {
    /** Team ID to create the state in */
    teamId: string;

linear_list_projects

List projects in Linear

export interface LinearListProjectsParams {
    /** Team ID to filter by */
    teamId?: string;

linear_get_project

Get a specific project by ID

export interface LinearGetProjectParams {
    /** Project ID */
    projectId: string;

linear_create_project

Create a new project

export interface LinearCreateProjectParams {
    /** Project name */
    name: string;

linear_update_project

Update an existing project

export interface LinearUpdateProjectParams {
    /** Project ID to update */
    projectId: string;

linear_list_cycles

List cycles (sprints)

export interface LinearListCyclesParams {
    /** Team ID to filter by */
    teamId?: string;

linear_get_cycle

Get a specific cycle by ID

export interface LinearGetCycleParams {
    /** Cycle ID */
    cycleId: string;

linear_create_cycle

Create a new cycle (sprint)

export interface LinearCreateCycleParams {
    /** Team ID to create the cycle in */
    teamId: string;

linear_update_cycle

Update an existing cycle

export interface LinearUpdateCycleParams {
    /** Cycle ID to update */
    cycleId: string;

linear_list_labels

List labels in Linear

export interface LinearListLabelsParams {
    /** Team ID to filter by */
    teamId?: string;

linear_create_issue_relation

Create a relation between two issues

export interface LinearCreateIssueRelationParams {
    /** Source issue ID */
    issueId: string;

linear_delete_issue_relation

Delete an issue relation

export interface LinearDeleteIssueRelationParams {
    /** Issue relation ID to delete */
    relationId: string;

linear_list_documents

List documents

export interface LinearListDocumentsParams {
    /** Filter by project ID */
    projectId?: string;

linear_get_document

Get a specific document by ID

export interface LinearGetDocumentParams {
    /** Document ID */
    documentId: string;

linear_create_document

Create a new document

export interface LinearCreateDocumentParams {
    /** Document title */
    title: string;

linear_update_document

Update an existing document

export interface LinearUpdateDocumentParams {
    /** Document ID to update */
    documentId: string;

linear_list_initiatives

List initiatives

export interface LinearListInitiativesParams {
    /** Number of initiatives to return (max 50) */
    first?: number;

linear_get_initiative

Get a specific initiative by ID

export interface LinearGetInitiativeParams {
    /** Initiative ID */
    initiativeId: string;

linear_create_initiative

Create a new initiative

export interface LinearCreateInitiativeParams {
    /** Initiative name */
    name: string;

linear_create_attachment

Create an attachment (link) on an issue

export interface LinearCreateAttachmentParams {
    /** Issue ID to attach to */
    issueId: string;

linear_create_project_update

Create a status update for a project

export interface LinearCreateProjectUpdateParams {
    /** Project ID */
    projectId: string;

Notes

  • Category: Engineering
  • Authentication mode: OAuth