Linear MCP Server について
Linear MCP Serverは、LLMからLinearの課題管理機能を利用できるようにします。課題、チーム、プロジェクト、ラベル、添付ファイル、関連付け、マイルストーンを操作できます。
主な機能
- 01課題の検索・作成・更新
- 02コメントと添付ファイルの管理
- 03チームとプロジェクトの参照
- 04ラベルとマイルストーンの管理
- 05課題や組織のリソース参照
活用シーン
- 01ステータスや担当者、優先度で課題を検索
- 02Linearの課題を作成・修正
- 03プロジェクトの進捗とマイルストーンを確認
- 04コメント追加や関連課題のリンク
MCP 対応
ツールとリソースを通じて、MCPクライアントにLinearのデータと操作機能を公開します。Linearの個人APIキーが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Linear MCP Server
Linear API 用の Model Context Protocol サーバーです。
このサーバーは、MCP を通じて Linear の課題追跡システムと連携し、LLM が Linear の課題を操作できるようにします。
インストール
自動インストール
Smithery 経由で Claude Desktop 用の Linear MCP サーバーを自動的にインストールするには:
npx @smithery/cli install mcp-server-linearapp --client claude
手動インストール
-
Linear の個人用 API キーを作成するか、取得します:https://linear.app/settings/account/security
-
Claude Desktop にサーバー設定を追加します:
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- MacOS:
{
"mcpServers": {
"linear": {
"command": "npx",
"args": ["-y", "mcp-server-linearapp"],
"env": {
"LINEAR_API_KEY": "your_linear_api_key_here"
}
}
}
}
コンポーネント
ツール
ユーザー関連ツール
-
linear_get_viewer:認証済みユーザーの情報を取得します- 入力は不要です
- ID、名前、メールアドレス、有効状態などのユーザープロフィール情報を返します
-
linear_get_user_issues:ユーザーに割り当てられた課題を取得します- 任意の入力:
userId(string):ユーザー ID(認証済みユーザーの場合は省略)includeArchived(boolean):アーカイブ済みの課題を含めますlimit(number, default: 50):結果の最大数
- 任意の入力:
-
linear_get_user_teams:ユーザーに関連付けられたチームを取得します- 任意の入力:
userId(string):チームを取得するユーザーの ID(認証済みユーザーの場合は省略)includeArchived(boolean):アーカイブ済みのチームを含めますlimit(number, default: 50):返すチームの最大数
- ユーザーが所属するチームの一覧を返します
- 任意の入力:
-
linear_get_user_projects:ユーザーに関連付けられたプロジェクトを取得します- 任意の入力:
userId(string):プロジェクトを取得するユーザーの ID(認証済みユーザーの場合は省略)includeArchived(boolean):アーカイブ済みのプロジェクトを含めますlimit(number, default: 50):返すプロジェクトの最大数status(string):プロジェクトのステータスで絞り込みます(例:'completed'、'in progress')
- ユーザーがリードまたはメンバーを務めるプロジェクトの一覧を返します
- 任意の入力:
チーム関連ツール
-
linear_get_teams:組織内のチームを取得します- 任意の入力:
includeArchived(boolean):アーカイブ済みのチームを含めますlimit(number, default: 50):返すチームの最大数
- 任意の入力:
-
linear_get_team:特定のチームの詳細を取得します- 必須の入力:
teamId(string):詳細を取得するチームの ID
- 名前、キー、メンバー、設定などのチーム情報を返します
- 必須の入力:
-
linear_get_team_issues:特定のチームの課題を取得します- 必須の入力:
teamId(string):課題を取得するチームの ID
- 任意の入力:
includeArchived(boolean):アーカイブ済みの課題を含めますlimit(number, default: 50):返す課題の最大数status(string):課題のステータスで絞り込みますpriority(number):優先度で絞り込みますassigneeId(string):担当者で絞り込みます
- 必須の入力:
プロジェクト関連ツール
-
linear_get_projects:組織内のプロジェクトを取得します- 任意の入力:
teamId(string):チームでプロジェクトを絞り込みますincludeArchived(boolean):アーカイブ済みのプロジェクトを含めますlimit(number, default: 50):返すプロジェクトの最大数status(string):プロジェクトのステータスで絞り込みます
- 任意の入力:
-
linear_get_project:特定のプロジェクトの詳細を取得します- 必須の入力:
projectId(string):詳細を取得するプロジェクト ID
- 進捗、ステータス、チーム、リード、日付など、プロジェクトの詳細情報を返します
- 必須の入力:
-
linear_get_project_issues:特定のプロジェクトの課題を取得します- 必須の入力:
projectId(string):課題を取得するプロジェクト ID
- 任意の入力:
includeArchived(boolean):アーカイブ済みの課題を含めますlimit(number, default: 50):返す課題の最大数status(string):課題のステータスで絞り込みますpriority(number):優先度で絞り込みます
- 必須の入力:
課題関連ツール
-
linear_create_issue:新しい Linear の課題を作成します- 必須の入力:
title(string):課題のタイトルteamId(string):課題を作成するチーム ID
- 任意の入力:
description(string):課題の説明(Markdown に対応)priority(number, 0-4):優先度(1=緊急、4=低)status(string):初期ステータス名
- 必須の入力:
-
linear_update_issue:既存の課題を更新します- 必須の入力:
id(string):更新する課題 ID
- 任意の入力:
title(string):新しいタイトルdescription(string):新しい説明priority(number, 0-4):新しい優先度status(string):新しいステータス名
- 必須の入力:
-
linear_search_issues:柔軟な条件で課題を検索します- 任意の入力:
query(string):タイトル/説明を検索するテキストteamId(string):チームで絞り込みますstatus(string):ステータスで絞り込みますassigneeId(string):担当者で絞り込みますlabels(string[]):ラベルで絞り込みますpriority(number):優先度で絞り込みますlimit(number, default: 10):結果の最大数
- 任意の入力:
-
linear_add_comment:課題にコメントを追加します- 必須の入力:
issueId(string):コメントを追加する課題 IDbody(string):コメント本文(Markdown に対応)
- 任意の入力:
createAsUser(string):カスタムユーザー名displayIconUrl(string):カスタムアバター URL
- 必須の入力:
ラベル管理ツール
-
linear_get_labels:組織内のラベルを取得します- 任意の入力:
teamId(string):チームでラベルを絞り込みますincludeArchived(boolean):アーカイブ済みのラベルを含めますlimit(number, default: 50):返すラベルの最大数
- 任意の入力:
-
linear_create_label:新しいラベルを作成します- 必須の入力:
name(string):ラベル名teamId(string):ラベルを作成するチーム ID
- 任意の入力:
color(string):カラーコード(例:「#FF0000」)description(string):ラベルの説明
- 必須の入力:
-
linear_update_label:既存のラベルを更新します- 必須の入力:
id(string):更新するラベル ID
- 任意の入力:
name(string):新しいラベル名color(string):新しいカラーコードdescription(string):新しい説明
- 必須の入力:
添付ファイル管理ツール
-
linear_add_attachment:課題に添付ファイルを追加します- 必須の入力:
issueId(string):添付ファイルを追加する課題 IDurl(string):添付ファイルの URLtitle(string):添付ファイルのタイトル
- 任意の入力:
subtitle(string):添付ファイルのサブタイトルicon(string):添付ファイルのアイコン URL
- 必須の入力:
-
linear_get_attachments:課題の添付ファイルを取得します- 必須の入力:
issueId(string):添付ファイルを取得する課題 ID
- 必須の入力:
Issue Relationship Tools
-
linear_link_issues:イシュー間の関係を作成します- 必須入力:
issueId(string):元のイシュー IDrelatedIssueId(string):対象のイシュー IDtype(string):関係の種類(例:"blocks"、"related"、"duplicate")
- 必須入力:
-
linear_get_issue_relations:イシューの関係を取得します- 必須入力:
issueId(string):関係を取得するイシュー ID
- 任意入力:
type(string):関係の種類で絞り込みます
- 必須入力:
Milestone Management Tools
-
linear_get_milestones:プロジェクトのマイルストーンを取得します- 任意入力:
projectId(string):プロジェクトでマイルストーンを絞り込みますincludeArchived(boolean):アーカイブ済みのマイルストーンを含めますlimit(number, default: 50):返すマイルストーンの最大数
- 任意入力:
-
linear_create_milestone:新しいマイルストーンを作成します- 必須入力:
name(string):マイルストーン名projectId(string):マイルストーンを作成するプロジェクト IDtargetDate(string):目標完了日(ISO 形式)
- 任意入力:
description(string):マイルストーンの説明sortOrder(number):マイルストーン一覧での位置
- 必須入力:
-
linear_update_milestone:既存のマイルストーンを更新します- 必須入力:
id(string):更新するマイルストーン ID
- 任意入力:
name(string):新しいマイルストーン名targetDate(string):新しい目標日description(string):新しい説明status(string):新しいステータス(例:"planned"、"inProgress"、"completed")
- 必須入力:
リソース
-
linear-issue:///{issueId}:個別のイシューの詳細を表示します- タイトル、説明、コメント、メタデータなどのイシュー情報を返します
-
linear-team:///{teamId}:チームの詳細を表示します- 名前、キー、説明、メンバーなどのチーム情報を返します
-
linear-team:///{teamId}/issues:チームのイシューを表示します- ステータスと優先度の情報を含む、特定のチームのすべてのイシューを返します
-
linear-project:///{projectId}:プロジェクトの詳細を表示します- 名前、説明、進捗、ステータス、リード、チーム、タイムラインなどのプロジェクト情報を返します
-
linear-project:///{projectId}/issues:プロジェクトのイシューを表示します- ステータスと割り当ての情報を含む、特定のプロジェクトのすべてのイシューを返します
-
linear-project:///{projectId}/milestones:プロジェクトのマイルストーンを表示します- 進捗とステータスの情報を含む、特定のプロジェクトのすべてのマイルストーンを返します
-
linear-user:///{userId}/assigned:ユーザーに割り当てられたイシューを表示します- プロジェクトとチームのコンテキストを含む、特定のユーザーに割り当てられたイシューを返します
-
linear-organization::組織情報を表示します- 名前や設定などの組織レベルの情報を返します
-
linear-viewer::現在のユーザーのコンテキストを表示します- 認証済みユーザーの情報を返します
-
linear-viewer:///teams:認証済みユーザーのチームを表示します- 現在のユーザーがメンバーであるすべてのチームを返します
-
linear-viewer:///projects:認証済みユーザーのプロジェクトを表示します- 現在のユーザーがリードまたはメンバーとして関与しているすべてのプロジェクトを返します
-
linear-viewer:///assigned:認証済みユーザーに割り当てられたイシューを表示します- プロジェクトとチームのコンテキストを含む、現在のユーザーに割り当てられたすべてのイシューを返します
-
linear-label:///{labelId}:ラベルの詳細を表示します- 名前、色、関連するイシューなどのラベル情報を返します
使用例
以下は、Claude Desktop で Linear を操作する際に使用できるプロンプトの例です:
課題管理
-
「認証システムの新しいバグ報告を作成して」→
linear_create_issueを使用して、適切な詳細を含む新しい課題を作成します -
「チケット FRONT-123 の優先度を緊急に変更して」→
linear_update_issueを使用して、既存の課題の優先度を変更します -
「ログインページのバグに、根本原因を説明するコメントを追加して」→
linear_add_commentを使用して、既存の課題に情報を追加します
課題の検索とフィルタリング
-
「優先度の高い自分の課題をすべて表示して」→
linear_get_user_issuesまたはlinear-viewer:///assignedを使用して、自分に割り当てられた優先度の高い課題を検索します -
「進行中のフロントエンドタスクをすべて検索して」→
linear_search_issuesを使用して、「進行中」ステータスのフロントエンド関連の課題を検索します -
「現在、Sarah に割り当てられている課題は?」→ Sarah の ID を指定して
linear_get_user_issuesを使用し、Sarah に割り当てられている課題を確認します
チームとプロジェクトの管理
-
「自分が所属しているチームは?」→
linear_get_user_teamsまたはlinear-viewer:///teamsを使用して、認証済みユーザーが所属するすべてのチームを一覧表示します -
「自分がリードまたは貢献しているプロジェクトを表示して」→
linear_get_user_projectsまたはlinear-viewer:///projectsを使用して、現在のユーザーに関連付けられたすべてのプロジェクトを取得します -
「モバイルアプリプロジェクトの現在の進捗は?」→
linear_get_projectを使用して、進捗を含むプロジェクトの詳細情報を取得します -
「Frontend チームのアクティブなプロジェクトをすべて一覧表示して」→
linear_get_teamでチーム ID を検索し、チームフィルターを指定したlinear_get_projectsを組み合わせて、アクティブなプロジェクトを検索します
ステータスと作業負荷の分析
-
「請求システムの課題に関する最近の更新を要約して」→
linear_search_issuesで該当する課題を特定し、linear-issue:///{issueId}で課題の詳細を取得します -
「モバイルチームの現在の作業負荷は?」→
linear-team:///{teamId}/issuesまたはlinear_get_team_issuesを使用して、チーム内の課題の分布を分析します -
「組織内での自分の役割と責任を表示して」→
linear_get_viewerとlinear-viewer:///teamsを使用して、チームへの所属状況と役割を分析します
ラベルと分類
-
「優先度の高いセキュリティ課題向けに「security」ラベルを作成して」→
linear_create_labelを使用して、適切な設定で新しいラベルを作成します -
「Frontend チームで利用できるラベルは?」→ Frontend チームの ID を指定して
linear_get_labelsを使用し、利用可能な分類を確認します -
「すべての API 課題に「needs-documentation」ラベルを適用して」→
linear_search_issuesで API 関連の課題を検索し、それぞれをlinear_update_issueで更新します
マイルストーン管理
-
「ベータリリースのマイルストーンを作成して」→
linear_create_milestoneを使用して、目標日を設定したプロジェクトのマイルストーンを作成します -
「モバイルアプリプロジェクトで今後予定されているマイルストーンは?」→ プロジェクト ID を指定して
linear_get_milestonesを使用し、予定されているリリースポイントを確認します -
「API v2 マイルストーンのステータスを完了に更新して」→
linear_update_milestoneを使用して、マイルストーンのステータスを変更します
課題の関連付け
-
「課題 FRONT-123 が API-456 をブロックしていると設定して」→
linear_link_issuesを使用して、課題間にブロック関係を作成します -
「このバグによってブロックされている課題は?」→
linear_get_issue_relationsを使用して、依存関係を検索します -
「認証システムに関連する課題をすべて表示して」→ 適切なフィルターを指定して
linear_search_issuesを使用し、その後linear_get_issue_relationsで関連性を確認します
開発
- 依存関係をインストールします:
npm install
.envで Linear API キーを設定します:
LINEAR_API_KEY=your_api_key_here
- サーバーをビルドします:
npm run build
自動再ビルドを有効にして開発する場合:
npm run watch
ライセンス
この MCP サーバーは MIT ライセンスの下でライセンスされています。つまり、MIT ライセンスの利用規約に従う限り、このソフトウェアを自由に使用、変更、配布できます。詳細については、プロジェクトリポジトリの LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。