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

ヘッダー値
AuthorizationBearer <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_KEYstdioAPIキー
PLANE_WORKSPACE_SLUGstdio対象ワークスペース
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_URLOAuthトークンストレージを1つの接続URLとして指定(TLSの場合は redis:// または rediss://)。ホスト/ポートより優先
REDIS_HOST / REDIS_PORTOAuthトークンストレージ。インメモリにフォールバック
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.jsPython
PLANE_API_KEYPLANE_API_KEY
PLANE_API_HOST_URLPLANE_BASE_URL
PLANE_WORKSPACE_SLUGPLANE_WORKSPACE_SLUG

command と args を、クイックスタート のstdio設定に置き換えてください。

ライセンス

MIT — LICENSE を参照してください。