Abscissa について
Abscissaは、MCPクライアントからLinearワークスペースを管理するローカルのPython製MCPサーバーです。課題、プロジェクト、サイクル、依存関係を扱い、カーソルページネーションと破壊的操作の明示的な確認に対応します。
主な機能
- 01Linearの課題、プロジェクト、サイクルの管理
- 02課題の依存関係の作成と確認
- 03コメント、ラベル、チーム、ユーザーの操作
- 04一覧と検索結果のページネーション
- 05アーカイブと削除時の確認必須化
活用シーン
- 01担当する未完了課題をプロジェクト別に確認
- 02課題やプロジェクト情報の作成・更新
- 03別の課題にブロックされた課題の確認
MCP 対応
AbscissaはMCP stdioトランスポートを通じて、対応クライアントに42種類のLinearツールを公開します。Linear APIキーはプロセス環境から読み込みます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
42掲載時のツール一覧 · 3 週間前に更新
このツールにパラメーターはありません。
詳細
Abscissa は Linear 用の Python 製 stdio MCP サーバーです。Linear の GraphQL API を、MCP クライアント向けの 42 個のツールに変換します。課題、プロジェクト、サイクル、依存関係、 コメント、ラベル、ワークフローの状態、チーム、ユーザーを扱います。
設計では、プロジェクトデータを意図的に制御できることを優先しています。読み取り操作は
カーソルによるページネーション付きの結果を返します。get_user_issues() は認証済みの
Linear ユーザーを特定します。アーカイブおよび削除ツールは、破壊的な API 呼び出しを行う前に
明示的な confirm=true を必要とします。サーバーは認証情報を保存せず、プロセス環境から
LINEAR_API_KEY を読み込みます。
Abscissa は Model Context Protocol の stdio トランスポートを使用します。 stdio MCP に対応するクライアントなら、ローカルのツールプロセスとして起動できます。
実行する
Python 3.10 以降と、Linear の個人用 API キーが必要です。
git clone https://github.com/KazKozDev/abscissa.git
cd abscissa
python3 -m venv .venv
.venv/bin/pip install -e '.[dev]'
export LINEAR_API_KEY='lin_api_…'
.venv/bin/abscissa
Abscissa は PyPI から直接インストールすることもできます。
pip install abscissa
最後のコマンドは、標準入力と標準出力で MCP サーバーを起動します。.venv/bin/abscissa を
MCP クライアントに stdio コマンドとして登録し、クライアントの環境変数またはシークレットマネージャーを
通じて LINEAR_API_KEY を渡してください。
キーはリポジトリの外部に保管されます。.gitignore は .env や .venv を含む、一般的なローカルの 環境ファイルを除外します。
プロンプトの例
Abscissa を MCP クライアントに登録したら、次のようなプロンプトを試してください。
Show my open Linear issues grouped by project.
Create an issue in ENG for fixing onboarding copy.
List issues blocked by GEN-32.
ツール
| 領域 | ツール |
|---|---|
| 識別情報 | get_current_user |
| 課題 | create_issue、update_issue、search_issues、get_user_issues、get_issue、assign_issue、add_comment、set_issue_estimate |
| 課題のライフサイクル | archive_issue、delete_issue |
| 依存関係 | list_issue_dependencies、add_issue_dependency、remove_issue_dependency |
| ラベルとワークフロー | list_workflow_states、list_issue_labels、create_label、add_issue_label、remove_issue_label |
| チームとメンバー | list_teams、get_team、list_users |
| プロジェクト | create_project、get_project、list_projects、list_project_issues、set_issue_project、remove_issue_from_project、update_project、update_project_details、archive_project |
| プロジェクトラベル | list_project_labels、create_project_label、add_project_label、remove_project_label |
| プロジェクトの更新情報 | create_project_update、list_project_updates |
| サイクル | create_cycle、update_cycle、archive_cycle、list_cycles、list_cycle_issues |
検索ツールと一覧表示ツールは limit と cursor を受け付けます。応答の形式は常に
同じです。
{
"items": [],
"next_cursor": null
}
次のページをリクエストするには、null 以外の next_cursor を cursor として渡します。
list_issue_dependencies は blocks と blocked_by のリストを別々に返します。
各項目には relation_id が含まれます。この依存関係を削除する際に使用してください。
next_cursors オブジェクトには、それぞれの方向に対応するカーソルが個別に含まれます。
破壊的な操作
archive_issue、archive_project、delete_issue には、MCP の destructiveHint が設定されています。
クライアントが confirm=true を指定して呼び出すまで、Linear への呼び出しを拒否します。
Deletion requires explicit confirmation: set confirm=true
これにより、誤ってツールを呼び出してデータを削除またはアーカイブするのを防げます。 ただし、Linear 独自のアクセス制御に代わるものではありません。API キーによって、サーバーが読み取りまたは 変更できるリソースが決まります。
チェックアウトを検証する
.venv/bin/ruff check .
.venv/bin/python -m pytest
現在のチェックアウトでは、次の結果が得られます。
All checks passed!
.......... [100%]
10 passed
テストでは、ページネーションの上限と応答形式、認証済みユーザーの課題の特定、プロジェクトへの所属、 サイクルのクエリ、依存関係の方向、確認ガード、サイクルのライフサイクル操作、MCP ツールの登録を 確認します。GitHub Actions は Python 3.10、3.11、3.12、3.13 で同じ lint コマンドとテストコマンドを実行します。
制限事項
Abscissa はローカルの stdio サーバーであり、HTTP サービスではありません。実行中の MCP 対応クライアントと有効な Linear API キーが必要です。自動テストスイートでは実際の Linear ワークスペースの変更を避けているため、作成、更新、アーカイブ、削除の動作は、実際の書き込みテストではなく単体テストで保護されています。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。