mcpField
Z
ZennoPoster: ProjectMaker

ZennoPoster: ProjectMaker

ローカル
zennolab.github.io開発ツール71 週間前に更新

ZennoPoster: ProjectMaker について

ZennoPoster: ProjectMaker は、外部の LLM クライアントを ZennoPoster または ZennoDroid の ProjectMaker エディターに接続する MCP サーバーです。製品の PublicApi を通じてプロジェクトの閲覧、編集、実行、操作記録を提供し、API キーのスコープとティアでアクセスを制御します。

主な機能

  1. 01開いているプロジェクトの閲覧と編集
  2. 02プロジェクトの実行
  3. 03操作の記録
  4. 04API キーのスコープとティアによる制御

活用シーン

  1. 01ProjectMaker で開いているプロジェクトの確認
  2. 02自動化プロジェクトの編集と実行
  3. 03エディターで行った操作の記録

MCP 対応

製品の PublicApi を介して ProjectMaker の機能を MCP クライアントに公開します。HTTP リスナーまたは stdio のサブプロセスとして動作し、専用に設定した API キーを使います。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbMCP.ProjectMaker-projectmaker-v0.6.0-win-x64.mcpb

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

English | Русский

ZennoPoster と ZennoDroid の MCP サーバーを独自の LLM クライアントに接続する

MCP サーバーは、GitHub Releases を通じて共有リポジトリ https://github.com/ZennoLab/zennoposter-mcp/releases で、自己完結型の win-x64 バイナリとして公開されています。各サーバーには独自のリリース系列(独自のタグプレフィックス)があります。

  • ProjectMaker(エディター) — タグ mcp-projectmaker-v*、アーカイブ MCP.ProjectMaker-v*-win-x64.zip
  • Instance(ブラウザー制御、デュアルマウント) — タグ mcp-instance-v*、アーカイブ MCP.Instance-v*-win-x64.zip
  • ZennoPoster(タスクランナー) — タグ mcp-zennoposter-v*、アーカイブ MCP.ZennoPoster-v*-win-x64.zip
  • Android(ZennoDroid デバイス) — タグ mcp-android-v*、アーカイブ MCP.Android-v*-win-x64.zip

PublicApi のドキュメント(Redoc で表示される OpenAPI コントラクト、インテグレーターガイド、 エラーコード、バージョニングポリシー)は https://zennolab.github.io/zennoposter-mcp/ にあります(各ページはこのリポジトリの docs/ フォルダーから公開されています)。

これらのサーバーは ZennoPoster 7.9.3 以降 および ZennoDroid 2.6.1 以降 と通信します。 MCP.Instance は ZennoPoster 専用、MCP.Android は ZennoDroid 専用です。MCP.ProjectMaker と MCP.ZennoPoster は両方に対応しています。 各製品とコントラクトのバージョンに対応するサーバーのバージョンについては、こちらをご覧ください。 **https://zennolab.github.io/zennoposter-mcp/compatibility.html**。

各サーバーの Cursor と VS Code 用インストールボタン、および Claude Code コマンド: **https://zennolab.github.io/zennoposter-mcp/install.html**。

モデル:独自のキーを使う独自の MCP インスタンス

製品自体が、組み込み AI チャット用の内部 MCP サーバーを起動します。これらは内部ポート帯 6107–6113 で実行され(ZennoDroid ではすべて +10 ずれます)、ホストから最小権限のサービスキーを受け取り、受信リクエストの Authorization ヘッダーを無視します。これは内部インフラストラクチャであり、外部からの接続はサポートされていません(権限はユーザーのキーではなく、サービスキーで定義されます)。また、これらのポートを使用中にしてはいけません。このポート帯のいずれかを別のプロセスが使用していると、組み込みサーバーを起動できません(製品はエラーをログに記録しますが、AI スタックはそのサーバーなしで動作することになります)。

これらの内部サーバーには独自のコンソールがないため、製品はサーバーの出力をすべて自身のログにコピーし、各行にプロセス名(MCP.ProjectMaker、Orchestrator、…)をプレフィックスとして付けます。通常の起動メッセージには Debug タグが付いており、ログには一切記録されません。サーバー自体が警告または失敗を報告した場合、およびサーバーが予期せず終了した場合の終了コードのみが実際に記録されます。組み込みチャットのサーバーが停止した場合は、ここを確認してください。

これらの内部サーバーは、製品が自身の AI プロセスにのみ渡すマシンごとのシークレットも必要とします。そのため、ポートに到達できるだけでは使用できません。シークレットなしの呼び出しは 401 で拒否され、拒否は製品のログに ingress refused として記録されます。組み込みチャット独自の 6113 の API も同様です。独自のクライアントからこれらのポートを呼び出している場合は、以下の説明に従って、代わりにパブリックポート帯で独自のコピーを実行してください。

独自の LLM クライアントでは、パブリックパッケージから MCP サーバーの別のコピーを実行します。このコピーはパブリックポート(以下の表を参照)で待ち受け、同じ製品の PublicApi と通信しますが、使用するのはご自身の ApiKey です。キーの発行時に選択したスコープ/ティアが適用されます。2 つのコピーは互いに干渉することなく、並行して実行できます。

ZennoDroid では、両製品に対応する 2 つのサーバーは +10 高いポートで待ち受けます。MCP.ProjectMaker は 6217、MCP.ZennoPoster は 6220 です。これは、製品が内部ポート帯に適用するのと同じずれです。これにより、両方の製品がインストールされたマシンでも、両方のセットを同時に実行できます。MCP.Android は ZennoDroid 専用で、6211 を引き続き使用します。ZennoPoster ではこのポートは使用されません。 既定のポート。製品ごとに 1 つの表です。サーバーは、exe と同じ場所にある appsettings.json からリッスンポートと BaseUrl を取得します。¹ が付いたポートには 既定値がなく、手順 3 の例のように、対応する BaseUrl(および Target)とともに コマンドラインで渡します。

ZennoPoster

サーバーポート接続先(PublicApi)設定内のキー
MCP.ProjectMaker6207ProjectMaker :5299ProjectMaker:ApiKey
MCP.Instance、Target=projectmaker(エディターのブラウザー)6208ProjectMaker :5299Instance:ApiKey
MCP.Instance、Target=zennoposter(タスクのブラウザー)6209 ¹ZennoPoster :5300Instance:ApiKey
MCP.ZennoPoster6210ZennoPoster :5300ZennoPoster:ApiKey

ZennoDroid

サーバーポート接続先(PublicApi)設定内のキー
MCP.ProjectMaker6217 ¹ProjectMaker :5309ProjectMaker:ApiKey
MCP.ZennoPoster6220 ¹ZennoPoster :5310ZennoPoster:ApiKey
MCP.Android、Target=projectmaker(エディターのデバイス)6211ProjectMaker :5309Android:ApiKey
MCP.Android、Target=zennoposter(タスクのデバイス)6212 ¹ZennoPoster :5310Android:ApiKey

¹ 組み込みの既定値はありません。明示的に設定してください(--urls と対応する BaseUrl を指定します。コマンドは手順 3 にあります)。

すべて、標準の ASP.NET Core 構成を使って上書きできます。exe と同じ場所にある appsettings.json、環境変数(ASPNETCORE_URLS、 ProjectMaker__ApiKey、…)、またはコマンドライン引数(--urls、 --ProjectMaker:ApiKey=…、…)を使用できます。引数は環境変数より優先され、 環境変数は appsettings.json より優先されます。

1. 必要なサーバーをダウンロードする

リリースページで、タグのプレフィックスを確認して必要なサーバーの最新リリースを見つけ、 *-win-x64.zip をダウンロードして任意のフォルダーに展開します。 各アーカイブには、単体で実行できる .exe と appsettings.json が含まれています。.NET ランタイムを別途インストールする必要はありません。Claude Desktop では、代わりに同じリリースの .mcpb バンドルを使用してください。詳しくは Claude Desktop:.mcpb バンドルからインストールするを参照してください。

2. ApiKey を発行する

ProjectMaker で、Settings → Api-Keys → Add new API key を選択します。同じ名前のダイアログが開きます。

  1. Label を設定します(一覧でキーを区別するための任意の名前です)。
  2. Max tier を選択します(タスクに必要な最低限のティアを選択してください。読み取り専用なら T0、変更を伴う操作にはそれより上のティアを選択します)。
  3. 必要な Scopes にチェックを入れます(既定でチェックされているのは *:read のみです。必要に応じてほかのスコープを追加してください)。
  4. Generate API Key を押します。生のキーが表示されるのは 1 回だけです。すぐに安全な場所へコピーしてください。

スコープとティアについて詳しくは、security-model.mdを参照してください。

3. サーバーをキーとともに実行する

キーはMCP サーバー自身の設定で指定します(MCP クライアントのヘッダーではありません。サーバーはループバックからの接続のみを受け付け、受信リクエストの Authorization ヘッダーを読み取りません)。上の表でポート番号に¹が付いていないサーバーは、実行ファイルと同じ場所にある appsettings.json の ApiKey からキーを取得でき、引数なしで起動します。¹が付いているポートは、対応する BaseUrl(および Target)とともに、必ずコマンドラインで設定します。以下のように、環境変数または引数でキーを渡すこともできます。お使いの製品のブロックから、必要なサーバーだけを実行してください。

ZennoPoster

# ProjectMaker (editor): 6207 -> :5299
.\ZennoLab.AI.MCP.ProjectMaker.exe --ProjectMaker:ApiKey=zp_xxx

# Instance for the editor (PM browser): 6208 -> :5299
.\ZennoLab.AI.MCP.Instance.exe --Instance:ApiKey=zp_xxx

# Instance for the runner — a SECOND copy of the same exe: the port and the Target/BaseUrl pair are set explicitly
.\ZennoLab.AI.MCP.Instance.exe --urls http://localhost:6209 `
  --Instance:Target=zennoposter --Instance:BaseUrl=http://localhost:5300/api/v1 `
  --Instance:ApiKey=zp_xxx

# ZennoPoster (runner tasks/sessions): 6210 -> :5300
.\ZennoLab.AI.MCP.ZennoPoster.exe --ZennoPoster:ApiKey=zp_xxx

ZennoDroid

# ProjectMaker (editor): 6217 -> :5309
.\ZennoLab.AI.MCP.ProjectMaker.exe --urls http://localhost:6217 `
  --ProjectMaker:BaseUrl=http://localhost:5309/api/v1 --ProjectMaker:ApiKey=zp_xxx

# ZennoDroid (runner tasks/sessions): 6220 -> :5310
.\ZennoLab.AI.MCP.ZennoPoster.exe --urls http://localhost:6220 `
  --ZennoPoster:BaseUrl=http://localhost:5310/api/v1 --ZennoPoster:ApiKey=zp_xxx

# Android (the device attached to ProjectMaker): 6211 -> :5309
.\ZennoLab.AI.MCP.Android.exe --Android:ApiKey=zp_xxx

# Android for the runner — a SECOND copy of the same exe, for the devices of running tasks:
# the port and the Target/BaseUrl pair are set explicitly
.\ZennoLab.AI.MCP.Android.exe --urls http://localhost:6212 `
  --Android:Target=zennoposter --Android:BaseUrl=http://localhost:5310/api/v1 `
  --Android:ApiKey=zp_xxx

MCP.Android を2つ起動するのは、ZennoPoster で MCP.Instance を2つ起動する理由と同じです。Android ドメインは、ProjectMaker の PublicApi(エディターで表示されるデバイス)と、ランナーの PublicApi(タスクが操作するデバイス)の両方から提供されます。MCP.Instance と同様に、Target(エディターのデバイスには projectmaker、ランナーには zennoposter)を指定します。これにより、初期化時にサーバーが AI に渡す指示が選択されます(ID を0のままにできる単一のデバイス、または list_devices から取得するIDを持つワーカースレッドごとのデバイス)。どちらの場合もツールセットは同じです。Target と BaseUrl は、MCP.Instance とまったく同じように、必ずペアで設定します(下の注記を参照)。Target は MCP.Android 0.4.0 で追加されました。それ以前のバージョンとの違いは --urls と BaseUrl だけです。

MCP.Instance と MCP.Android の2つのコピーに関する重要な注記:これらのサーバーでは、Target(AI に提供する指示の対象が ProjectMaker のエディターかランナーか)と BaseUrl(HTTP リクエストの実際の送信先)は、必ずペアで設定します。コード上では両者は連動していません(Target=projectmaker → PM PublicApi の :5299 を指す BaseUrl、Target=zennoposter → ZP PublicApi の :5300 を指す BaseUrl。ZennoDroid では :5309 と :5310)。起動時にサーバーは、ターゲットホストの /capabilities を使った可能な範囲でのチェックを行い、不一致があれば警告をログに記録します。ただし、起動時にターゲットホストへ接続できない場合、チェックは何も通知せずスキップされます。その場合、不一致は検出されず、リクエストの送信先とは別のホストについての指示が AI に渡されます。

stdio:クライアントのサブプロセスとしてサーバーを実行する

ポートで待ち受けるだけでなく、すべてのサーバーは自身の stdin と stdout を通じて MCP をやり取りできます。実行ファイルを --stdio 付きで起動すると、起動したクライアントが接続を所有します。ポートを選ぶ必要はなく、マシン上のほかのものからサーバーに接続することはできません。また、複数のクライアントがそれぞれ独自のコピーを実行できます。このモードは MCPB バンドルと Claude Desktop で使われており、Claude Code と MCP Inspector もサポートしています。このモードは、サーバーバージョン 0.5.0(ProjectMaker、ZennoPoster、Android)および 0.3.0(Instance)から利用できます。

stdout に出力されるのは JSON-RPC のみで、すべてのログ行は stderr に出力されます。キーは通常どおり設定から読み取られます。サブプロセスとして実行する場合は環境変数 <Section>__ApiKey(ProjectMaker__ApiKey、Instance__ApiKey、ZennoPoster__ApiKey、Android__ApiKey)を使います。--<Section>:ApiKey= 引数と、実行ファイルと同じ場所にある appsettings.json も使用できます。Instance と Android の各コピーでは、同じ方法で Target と BaseUrl のペアを指定します(Instance__Target、Instance__BaseUrl など)。

# Claude Code: -e stores the value in the server's own config entry, not in the launch command
# line - without it the key only reaches the server in this one session, from this one shell.
$env:ProjectMaker__ApiKey = "<your key>"
claude mcp add projectmaker --transport stdio -e "ProjectMaker__ApiKey=$env:ProjectMaker__ApiKey" -- "C:\mcp\ZennoLab.AI.MCP.ProjectMaker.exe" --stdio

mcpServers 設定を読み取るクライアント(Claude Desktop、Cursor)向けの同じ設定項目:

{
  "mcpServers": {
    "projectmaker": {
      "command": "C:\\mcp\\ZennoLab.AI.MCP.ProjectMaker.exe",
      "args": ["--stdio"],
      "env": { "ProjectMaker__ApiKey": "<your key>" }
    },
    "instance-zp": {
      "command": "C:\\mcp\\ZennoLab.AI.MCP.Instance.exe",
      "args": ["--stdio"],
      "env": {
        "Instance__ApiKey": "<your key>",
        "Instance__Target": "zennoposter",
        "Instance__BaseUrl": "http://localhost:5300/api/v1"
      }
    }
  }
}

クライアントが stdin を閉じると、プロセスは終了します。--stdio を指定しない場合は何も変わりません。上記のとおり、サーバーはポートで待ち受け、製品に組み込まれた AI チャットは引き続き HTTP を使用します。

Claude Desktop:.mcpb バンドルからインストール

サーバーの各リリースには、上記の表にあるクライアント名ごとに1つ、MCPB バンドルも含まれています。ファイル名は MCP.<server>-<client name>-v<version>-win-x64.mcpb です(例:MCP.Instance-instance-zp-v0.3.0-win-x64.mcpb)。バンドルは zip 内の exe と同じもので、適切な Target と BaseUrl が設定された stdio 用です。Claude Desktop が自ら起動するため、キーの入力だけで済みます。

バンドルサーバー対応対象
projectmakerMCP.ProjectMakerZennoPoster ProjectMaker、:5299
instance-pmMCP.InstanceZennoPoster ProjectMaker のブラウザー、:5299
instance-zpMCP.Instance実行中の ZennoPoster タスクのブラウザー、:5300
zennoposterMCP.ZennoPosterZennoPoster のタスク、:5300
projectmaker-droidMCP.ProjectMakerZennoDroid ProjectMaker、:5309
zennodroidMCP.ZennoPosterZennoDroid のタスク、:5310
android-pmMCP.AndroidZennoDroid ProjectMaker に接続されたデバイス、:5309
android-zdMCP.Android実行中の ZennoDroid タスクのデバイス、:5310
  1. 対象サーバーのリリースから必要なバンドルをダウンロードします。
  2. Claude Desktop で Settings → Extensions を開き、.mcpb ファイルをウィンドウにドラッグします。
  3. 手順2で発行された ApiKey を入力します。このフィールドは必須です。キーがないとインストールは完了しません。Claude Desktop はキーを独自の設定に保存します。バンドル自体にはキーが含まれません。
  4. バンドルの対応製品を起動します。サーバーのツールがチャットに表示されます。

キーを変更するには、Settings → Extensions で拡張機能を開き、そこで変更します。バンドルはポートをリッスンしないため、zip から起動した同じサーバーのコピーとポートが競合することはありません。

4. LLM クライアントを設定する

VS Code の .vscode/mcp.json 形式の設定例です。Cursor、Claude Code、その他のクライアント向けの同じエントリーとワンクリックインストールボタンは、インストールページにあります。

ZennoPoster

{
  "servers": {
    "projectmaker": {
      "type": "http",
      "url": "http://localhost:6207"
    },
    "instance-pm": {
      "type": "http",
      "url": "http://localhost:6208"
    },
    "instance-zp": {
      "type": "http",
      "url": "http://localhost:6209"
    },
    "zennoposter": {
      "type": "http",
      "url": "http://localhost:6210"
    }
  }
}

ZennoDroid — ZennoPoster とは名前が異なるため、両方の製品を1つのクライアントで設定できます。

{
  "servers": {
    "projectmaker-droid": {
      "type": "http",
      "url": "http://localhost:6217"
    },
    "zennodroid": {
      "type": "http",
      "url": "http://localhost:6220"
    },
    "android-pm": {
      "type": "http",
      "url": "http://localhost:6211"
    },
    "android-zd": {
      "type": "http",
      "url": "http://localhost:6212"
    }
  }
}

この接続経路では認証は不要です。MCP サーバーはループバックでのみリッスンし、権限はサーバー自体の起動に使用したキー(手順3)で定義されます。

5. 接続を確認する

MCP クライアントでサーバーのツール一覧を表示し、キーが必要な読み取り専用ツールを呼び出します。

サーバーツール
MCP.ProjectMakerget_product_version
MCP.ZennoPostertasks_list
MCP.Instanceブラウザーを開いた状態で get_all_tabs
MCP.Androidlist_devices

ping はキーを確認せずに応答するため、サーバーが実行中であることしか確認できません。 MCP.ProjectMaker と MCP.ZennoPoster の capabilities は、キーで許可される内容、つまり currentScopes と currentMaxTier を表示します。currentScopes が空の場合、キーが受け入れられなかったか、スコープが付与されていません。

キーが無効であるか、スコープ/ティアが不足している場合、呼び出しは構造化エラー(unauthorized/forbidden。後者には required/current フィールドが含まれます)で失敗します。MCP.Android は 0.4.0 以降、このエラーを返します。それ以前のバージョンでは、呼び出しが失敗したことだけが報告されます。

クライアントの識別:X-ZP-Client ヘッダー

PublicApi へのすべての HTTP 呼び出しには、呼び出し元のクライアントを識別するために X-ZP-Client ヘッダーを含めることができます。値は name/version 形式です。

X-ZP-Client: mcp-zennoposter/0.6.0

公式の MCP サイドカーは、それぞれ自動的にこのヘッダーを設定します。

サイドカー値
MCP.ProjectMakermcp-projectmaker/<version>
MCP.Instancemcp-instance/<version>
MCP.ZennoPostermcp-zennoposter/<version>
MCP.Androidmcp-android/<version>

サードパーティのインテグレーター向け: 製品名を示す、安定した小文字の識別子を選んでください。たとえば、acme-bot/1.0 です。他のインテグレーターと衝突する汎用的な名前(client、test、my-app)は避けてください。このヘッダーの値は自由形式で、登録手続きはありません。

ヘッダーなしで到着した呼び出し(直接実行された HTTP スクリプト、curl、このヘッダーを設定しないカスタムクライアント)は、組み込みのクライアント名 direct-http として記録されます。

このヘッダーは集計分析のみに使用されます。収集されるデータと収集されないデータの詳細は、data-collection.md をご覧ください。ルーティング、認可、レート制限には影響しません。

ポートの変更

各サーバーには 2 つのポートがあります。LLM クライアントからの接続を待ち受けるポートと、呼び出し先の製品 API ポートです。

待ち受けポート。 次の 3 つのいずれかを設定します。引数が環境変数より優先され、環境変数がファイルより優先されます。

.\ZennoLab.AI.MCP.ProjectMaker.exe --urls http://localhost:7207

$env:ASPNETCORE_URLS = "http://localhost:7207"
.\ZennoLab.AI.MCP.ProjectMaker.exe

または、exe と同じ場所にある appsettings.json に "Urls": "http://localhost:7207" を設定します。待ち受けポートを変更したら、ステップ 4 のクライアント設定で対応する URL も更新してください。

6107~6113(ZennoDroid では 6117~6123)は使用しないでください。これらは製品の組み込みサーバー用であり、そのいずれかのポートを別のプロセスが使用すると、組み込みサーバーを起動できません。

製品 API ポート。 そのサーバー独自のセクションで BaseUrl を設定します。たとえば、--ProjectMaker:BaseUrl=http://localhost:<port>/api/v1 のような引数、ProjectMaker__BaseUrl のような環境変数、または exe と同じ場所にある appsettings.json の BaseUrl を使用します。ステップ 3 の ZennoDroid コマンドは、この設定を行います。

セクション名はサーバー名に対応します:ProjectMaker、Instance、ZennoPoster、Android。MCP.ProjectMaker と MCP.ZennoPoster のバージョン 0.3.0 以前では、それぞれ NeuroBot と ZennoPosterApi が使用されていました。これらの名前は後続バージョンでも引き続き使用できますが、サーバーは起動時に警告をログに記録します。

ライセンス

このリポジトリ内のファイル(ドキュメントと OpenAPI 仕様)は、MIT ライセンスの下でライセンスされています。Releases ページにある MCP サーバーのバイナリはプロプライエタリです。利用条件はTERMS.mdに記載されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。