Plane MCP Server
公式The official Plane MCP server provides integration with Plane APIs, enabling full AI automation of Plane projects, work items, cycles and more.
ドキュメント
Plane MCP Server
Plane 統合のための Model Context Protocol (MCP) サーバーです。このサーバーは、AI エージェントを通じて Plane とやり取りするためのツールとリソースを提供します。
特徴
- 🔧 Plane 統合: Plane API およびサービスとの連携
- 🔌 複数のトランスポート: stdio、SSE、ストリーミング HTTP トランスポートをサポート
- 🌐 リモート & ローカル: ローカルおよびリモートサービスの両方で動作
- 🛠️ 拡張可能: 新しいツールやリソースの追加が容易
使用方法
サーバーは3つのトランスポート方式をサポートしています。インストール不要の uvx の使用を推奨します。
要件:
- Python 3.10 以上 (stdio トランスポート用、
uvx経由) - Node.js 22 以上 (リモートトランスポート用、
npx経由)
1. Stdio トランスポート (ローカル用)
MCP クライアント設定 (uvx 使用 - 推奨):
{
"mcpServers": {
"plane": {
"command": "uvx",
"args": ["plane-mcp-server", "stdio"],
"env": {
"PLANE_API_KEY": "<your-api-key>",
"PLANE_WORKSPACE_SLUG": "<your-workspace-slug>",
"PLANE_BASE_URL": "https://api.plane.so"
}
}
}
}
2. OAuth を使用したリモート HTTP トランスポート
OAuth 認証を使用して、ホストされた Plane MCP サーバーに接続します。
URL: https://mcp.plane.so/http/mcp
MCP クライアント設定 (ネイティブのリモート MCP サポートがない Claude Desktop などのツール用):
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/http/mcp"]
}
}
}
注意: リモートサーバーへの接続時に OAuth 認証は自動的に処理されます。
3. PAT トークンを使用したリモート HTTP トランスポート
個人アクセストークン (PAT) を使用して、ホストされた Plane MCP サーバーに接続します。
URL: https://mcp.plane.so/http/api-key/mcp
ヘッダー:
Authorization: Bearer <PAT_TOKEN>X-Workspace-slug: <SLUG>
MCP クライアント設定 (ネイティブのリモート MCP サポートがない Claude Desktop などのツール用):
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/http/api-key/mcp"],
"headers": {
"Authorization": "Bearer <PAT_TOKEN>",
"X-Workspace-slug": "<SLUG>"
}
}
}
}
4. SSE トランスポート (レガシー)
⚠️ レガシートランスポート: SSE (Server-Sent Events) トランスポートは後方互換性のために維持されています。新しい実装では、代わりに HTTP トランスポート (セクション 2 または 3) を使用する必要があります。
Server-Sent Events 経由で OAuth 認証を使用して、ホストされた Plane MCP サーバーに接続します。
URL: https://mcp.plane.so/sse
MCP クライアント設定 (SSE トランスポートをサポートするツール用):
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/sse"]
}
}
}
注意: リモートサーバーへの接続時に OAuth 認証は自動的に処理されます。このトランスポートは HTTP トランスポートに置き換えられ、非推奨です。
設定
認証
サーバーは環境変数による認証を必要とします:
PLANE_BASE_URL: Plane API のベース URL (デフォルト:https://api.plane.so) - オプションPLANE_API_KEY: 認証用 API キー (stdio トランスポートで必須)PLANE_WORKSPACE_SLUG: ワークスペーススラッグ識別子 (stdio トランスポートで必須)PLANE_ACCESS_TOKEN: 認証用アクセストークン (API キーの代替)
例 (stdio トランスポート用):
export PLANE_BASE_URL="https://api.plane.so"
export PLANE_API_KEY="your-api-key"
export PLANE_WORKSPACE_SLUG="your-workspace-slug"
注意: リモート HTTP トランスポート (OAuth または PAT) の場合、認証は接続方法 (OAuth フローまたは PAT ヘッダー) を介して処理され、これらの環境変数は必要ありません。
OAuth リダイレクト URI
OAuth HTTP/SSE トランスポートの場合、サーバーは各クライアントのリダイレクト URI を許可リストと照合して検証します。一般的な MCP クライアント (Cursor、VS Code、Claude.ai、ChatGPT コネクタ、localhost) はデフォルトで許可されています。
コードの変更やリリースなしで新しいクライアントをオンボードするには、環境変数を使用して追加のパターンを追加します:
PLANE_OAUTH_ALLOWED_REDIRECT_URIS: 組み込みの許可リストに追加される、カンマ区切りのリダイレクト URI パターン。
export PLANE_OAUTH_ALLOWED_REDIRECT_URIS="https://newclient.com/cb,https://other.app/oauth/*"
パターンはグロブマッチングをサポートします (* は任意のポート、パスセグメント、またはサブドメインに一致します)。セキュリティのため、ホストは固定し、ポート/パスのみワイルドカードにしてください。
ログ
サーバーは構造化された JSON ログを出力します。各ツール呼び出しは、ツール名、所要時間、ステータス、および (利用可能な場合) 不透明なユーザー ID とワークスペーススラッグとともにログに記録されます。
LOG_USER_INFO:trueの場合、不透明なユーザー ID とともにユーザー情報 (表示名などの PII) をログに含めます。デフォルトはfalseで、明示的にオプトインしない限り PII はログに記録されません。表示名を伝送するのは OAuth および PAT (ヘッダー) HTTP トランスポートのみで、stdio は影響を受けません。
export LOG_USER_INFO="true"
利用可能なツール
サーバーは Plane とやり取りするための包括的なツールを提供します。すべてのツールは、型安全性と検証のために Plane SDK の Pydantic モデルを使用します。
プロジェクト
| ツール名 | 説明 |
|---|---|
list_projects | オプションのページネーションとフィルタリングを使用して、ワークスペース内のすべてのプロジェクトを一覧表示します |
create_project | 名前、識別子、およびオプションの設定を使用して新しいプロジェクトを作成します |
retrieve_project | ID でプロジェクトを取得します |
update_project | 部分的なデータでプロジェクトを更新します |
delete_project | ID でプロジェクトを削除します |
get_project_worklog_summary | プロジェクトの作業ログサマリーを取得します |
get_project_members | プロジェクトのすべてのメンバーを取得します |
update_project_features | プロジェクトの機能設定を更新します |
作業項目
| ツール名 | 説明 |
|---|---|
list_work_items | オプションのフィルタリングとページネーションを使用して、プロジェクト内のすべての作業項目を一覧表示します |
create_work_item | 名前、担当者、ラベル、その他の属性を使用して新しい作業項目を作成します |
retrieve_work_item | オプションのフィールド展開を使用して、ID で作業項目を取得します |
retrieve_work_item_by_identifier | プロジェクト識別子と課題シーケンス番号で作業項目を取得します |
update_work_item | 部分的なデータで作業項目を更新します |
delete_work_item | ID で作業項目を削除します |
search_work_items | クエリ文字列を使用してワークスペース全体の作業項目を検索します |
サイクル
| ツール名 | 説明 |
|---|---|
list_cycles | プロジェクト内のサイクルを一覧表示します (アーカイブ済みの場合は archived=true を設定) |
create_cycle | 名前、日付、所有者を使用して新しいサイクルを作成します |
retrieve_cycle | ID でサイクルを取得します |
update_cycle | 部分的なデータでサイクルを更新します |
delete_cycle | ID でサイクルを削除します |
manage_cycle_work_items | サイクルに作業項目を追加または削除します |
list_cycle_work_items | サイクル内の作業項目を一覧表示します |
transfer_cycle_work_items | あるサイクルから別のサイクルに作業項目を転送します |
manage_cycle_archive | サイクルをアーカイブまたはアーカイブ解除します |
モジュール
| ツール名 | 説明 |
|---|---|
list_modules | プロジェクト内のモジュールを一覧表示します (アーカイブ済みの場合は archived=true を設定) |
create_module | 名前、日付、ステータス、メンバーを使用して新しいモジュールを作成します |
retrieve_module | ID でモジュールを取得します |
update_module | 部分的なデータでモジュールを更新します |
delete_module | ID でモジュールを削除します |
manage_module_work_items | モジュールに作業項目を追加または削除します |
list_module_work_items | モジュール内の作業項目を一覧表示します |
manage_module_archive | モジュールをアーカイブまたはアーカイブ解除します |
イニシアチブ
| ツール名 | 説明 |
|---|---|
list_initiatives | ワークスペース内のすべてのイニシアチブを一覧表示します |
create_initiative | 名前、日付、状態、リードを使用して新しいイニシアチブを作成します |
retrieve_initiative | ID でイニシアチブを取得します |
update_initiative | 部分的なデータでイニシアチブを更新します |
delete_initiative | ID でイニシアチブを削除します |
受付作業項目
| ツール名 | 説明 |
|---|---|
list_intake_work_items | オプションのページネーションを使用して、プロジェクト内のすべての受付作業項目を一覧表示します |
create_intake_work_item | プロジェクトに新しい受付作業項目を作成します |
retrieve_intake_work_item | オプションのフィールド展開を使用して、作業項目 ID で受付作業項目を取得します |
update_intake_work_item | 部分的なデータで受付作業項目を更新します |
delete_intake_work_item | 作業項目 ID で受付作業項目を削除します |
作業項目プロパティ
| ツール名 | 説明 |
|---|---|
list_work_item_properties | 作業項目タイプの作業項目プロパティを一覧表示します |
create_work_item_property | タイプ、設定、検証ルールを使用して新しい作業項目プロパティを作成します |
retrieve_work_item_property | ID で作業項目プロパティを取得します |
update_work_item_property | 部分的なデータで作業項目プロパティを更新します |
delete_work_item_property | ID で作業項目プロパティを削除します |
マイルストーン
| ツール名 | 説明 |
|---|---|
list_milestones | プロジェクト内のすべてのマイルストーンを一覧表示します |
create_milestone | 新しいマイルストーンを作成します |
retrieve_milestone | ID でマイルストーンを取得します |
update_milestone | ID でマイルストーンを更新します |
delete_milestone | ID でマイルストーンを削除します |
manage_milestone_work_items | マイルストーンに作業項目を追加または削除します |
list_milestone_work_items | マイルストーン内の作業項目を一覧表示します |
ラベル
| ツール名 | 説明 |
|---|---|
list_labels | プロジェクト内のすべてのラベルを一覧表示します |
create_label | 新しいラベルを作成します |
retrieve_label | ID でラベルを取得します |
update_label | ID でラベルを更新します |
delete_label | ID でラベルを削除します |
状態
| ツール名 | 説明 |
|---|---|
list_states | プロジェクト内のすべての状態を一覧表示します |
create_state | 新しい状態を作成します |
retrieve_state | ID で状態を取得します |
update_state | ID で状態を更新します |
delete_state | ID で状態を削除します |
作業項目コメント
| ツール名 | 説明 |
|---|---|
list_work_item_comments | 作業項目のコメントを一覧表示します |
retrieve_work_item_comment | 作業項目の特定のコメントを取得します |
create_work_item_comment | 作業項目のコメントを作成します |
update_work_item_comment | 作業項目のコメントを更新します |
delete_work_item_comment | 作業項目のコメントを削除します |
作業項目リンク
| ツール名 | 説明 |
|---|---|
list_work_item_links | 作業項目のリンクを一覧表示します |
retrieve_work_item_link | 作業項目の特定のリンクを取得します |
create_work_item_link | 作業項目のリンクを作成します |
update_work_item_link | 作業項目のリンクを更新します |
delete_work_item_link | 作業項目のリンクを削除します |
作業項目タイプ
| ツール名 | 説明 |
|---|---|
list_work_item_types | プロジェクト内のすべての作業項目タイプを一覧表示します |
create_work_item_type | 新しい作業項目タイプを作成します |
retrieve_work_item_type | ID で作業項目タイプを取得します |
update_work_item_type | ID で作業項目タイプを更新します |
delete_work_item_type | ID で作業項目タイプを削除します |
import_work_item_types_to_project | ワークスペースレベルの作業項目タイプをプロジェクトに一括リンクします |
resolve_work_item_type | プロジェクトの名前付きタイプを検索または作成し、ワークスペースとプロジェクトのスコープおよびインポートを自動処理します |
作業項目リレーション
| ツール名 | 説明 |
|---|---|
list_work_item_relations | 作業項目のリレーションを一覧表示します |
create_work_item_relation | 作業項目のリレーションを作成します |
remove_work_item_relation | 作業項目からリレーションを削除します |
作業項目リレーション定義
| ツール名 | 説明 |
|---|---|
list_work_item_relation_definitions | ワークスペースのカスタムリレーション定義を一覧表示します |
create_work_item_relation_definition | ワークスペースのリレーション定義を作成します |
update_work_item_relation_definition | リレーション定義を更新します |
delete_work_item_relation_definition | リレーション定義を削除します |
作業項目アクティビティ
| ツール名 | 説明 |
|---|---|
list_work_item_activities | 作業項目のアクティビティを一覧表示します |
retrieve_work_item_activity | 作業項目の特定のアクティビティを取得します |
作業ログ
| ツール名 | 説明 |
|---|---|
list_work_logs | 作業項目の作業ログを一覧表示します |
create_work_log | 作業項目の作業ログを作成します |
update_work_log | 作業項目の作業ログを更新します |
delete_work_log | 作業項目の作業ログを削除します |
ページ
| ツール名 | 説明 |
|---|---|
list_pages | ページを一覧表示します (ワークスペース、または project_id が指定された場合はプロジェクトのもの) |
retrieve_page | ID でページを取得します (ワークスペース、または project_id が指定された場合はプロジェクトのもの) |
create_page | ワークスペースまたはプロジェクトのページを作成します |
ワークスペース
| ツール名 | 説明 |
|---|---|
get_workspace_members | 現在のワークスペースのすべてのメンバーを取得します |
get_features | 機能フラグを取得します (ワークスペース、または project_id が指定された場合はプロジェクトのもの) |
update_workspace_features | 現在のワークスペースの機能を更新します |
ユーザー
| ツール名 | 説明 |
|---|---|
get_me | 現在認証されているユーザー情報を取得します |
ツール総数: 20 カテゴリにわたる 100 以上のツール
開発
テストの実行
pytest
コードフォーマット
black plane_mcp/
ruff check plane_mcp/
ライセンス
MIT License - 詳細はLICENSEを参照してください。
コントリビューション
コントリビューションを歓迎します!お気軽にPull Requestを送信してください。
廃止予定のお知らせ
⚠️ Node.jsベースのplane-mcp-serverは廃止され、メンテナンスされなくなりました。
このリポジトリは、Plane MCPサーバーの新しいPython+FastMCPベースの実装を表しています。以前のNode.jsバージョンを使用していた場合は、継続的なサポートとアップデートのために、このPythonベースのバージョンに移行してください。
新しい実装では以下を提供します:
- Pydanticモデルによる型安全性の向上
- FastMCPによるパフォーマンスの改善
- ツールカバレッジの強化
- 積極的なメンテナンスと開発
移行のサポートについては、このREADMEの設定例を参照するか、サポートのためにIssueを作成してください。
古いNode.jsの設定(廃止済み):
以前のNode.jsベースの@makeplane/plane-mcp-serverを使用していた場合、設定は次のようになっていました:
{
"mcpServers": {
"plane": {
"command": "npx",
"args": [
"-y",
"@makeplane/plane-mcp-server"
],
"env": {
"PLANE_API_KEY": "<YOUR_API_KEY>",
"PLANE_API_HOST_URL": "<HOST_URL_FOR_SELF_HOSTED>",
"PLANE_WORKSPACE_SLUG": "<YOUR_WORKSPACE_SLUG>"
}
}
}
}
上記の使用方法セクションに示されている新しいPythonベースの設定に移行してください。