mcpField
L
Linear MCP Server

Linear MCP Server

ローカル
github.com/kablewyバージョン管理278 週間前に更新

Linear MCP Server について

Linear MCP Serverは、課題追跡やプロジェクト管理のためにMCPクライアントをLinearへ接続するサーバーです。課題、コメント、サイクル、ワークフロー状態を扱い、条件付きの複数ステップ処理も実行できます。

主な機能

  1. 01課題の作成・一覧・更新
  2. 02プロジェクト、チーム、ユーザーの管理
  3. 03サイクルとワークフロー状態の操作
  4. 04課題の関連付けとコメント管理
  5. 05条件付き複数ステップ処理
  6. 06Zodによるスキーマ検証とメトリクス収集

活用シーン

  1. 01クライアントからLinearの課題を追跡・更新
  2. 02プロジェクトのサイクルと状態を整理
  3. 03条件付きでLinear操作を連続実行
  4. 04課題へのコメントや関連付けの追加

MCP 対応

MCPサーバーはツールを通じてLinear APIの操作をクライアントに提供し、課題、プロジェクト、チーム、サイクル、コメントの管理とパイプライン実行に対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"linear-mcp-server-kablewy": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Linear MCP サーバー

Linear の課題追跡とプロジェクト管理のための Model Context Protocol サーバー実装です。このサーバーは、課題、サイクル、プロジェクト、その他の Linear リソースの作成、更新、管理に使用されます。

機能

  • 公式 SDK を使用した MCP 準拠のサーバー
  • Linear API とのシームレスな統合
  • TypeScript と Zod スキーマによる型安全な実装
  • 包括的な課題管理と追跡
  • ユーザー、チーム、プロジェクトの管理
  • サイクルとワークフローの状態の処理
  • 課題の関連付けと依存関係
  • コメントとコラボレーションツール
  • パイプラインの実行と複数ステップのワークフロー
  • 高度なエラー処理とメトリクスの収集
  • 拡張可能なツールとパイプラインのアーキテクチャ

ツール

課題管理
  • list_issues

    • Linear の課題を一覧表示します
    • 入力:
      • teamId (string, optional):課題を一覧表示するチームの ID
      • first (number, optional):取得する課題の数(デフォルト:50)
      • projectId (string, optional):プロジェクト ID で課題を絞り込みます
      • labelId (string, optional):ラベル ID で課題を絞り込みます
      • stateId (string, optional):状態 ID で課題を絞り込みます
      • priority (number, optional):優先度で課題を絞り込みます(0~4)
      • assigneeId (string, optional):担当者 ID で課題を絞り込みます
    • 戻り値:詳細情報を含む Linear の課題の配列
  • create_issue

    • Linear に新しい課題を作成します
    • 入力:
      • title (string):課題のタイトル
      • teamId (string):チームの ID
      • description (string, optional):課題の説明
      • priority (number, optional):課題の優先度
      • assigneeId (string, optional):担当者の ID
    • 戻り値:作成した課題の詳細
  • get_issue

    • 特定の課題の詳細情報を取得します
    • 入力:
      • id (string):課題の ID
    • 戻り値:課題の詳細
  • update_issue

    • 既存の課題を更新します
    • 入力:
      • issueId (string):更新する課題の ID
      • title (string, optional):新しいタイトル
      • description (string, optional):新しい説明
      • projectId (string, optional):新しいプロジェクト ID(削除する場合は null)
      • stateId (string, optional):新しい状態 ID
      • priority (number, optional):新しい優先度
      • assigneeId (string, optional):新しい担当者 ID(担当を解除する場合は null)
      • parentId (string, optional):新しい親課題 ID(削除する場合は null)
      • addLabelIds (string[], optional):課題に追加するラベル ID
      • removeLabelIds (string[], optional):課題から削除するラベル ID
    • 戻り値:更新した課題の詳細
課題の関連付け
  • add_issue_relation

    • 2 つの課題間に関連付けを作成します
    • 入力:
      • issueId (string):元の課題の ID
      • relatedIssueId (string):対象の課題の ID
      • type (string):関連付けの種類('related'、'blocks'、または 'duplicate')
    • 戻り値:作成した関連付けの詳細
  • remove_issue_relation

    • 課題間の関連付けを削除します
    • 入力:
      • relationId (string):削除する関連付けの ID
    • 戻り値:操作結果
  • list_issue_relations

    • 特定の課題の関連付けを一覧表示します
    • 入力:
      • issueId (string):課題の ID
      • first (number, optional):取得する関連付けの数
    • 戻り値:課題の関連付けの配列
コメント
  • list_issue_comments

    • 特定の課題のコメントを一覧表示します
    • 入力:
      • issueId (string):課題の ID
      • first (number, optional):取得するコメントの数
    • 戻り値:コメントの配列
  • create_comment

    • 課題にコメントを追加します
    • 入力:
      • issueId (string):課題の ID
      • body (string):コメントの本文
    • 戻り値:作成したコメントの詳細
ユーザーとチームの管理
  • list_users

    • Linear のユーザー一覧を取得します
    • 入力:
      • first(数値、任意):取得するユーザー数(デフォルト:50)
      • includeArchived(ブール値、任意):アーカイブ済みのユーザーを含めるかどうか(デフォルト:false)
    • 戻り値:詳細情報を含むユーザーの配列
  • get_user

    • 特定のユーザーの詳細を取得します
    • 入力:
      • id(文字列):取得するユーザーの ID
    • 戻り値:名前、表示名、メールアドレス、ステータスを含むユーザーの詳細
  • list_teams

    • Linear のチーム一覧を取得します
    • 入力:
      • first(数値、任意):取得するチーム数(デフォルト:50)
      • includeArchived(ブール値、任意):アーカイブ済みのチームを含めるかどうか(デフォルト:false)
    • 戻り値:詳細情報を含むチームの配列
  • get_team

    • 特定のチームの詳細を取得します
    • 入力:
      • id(文字列):取得するチームの ID
    • 戻り値:名前、説明、キーを含むチームの詳細
サイクル
  • list_cycles

    • Linear のサイクル一覧を取得します
    • 入力:
      • first(数値、任意):取得するサイクル数
    • 戻り値:詳細情報を含むサイクルの配列
  • get_cycle

    • 特定のサイクルの詳細を取得します
    • 入力:
      • id(文字列):取得するサイクルの ID
    • 戻り値:サイクルの詳細
  • get_cycle_issues

    • 特定のサイクルの課題を取得します
    • 入力:
      • cycleId(文字列):サイクルの ID
      • first(数値、任意):取得する課題数
    • 戻り値:サイクル内の課題の配列
  • explore_cycle_issue

    • サイクル内の課題に関する詳細情報を取得します
    • 入力:
      • id(文字列):詳細を確認する課題の ID
    • 戻り値:課題の詳細情報
プロジェクト
  • list_projects

    • Linear のプロジェクト一覧を取得します
    • 入力:
      • first(数値、任意):取得するプロジェクト数
    • 戻り値:詳細情報を含むプロジェクトの配列
  • get_project

    • 特定のプロジェクトの詳細を取得します
    • 入力:
      • id(文字列):取得するプロジェクトの ID
    • 戻り値:プロジェクトの詳細
ラベル
  • list_labels

    • Linear の課題ラベル一覧を取得します
    • 入力:
      • first(数値、任意):取得するラベル数
    • 戻り値:詳細情報を含むラベルの配列
  • get_label

    • 特定のラベルの詳細を取得します
    • 入力:
      • id(文字列):取得するラベルの ID
    • 戻り値:ラベルの詳細
ワークフローの状態
  • list_workflow_states

    • Linear のワークフローの状態一覧を取得します
    • 入力:
      • first(数値、任意):取得する状態の数
      • teamId(文字列、任意):チーム ID で状態を絞り込みます
    • 戻り値:詳細情報を含むワークフローの状態の配列
  • get_workflow_state

    • 特定のワークフローの状態の詳細を取得します
    • 入力:
      • id(文字列):取得するワークフローの状態の ID
    • 戻り値:ワークフローの状態の詳細
パイプラインの実行
  • execute_pipeline
    • 一連のツールのステップを、条件に応じてデータ変換しながら実行します。
    • 入力:
      • steps(配列):各ステップに toolName、params、任意の condition、任意の transform 関数を含むステップの一覧です。
      • context(オブジェクト、任意):実行コンテキスト(requestId、timestamp、timeout、retryCount など)。
    • 戻り値:各パイプラインステップの結果の配列。
パイプライン定義の例
{
  "steps": [
    { "toolName": "list_issues", "params": { "first": 1 } },
    { "toolName": "create_issue", "params": {}, "condition": "results => results && results.length > 0", "transform": "results => ({ title: 'Follow-up', teamId: results[0].teamId })" }
  ],
  "context": { "requestId": "abc123" }
}
エラー処理

すべてのツールは、標準形式でエラーを返します。

  • code(文字列):エラーコード
  • message(文字列):エラーメッセージ
  • retryable(ブール値):エラーを再試行できるかどうか
  • details(オブジェクト、任意):追加の詳細
  • suggestions(配列、任意):解決方法の候補
メトリクスとモニタリング
  • ツールごとのエラー率と平均リクエスト所要時間を追跡します
  • stderr に定期的にレポートします
  • メトリクスはプログラムからリセットおよび確認できます
型安全性と拡張性
  • すべてのツールスキーマは、実行時の検証に Zod を使用して定義されています
  • スキーマとハンドラーを拡張することで、新しいツールを簡単に追加できます
  • condition および transform 関数を使って、独自のロジックでパイプラインを構成できます
使用例:課題の一覧表示
curl -X POST http://localhost:3000/tool/list_issues \
  -H 'Content-Type: application/json' \
  -d '{ "teamId": "your-team-id", "first": 10 }'
使用例:パイプラインの実行
{
  "steps": [
    { "toolName": "list_issues", "params": { "first": 2 } },
    { "toolName": "create_issue", "params": { "title": "Automated follow-up", "teamId": "team123" } }
  ]
}

詳細については、Model Context Protocol Introductionを参照してください。

  • 入力:

    • id(string):取得する課題の ID
  • 戻り値:タイトル、説明、ステータス、担当者情報を含む課題の詳細

  • list_issue_comments

    • 特定の課題のコメントを一覧表示します
    • 入力:
      • issueId(string):コメントを取得する課題の ID
      • first(number、任意):取得するコメント数(デフォルト:20)
    • 戻り値:コメント内容と作成者情報を含むコメントの配列
  • create_comment

    • 課題に新しいコメントを作成します
    • 入力:
      • issueId(string):コメントを追加する課題の ID
      • body(string):コメントの内容
    • 戻り値:作成したコメントの詳細
  • execute_pipeline

    • Linear 操作のパイプラインを実行します
    • 入力:
      • steps(array):各パイプラインステップを含む配列。各ステップは次の内容を含みます:
        • toolName(string):実行するツールの名前
        • params(object):ツールのパラメーター
    • 戻り値:パイプラインの実行結果

セットアップ

  1. Linear API キーを取得します:

    • https://linear.app で Linear にログインします
    • Settings > API > Personal API keys に移動します
    • 「Create Key」をクリックします
    • キーに名前を付けます(例:「MCP Server」)
    • 生成された API キーをコピーします(表示されるのは一度だけです)
    • 環境変数で使用するため、安全に保管します
  2. 依存関係をインストールします:

npm install
  1. プロジェクトをビルドします:
npm run build

Claude Desktop での使用方法

Node バージョン
{
  "mcpServers": {
    "linear": {
      "command": "node",
      "args": [
        "path/to/linear-mcp-server/build/index.js"
      ],
      "env": {
        "LINEAR_API_KEY": "<YOUR_LINEAR_API_KEY>"
      }
    }
  }
}
Docker バージョン
{
  "mcpServers": {
    "linear": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "LINEAR_API_KEY",
        "mcp/linear"
      ],
      "env": {
        "LINEAR_API_KEY": "<YOUR_LINEAR_API_KEY>"
      }
    }
  }
}

Docker ビルド

Docker イメージをビルドするには:

docker build -t mcp/linear -f src/linear/Dockerfile .

注:

  1. <YOUR_LINEAR_API_KEY> を Linear API キーに置き換えます
  2. ローカル開発では、Node バージョンを使用できます
  3. 本番環境へのデプロイでは、Docker バージョンを使用します

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。