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
- Go to Linear Settings
- Create a new OAuth application
- Configure your redirect URI
- 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