mcp-linear
mcp-linear
Linear の課題操作を公開する MCP サーバー。スタンドアロンで動作し、組み込みの Claude Linear MCP への依存はありません。
課題は人間が読める識別子(GOV-123)で指定します。ステート、チーム、ラベル、担当者は名前で指定し、サーバーが Linear UUID に解決します。名前が一致しない場合は、有効な選択肢を列挙したエラーを返します。
ツール
ツール | 説明 |
| 識別子で課題を取得する |
| API キーの所有者に割り当てられた課題 |
| チーム/ステート/担当者フィルター付きの全文検索 |
| チームに課題を作成する |
| 既存の課題のフィールドを更新する |
| 課題のコメント |
| コメントを投稿する |
| チームのキーと名前 |
| チームのワークフローステート |
| チームのラベルとワークスペースラベル(チームは任意) |
| アクティブなユーザー |
セットアップ
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
cp .env.example .env
# Edit .env — set LINEAR_API_KEYAPI キーを取得する: Linear → 設定 → セキュリティとアクセス → 個人用 API キー。書き込み操作には書き込みアクセス権のあるキーが必要です。
Claude Code に追加
{
"mcpServers": {
"linear": {
"command": "/Users/piuschungath/Workspace/mcp-linear/.venv/bin/mcp-linear",
"env": { "LINEAR_API_KEY": "lin_api_..." }
}
}
}テスト
.venv/bin/pytestすべての HTTP は respx でモック化されています。API キーもネットワークアクセスも不要です。
mcp-pr-assistant との連携
2 つのサーバーは相互にインポートせずに連携できます。get_issue でチケットを取得し、そのフィールドを create_pr_from_ticket に渡し、PR の URL を add_comment で投稿します。
スキーマ検証
src/mcp_linear/queries.py の GraphQL フィールド名は、2026-08-21 に実在の Linear API に対して検証済みです。ツールが実際に使用するクエリ文字列(コピーではなく)を実在のワークスペースに対して実行して確認しました。
検証済みの項目:
Float!の課題番号コンパレータteam { labels }によるチームスコープのラベルルートの
issueLabelsコネクションviewer.assignedIssues(orderBy: updatedAt)3 つのミューテーションが送信するすべてのフィールド —
IssueCreateInput、IssueUpdateInput、CommentCreateInputはすべて、使用されているteamId、title、description、stateId、assigneeId、priority、labelIds、issueId、bodyを受け入れます
1 つの相違が見つかり、修正されました:
全文検索。
issueSearchはquery引数を非推奨として拒否します。検索は現在searchIssues(term: ...)を使用します。これはIssueSearchPayloadを返し、そのノードはIssueSearchResultであり、Issueではありません。そのためIssueFieldsフラグメントを展開できません。queries.pyは、その型に対して同一の選択セットを持つ 2 つ目のフラグメントSearchFieldsを宣言しています。イントロスペクションにより、IssueSearchResultはIssueFieldsが選択するすべてのフィールドを備えていることが確認されました。一方のフラグメントを変更したら、もう一方も変更してください。
1 つの項目が未確認のままです:
ワークスペースラベル。 ルートの
issueLabelsコネクションは解決されますが、ワークスペース全体のラベルのみを返すのか、他のチームに属するチームスコープのラベルも返すのかは確認されていません。ラベル解決はまずチーム自身のラベルを参照するため、チームのラベルは常に同名のワークスペースラベルより優先されます。
Linear スキーマの変更後に再検証するには:
LINEAR_API_KEY=lin_api_... .venv/bin/python scripts/probe_schema.py <team-key> <issue-number> <issue-uuid>チームキー、そのチームの既存の課題番号、その課題の UUID が必要です(最初のプローブが出力するチーム UUID を対話的に 1 回だけ求めます)。プローブは読み取り専用です。ミューテーションは入力型のイントロスペクションによってチェックされ、トラッカーへの書き込みは行いません。
注意事項
Linear の個人用 API キーは
Authorization: <key>として送信され、Bearerプレフィックスはありません。Linear はほとんどの失敗を HTTP 200 とトップレベルの
errors配列で報告するため、クライアントはステータスコードではなくレスポンスボディをチェックします。チーム、ステート、ラベル、ユーザーのメタデータはサーバープロセスの存続期間中キャッシュされます。チームのワークフローステートやラベルを変更した場合は、サーバーを再起動してください。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shortcut project management. Create, update, search stories and manage workflows.
Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.
Manage projects, tasks, time tracking, and team collaboration through natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pius-grainger/mcp-linear'
If you have feedback or need assistance with the MCP directory API, please join our Discord server