Plane
公式Planeの公式MCPサーバーは、Plane APIとの統合を提供し、Planeプロジェクト、作業アイテム、サイクルなどの完全なAI自動化を可能にします。
Plane MCPで何ができますか?
- ワークアイテムの作成と更新 — アシスタントに「ログインを修正」などのワークアイテムを作成させたり、
workitemツールを使ってその状態、優先度、担当者を更新させたりできます。 - PQL でのワークアイテムのクエリ — Plane のクエリ言語を使用して、
state__group = "started" AND priority = "urgent"などのフィルターでワークアイテムを一覧表示、カウント、または検索できます。 - サイクルとモジュールの管理 — サイクルのアーカイブ、プロジェクトサイクルの一覧表示、その他のサイクル/モジュール操作を、統合されたリソースツールを通じて実行できます。
- URL からの添付ファイルの処理 — 外部 URL からの添付ファイルのアップロードをトリガーできます。
upload_from_urlによる SSRF 制御のためのプロキシサポート付きです。 - PQL 構文リファレンスの取得 —
get_pql_referenceを呼び出すことで、完全な PQL 構文、演算子、および実例を要求できます。
ドキュメント
Plane MCP サーバー
Plane 用の Model Context Protocol サーバーです。AIエージェントに、プロジェクト、ワークアイテム、サイクル、モジュール、リリース、顧客などを読み取り・管理するツールを提供します。
FastMCP と公式の plane-sdk 上に構築されています。
- 30のツール(Planeリソースごとに1つ)で、207の操作をカバー
- ローカルまたはリモート — stdio、ストリーミングHTTP、SSE
- OAuthまたはAPIキー認証
クイックスタート
PlaneからAPIキーを取得します: ワークスペース設定 → APIトークン。
これをMCPクライアントの設定に追加します:
{
"mcpServers": {
"plane": {
"command": "uvx",
"args": ["plane-mcp-server", "stdio"],
"env": {
"PLANE_API_KEY": "<your-api-key>",
"PLANE_WORKSPACE_SLUG": "<your-workspace-slug>"
}
}
}
}
uvx はインストール手順は不要です。Python 3.10以上が必要です。
セルフホスト型のPlaneの場合は、"PLANE_BASE_URL": "https://plane.example.com" を追加します。
トランスポート
stdio — ローカル
MCPクライアントのサブプロセスとして実行されます。上記の設定を使用します。PLANE_API_KEY と PLANE_WORKSPACE_SLUG が必要です。
PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... uvx plane-mcp-server stdio
OAuthを使用したHTTP — ホスト型
https://mcp.plane.so/http/mcp
OAuthフローは接続時に処理されるため、設定に認証情報は不要です。ネイティブのリモートMCPサポートがないクライアントの場合は、mcp-remote でブリッジします:
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/http/mcp"]
}
}
}
Node.js 22以上が必要です。
個人アクセストークンを使用したHTTP — ホスト型
https://mcp.plane.so/http/api-key/mcp
| ヘッダー | 値 |
|---|---|
Authorization | Bearer <PAT> |
X-Workspace-slug | <workspace-slug> |
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/http/api-key/mcp"],
"headers": {
"Authorization": "Bearer <PAT>",
"X-Workspace-slug": "<workspace-slug>"
}
}
}
}
SSE — 非推奨
https://mcp.plane.so/sse は後方互換性のためだけに維持されています。代わりにHTTPトランスポートを使用してください。
ツール
サーバーはリソースごとに1つ、合計30のツールを提供します。各ツールは操作を選択する action パラメータを受け取ります:
workitem(action="create", project_id=..., name="Fix login")
workitem(action="list", project_id=..., pql='state__group = "started"')
cycle(action="archive", project_id=..., cycle_id=...)
各ツールの説明には、必須パラメータとオプションパラメータを含むアクションがリストされているため、カタログは呼び出し時に自己文書化されます。
ワークアイテムのクエリ
リスト、カウント、検索は、Planeのクエリ言語である PQL を受け付けます:
workitem(action="list", project_id=..., pql='state__group = "started" AND priority = "urgent"')
workitem(action="count", pql='assignees__id = "<member id>"', group_by="state_id")
完全な構文、演算子、実例については get_pql_reference を呼び出してください。
操作ごとのツールからのアップグレード
以前のリリースでは、API操作ごとに1つのツールを公開していました。既存の統合は引き続き動作します: 177の名前のうち169は統合ツールに解決されるため、create_work_item または list_cycles を呼び出す保存済みプロンプトやスクリプトは変更不要です。これらはもはや公開されず、リリース時のパラメータ名を維持します(work_item_id であり、workitem_id ではありません)。
7つの名前はパラメータ(manage_project_archive(archive=False))で2つの操作を選択していましたが、これは1つのツールとアクションのペアでは再現できません。呼び出すと置き換え先が通知されます。get_pql_reference は変更されていません。
設定
認証
| 変数 | 必須対象 | 目的 |
|---|---|---|
PLANE_API_KEY | stdio | APIキー |
PLANE_WORKSPACE_SLUG | stdio | 対象ワークスペース |
PLANE_BASE_URL | オプション | Plane API URL(デフォルト: https://api.plane.so) |
リモートトランスポートは接続内で認証情報を運ぶため(OAuthフローまたはPATヘッダー)、これらは不要です。
添付ファイルアップロード用の送信プロキシ
HTTP_PROXY / HTTPS_PROXY / NO_PROXY(および小文字形式)は、URLからの添付ファイルアップロード取得(upload_from_url)で尊重されます。プロキシが特定のリクエストに適用される場合、そのリクエストのSSRF制御はこのサーバーではなくプロキシが行います: サーバーはターゲットの解決済みアドレスを固定または検証しません。プロキシが独立してターゲットに接続・解決するためです。NO_PROXY とプロキシの出力ポリシーを適宜スコープしてください。
サーバー自体のセルフホスティング:
| 変数 | 目的 |
|---|---|
PLANE_INTERNAL_BASE_URL | サーバー間呼び出し用の内部URL。PLANE_BASE_URL より優先 |
REDIS_URL | OAuthトークンストレージを1つの接続URLとして指定(TLSの場合は redis:// または rediss://)。ホスト/ポートより優先 |
REDIS_HOST / REDIS_PORT | OAuthトークンストレージ。インメモリにフォールバック |
PLANE_OAUTH_PROVIDER_* | OAuthクライアント認証情報とベースURL |
MCP_PATH_PREFIX | プロキシの背後にマウントする場合のHTTPルートのパスプレフィックス — /plane は /plane/http/mcp を提供 |
OAuthリダイレクトURI
OAuthトランスポートは、各クライアントのリダイレクトURIを許可リストに対して検証します。一般的なクライアント(Cursor、VS Code、Claude.ai、ChatGPTコネクタ、localhost)はデフォルトで許可されています。
リリースなしで新しいクライアントを追加するには、パターンを追加します:
export PLANE_OAUTH_ALLOWED_REDIRECT_URIS="https://newclient.com/cb,https://other.app/oauth/*"
* は任意のポート、パスセグメント、サブドメインに一致します。ホストは固定し、ポートまたはパスのみをワイルドカードにしてください。
ロギング
構造化JSON。各ツール呼び出しは、名前、所要時間、ステータス、および利用可能な場合は不透明なユーザーIDとワークスペーススラッグをログに記録します。
export LOG_USER_INFO=false # also log the display name (PII);
export LOG_PAYLOADS=false # keep request payloads out of logs; default true
表示名を運ぶのはOAuthとPATトランスポートのみです。stdioは影響を受けません。
開発
git clone https://github.com/makeplane/plane-mcp-server
cd plane-mcp-server
uv pip install -e ".[dev]"
ワークスペースに対してサーバーを実行:
PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... python -m plane_mcp stdio
python -m plane_mcp http # port 8211
テスト、フォーマット、リント:
pytest # no network or credentials needed
ruff format plane_mcp/ tests/ # line length 120
ruff check plane_mcp/ tests/ # rules E, F, I, UP, B
スイートは完全にオフラインで実行されます — すべてのリソースのすべてのアクションが、各呼び出しを本物の plane-sdk シグネチャにバインドするスタンドインに対して実行されます。plane_mcp/tools/README.md を参照してください。
実行中のサーバーを指定しない限り、ライブ統合テストはスキップされます:
export PLANE_TEST_API_KEY=... PLANE_TEST_WORKSPACE_SLUG=...
export PLANE_TEST_MCP_URL=http://localhost:8211 # optional; this is the default
pytest tests/test_integration.py -v
これらはそのワークスペースに実際のデータを書き込みます。
リポジトリ構成
| パス | 内容 |
|---|---|
plane_mcp/__main__.py | エントリポイント。argv[1] からトランスポートを選択 |
plane_mcp/server.py | トランスポートごとに1つのファクトリ |
plane_mcp/client.py | 認証情報を plane-sdk クライアントに解決 |
plane_mcp/auth/ | OAuthプロバイダーとヘッダー認証 |
plane_mcp/tools/ | ツールサーフェス: Planeリソースごとに1つのモジュール |
plane_mcp/toolkit/ | ツールサーフェス用の共有ビルディングブロック |
plane_mcp/pql_reference.py | モデルに提供されるPQL構文リファレンス |
コントリビューション
プルリクエスト歓迎します。提出前に pytest と ruff check を実行してください。新しいツールには、plane_mcp/tools/README.md に記載されている不変条件を含める必要があります。
CONTRIBUTING.md と CODE_OF_CONDUCT.md を参照してください。
Node.jsサーバーからの移行
@makeplane/plane-mcp-server(Node.js)は非推奨であり、メンテナンスされていません。このPython実装が置き換えます。
| Node.js | Python |
|---|---|
PLANE_API_KEY | PLANE_API_KEY |
PLANE_API_HOST_URL | PLANE_BASE_URL |
PLANE_WORKSPACE_SLUG | PLANE_WORKSPACE_SLUG |
command と args を、クイックスタート のstdio設定に置き換えてください。
ライセンス
MIT — LICENSE を参照してください。