Puter MCP
Puter MCP enables AI tools to interact with Puter: manage files, websites, workers, and more
Create and manage Form.io forms, resources, actions, roles, and projects from your AI agent.
使っているAIアプリを選んで、設定をコピーしてください。
チェック 3/3 合格 · あなたのパソコンで動きます · ✓ コマンド確認済み 2026年11月14日
まず:どの AI を使っていますか?
使っているアプリを選ぶと、下に手順が表示されます。
Claude につなげますが、先に準備が必要です
先にパソコンへ Node.js を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
このメッセージを Claude のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの Claude に MCP server Formio MCP を入れてください。順番に:1) node -v で Node.js があるか確認。なければ https://nodejs.org/en/download から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "mcpServers": { "formio": { "command": "npx", "args": [ "-y", "@formio/mcp" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Formio MCP のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
node -vMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: 公式ダウンロードページで LTS 版と、クリックで進むインストーラーを選びます:Mac は .pkg、Windows は .msi。ダブルクリックして最後まで進めるだけで、curl コマンドは不要です
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: node -v
一度入れれば、Node.js を使うすべてのツールで使えます
SettingsDeveloperEdit Config
{
"mcpServers": {
"formio": {
"command": "npx",
"args": [
"-y",
"@formio/mcp"
]
}
}
}Formio MCP を使って、私に何ができるか教えて、1 つやってみせて✓ Claude が Formio MCP を使っていると言うか、回答に Formio MCP のツール名が出れば接続成功です
上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。
FORMIO_PROJECT_URL 任意であり、3つのプロジェクトソースの中で最も優先度が低いものです。作業ディレクトリから上位に辿って見つかったコミット済みの formio.json が最優先され、次に project_set が書き込むディレクトリごとのマッピング、最後にこの設定が使われます。它p… FORMIO_BASE_URL Optional, and usually unnecessary: the base URL is DERIVED from the project URL — https://api.form.io for a project on a form.io host, the parent path for a project addressed as a sub-directory — and…FORMIO_API_KEY Form.io project API key. Optional — applied only to the project FORMIO_PROJECT_URL names, so set FORMIO_PROJECT_URL beside it; any other project, and every project when it is omitted, uses the browse…FORMIO_LOGIN_FORM ブラウザベースのポータルログインフローで使用されるカスタムログインフォームの URL。デフォルトはデプロイ先のポータルログインフォームです。 FORMIO_AUTH_HOST ブラウザログインページがバインドするアドレス。省略可能で、デフォルトは 127.0.0.1 です。サーバーがコンテナーやリモートマシンで動作し、ログインページに外部からアクセスする必要がある場合は、FORMIO_AUTH_PORT とあわせて 0.0.0.0 に設定します。 FORMIO_AUTH_PORT ブラウザログインページの固定ポート。コンテナで公開できるようにするため(例:43117)。省略可能。正の整数であること。既定ではページは一時ポートを使用 FORMIO_AUTH_TIMEOUT ブラウザでのログインを待つ秒数。超過すると対処法を示したエラーで呼び出しが失敗します。省略可能で、2147483 以下の正の整数である必要があります。それ以外の値は無視されます。既定値は 900。 FORMIO_FORCE_BROWSER Set to 1 to attempt the browser login even where the server detects it cannot present one (CI, a container, a remote shell with no display). Use it when the login page is reachable from a browser els…FORMIO_REQUEST_TIMEOUT Form.io リクエストに応答がない場合に待機する秒数です。経過すると、URL を含むネットワークエラーで呼び出しが失敗します。任意項目で、2147483 以下の正の整数である必要があります。それ以外の値は無視されます。既定値は… FORMIO_INSECURE_TLS 1 に設定すると、設定済みデプロイメント(解決済みのプロジェクト URL およびベース URL のホスト)へのリクエストに限り TLS 証明書の検証をスキップします。その他のホストは通常どおり検証されます。ローカル開発用… 説明は自動翻訳です。変数名は原文のままです。迷ったら原文を確認してください。
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
ChatGPT はまだ Formio MCP につなげません
Formio MCP はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません
A · Formio MCP につなげるアプリを使う
Claude Code につなげますが、先に準備が必要です
先にパソコンへ Node.js を入れてください(1 回だけ)
このメッセージを Claude Code のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの Claude Code に MCP server Formio MCP を入れてください。順番に:1) node -v で Node.js があるか確認。なければ https://nodejs.org/en/download から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):claude mcp add --scope user formio -- npx -y @formio/mcp 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Formio MCP のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
node -vMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: 公式ダウンロードページで LTS 版と、クリックで進むインストーラーを選びます:Mac は .pkg、Windows は .msi。ダブルクリックして最後まで進めるだけで、curl コマンドは不要です
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: node -v
一度入れれば、Node.js を使うすべてのツールで使えます
Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く
claude mcp add --scope user formio -- npx -y @formio/mcpFormio MCP が一覧にあり、接続済みと表示されれば OK です
Formio MCP を使って、私に何ができるか教えて、1 つやってみせて✓ Claude Code が Formio MCP を使っていると言うか、回答に Formio MCP のツール名が出れば接続成功です
上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。
FORMIO_PROJECT_URL 任意であり、3つのプロジェクトソースの中で最も優先度が低いものです。作業ディレクトリから上位に辿って見つかったコミット済みの formio.json が最優先され、次に project_set が書き込むディレクトリごとのマッピング、最後にこの設定が使われます。它p… FORMIO_BASE_URL Optional, and usually unnecessary: the base URL is DERIVED from the project URL — https://api.form.io for a project on a form.io host, the parent path for a project addressed as a sub-directory — and…FORMIO_API_KEY Form.io project API key. Optional — applied only to the project FORMIO_PROJECT_URL names, so set FORMIO_PROJECT_URL beside it; any other project, and every project when it is omitted, uses the browse…FORMIO_LOGIN_FORM ブラウザベースのポータルログインフローで使用されるカスタムログインフォームの URL。デフォルトはデプロイ先のポータルログインフォームです。 FORMIO_AUTH_HOST ブラウザログインページがバインドするアドレス。省略可能で、デフォルトは 127.0.0.1 です。サーバーがコンテナーやリモートマシンで動作し、ログインページに外部からアクセスする必要がある場合は、FORMIO_AUTH_PORT とあわせて 0.0.0.0 に設定します。 FORMIO_AUTH_PORT ブラウザログインページの固定ポート。コンテナで公開できるようにするため(例:43117)。省略可能。正の整数であること。既定ではページは一時ポートを使用 FORMIO_AUTH_TIMEOUT ブラウザでのログインを待つ秒数。超過すると対処法を示したエラーで呼び出しが失敗します。省略可能で、2147483 以下の正の整数である必要があります。それ以外の値は無視されます。既定値は 900。 FORMIO_FORCE_BROWSER Set to 1 to attempt the browser login even where the server detects it cannot present one (CI, a container, a remote shell with no display). Use it when the login page is reachable from a browser els…FORMIO_REQUEST_TIMEOUT Form.io リクエストに応答がない場合に待機する秒数です。経過すると、URL を含むネットワークエラーで呼び出しが失敗します。任意項目で、2147483 以下の正の整数である必要があります。それ以外の値は無視されます。既定値は… FORMIO_INSECURE_TLS 1 に設定すると、設定済みデプロイメント(解決済みのプロジェクト URL およびベース URL のホスト)へのリクエストに限り TLS 証明書の検証をスキップします。その他のホストは通常どおり検証されます。ローカル開発用… 説明は自動翻訳です。変数名は原文のままです。迷ったら原文を確認してください。
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Cursor につなげますが、先に準備が必要です
先にパソコンへ Node.js を入れてください(1 回だけ)
このメッセージを Cursor のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの Cursor に MCP server Formio MCP を入れてください。順番に:1) node -v で Node.js があるか確認。なければ https://nodejs.org/en/download から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "mcpServers": { "formio": { "command": "npx", "args": [ "-y", "@formio/mcp" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Formio MCP のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
node -vMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: 公式ダウンロードページで LTS 版と、クリックで進むインストーラーを選びます:Mac は .pkg、Windows は .msi。ダブルクリックして最後まで進めるだけで、curl コマンドは不要です
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: node -v
一度入れれば、Node.js を使うすべてのツールで使えます
Formio MCP を使って、私に何ができるか教えて、1 つやってみせて✓ Cursor が Formio MCP を使っていると言うか、回答に Formio MCP のツール名が出れば接続成功です
上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。
FORMIO_PROJECT_URL 任意であり、3つのプロジェクトソースの中で最も優先度が低いものです。作業ディレクトリから上位に辿って見つかったコミット済みの formio.json が最優先され、次に project_set が書き込むディレクトリごとのマッピング、最後にこの設定が使われます。它p… FORMIO_BASE_URL Optional, and usually unnecessary: the base URL is DERIVED from the project URL — https://api.form.io for a project on a form.io host, the parent path for a project addressed as a sub-directory — and…FORMIO_API_KEY Form.io project API key. Optional — applied only to the project FORMIO_PROJECT_URL names, so set FORMIO_PROJECT_URL beside it; any other project, and every project when it is omitted, uses the browse…FORMIO_LOGIN_FORM ブラウザベースのポータルログインフローで使用されるカスタムログインフォームの URL。デフォルトはデプロイ先のポータルログインフォームです。 FORMIO_AUTH_HOST ブラウザログインページがバインドするアドレス。省略可能で、デフォルトは 127.0.0.1 です。サーバーがコンテナーやリモートマシンで動作し、ログインページに外部からアクセスする必要がある場合は、FORMIO_AUTH_PORT とあわせて 0.0.0.0 に設定します。 FORMIO_AUTH_PORT ブラウザログインページの固定ポート。コンテナで公開できるようにするため(例:43117)。省略可能。正の整数であること。既定ではページは一時ポートを使用 FORMIO_AUTH_TIMEOUT ブラウザでのログインを待つ秒数。超過すると対処法を示したエラーで呼び出しが失敗します。省略可能で、2147483 以下の正の整数である必要があります。それ以外の値は無視されます。既定値は 900。 FORMIO_FORCE_BROWSER Set to 1 to attempt the browser login even where the server detects it cannot present one (CI, a container, a remote shell with no display). Use it when the login page is reachable from a browser els…FORMIO_REQUEST_TIMEOUT Form.io リクエストに応答がない場合に待機する秒数です。経過すると、URL を含むネットワークエラーで呼び出しが失敗します。任意項目で、2147483 以下の正の整数である必要があります。それ以外の値は無視されます。既定値は… FORMIO_INSECURE_TLS 1 に設定すると、設定済みデプロイメント(解決済みのプロジェクト URL およびベース URL のホスト)へのリクエストに限り TLS 証明書の検証をスキップします。その他のホストは通常どおり検証されます。ローカル開発用… 説明は自動翻訳です。変数名は原文のままです。迷ったら原文を確認してください。
メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
VS Code につなげますが、先に準備が必要です
先にパソコンへ Node.js を入れてください(1 回だけ)
このメッセージを VS Code のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの VS Code に MCP server Formio MCP を入れてください。順番に:1) node -v で Node.js があるか確認。なければ https://nodejs.org/en/download から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "servers": { "formio": { "type": "stdio", "command": "npx", "args": [ "-y", "@formio/mcp" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Formio MCP のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
node -vMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: 公式ダウンロードページで LTS 版と、クリックで進むインストーラーを選びます:Mac は .pkg、Windows は .msi。ダブルクリックして最後まで進めるだけで、curl コマンドは不要です
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: node -v
一度入れれば、Node.js を使うすべてのツールで使えます
Formio MCP を使って、私に何ができるか教えて、1 つやってみせて✓ VS Code が Formio MCP を使っていると言うか、回答に Formio MCP のツール名が出れば接続成功です
上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。
FORMIO_PROJECT_URL 任意であり、3つのプロジェクトソースの中で最も優先度が低いものです。作業ディレクトリから上位に辿って見つかったコミット済みの formio.json が最優先され、次に project_set が書き込むディレクトリごとのマッピング、最後にこの設定が使われます。它p… FORMIO_BASE_URL Optional, and usually unnecessary: the base URL is DERIVED from the project URL — https://api.form.io for a project on a form.io host, the parent path for a project addressed as a sub-directory — and…FORMIO_API_KEY Form.io project API key. Optional — applied only to the project FORMIO_PROJECT_URL names, so set FORMIO_PROJECT_URL beside it; any other project, and every project when it is omitted, uses the browse…FORMIO_LOGIN_FORM ブラウザベースのポータルログインフローで使用されるカスタムログインフォームの URL。デフォルトはデプロイ先のポータルログインフォームです。 FORMIO_AUTH_HOST ブラウザログインページがバインドするアドレス。省略可能で、デフォルトは 127.0.0.1 です。サーバーがコンテナーやリモートマシンで動作し、ログインページに外部からアクセスする必要がある場合は、FORMIO_AUTH_PORT とあわせて 0.0.0.0 に設定します。 FORMIO_AUTH_PORT ブラウザログインページの固定ポート。コンテナで公開できるようにするため(例:43117)。省略可能。正の整数であること。既定ではページは一時ポートを使用 FORMIO_AUTH_TIMEOUT ブラウザでのログインを待つ秒数。超過すると対処法を示したエラーで呼び出しが失敗します。省略可能で、2147483 以下の正の整数である必要があります。それ以外の値は無視されます。既定値は 900。 FORMIO_FORCE_BROWSER Set to 1 to attempt the browser login even where the server detects it cannot present one (CI, a container, a remote shell with no display). Use it when the login page is reachable from a browser els…FORMIO_REQUEST_TIMEOUT Form.io リクエストに応答がない場合に待機する秒数です。経過すると、URL を含むネットワークエラーで呼び出しが失敗します。任意項目で、2147483 以下の正の整数である必要があります。それ以外の値は無視されます。既定値は… FORMIO_INSECURE_TLS 1 に設定すると、設定済みデプロイメント(解決済みのプロジェクト URL およびベース URL のホスト)へのリクエストに限り TLS 証明書の検証をスキップします。その他のホストは通常どおり検証されます。ローカル開発用… 説明は自動翻訳です。変数名は原文のままです。迷ったら原文を確認してください。
メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください
JSON 設定は下の「開発者向け」にあります
Claude Code
claude mcp add --scope user formio -- npx -y @formio/mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"formio": {
"command": "npx",
"args": [
"-y",
"@formio/mcp"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"formio": {
"command": "npx",
"args": [
"-y",
"@formio/mcp"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"formio": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@formio/mcp"
]
}
}
}FORMIO_PROJECT_URL envFORMIO_BASE_URL envFORMIO_API_KEY 秘密 envFORMIO_LOGIN_FORM envFORMIO_AUTH_HOST envFORMIO_AUTH_PORT envFORMIO_AUTH_TIMEOUT 秘密 envFORMIO_FORCE_BROWSER envFORMIO_REQUEST_TIMEOUT envFORMIO_INSECURE_TLS env説明は自動翻訳です。変数名は原文のままです。迷ったら原文を確認してください。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
パソコン上で動かせるアプリ
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月16日にチェック
レジストリ名はドメイン form.io で確認済みです(レジストリがドメインの所有を確認しています)
コードの最終更新:10 日前
MITを使用
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
OSV.dev に @formio/mcp@1.0.1 の登録はありません
このバージョンのパッケージ本体のみ確認。すべての依存関係ではありません · 確認日 2026年11月15日
質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。
まだレビューはありません
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は10 日前、最新バージョン(1.0.1)がレジストリに届いたのは33 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Puter MCP, XcodeBuildMCP, Anki MCP Server, Sosumi, Zapier
同じカテゴリでほかの作者のもの。コマンドは確認済み。公式を先に、次にスター順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Puter MCP enables AI tools to interact with Puter: manage files, websites, workers, and more
XcodeBuildMCP provides tools for Xcode project management, simulator management, and app utilities.
MCP server for Anki flashcards: adaptive review, notes, media, and deck management via AnkiConnect.
Search and read Apple developer documentation, HIG, and WWDC transcripts as Markdown.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
The MCP server (@formio/mcp) is independently usable from any MCP-aware client. It speaks stdio: the client spawns it and owns stdin/stdout. There is no port to open and nothing to start by hand.
From a clone of this repo, the entry point is src/stdio.ts:
pnpm install
pnpm --filter @formio/mcp exec tsx src/stdio.ts
Run that way it waits for MCP traffic on stdin, which only tells you it starts cleanly — point a client at the command instead. A built package exposes the same entry point as the formio-mcp bin and as dist/stdio.js.
| Transport | Command | Compatible with |
|---|---|---|
| stdio | npx -y @formio/mcp@1.0.1 (or node dist/stdio.js) | Claude Code, Claude Desktop, Cursor, VS Code, Codex, Windsurf, Cline — anything that speaks MCP over stdio |
There is no HTTP or SSE transport. The server's only HTTP listener is the temporary browser-login page described under Authentication, which carries no MCP traffic.
The same stdio entry works everywhere, but the file it goes in and the key it goes under both vary by client — .mcp.json under mcpServers for Claude Code, .cursor/mcp.json under mcpServers for Cursor, .vscode/mcp.json under `servers` for VS Code, and .codex/config.toml as TOML for Codex. There is no universal .mcp.json. The root README carries the full per-client table; the JSON mcpServers shape is:
{
"mcpServers": { "formio-mcp": { "command": "npx", "args": ["-y", "@formio/mcp@1.0.1"], "env": { "FORMIO_PROJECT_URL": "https://your-project.form.io" } } } }
Every tool that reaches Form.io needs a project. It can come from a committed formio.json, from a per-directory mapping written by the project_set tool, or from FORMIO_PROJECT_URL in the environment — in that order, narrowest scope first, so a mapping overrides the environment and a committed file overrides both. FORMIO_BASE_URL is optional and usually unnecessary: the base URL is derived from the project URL's shape — https://api.form.io for a project on a form.io host, the parent path for a sub-directory-routed one — and is asked for only when it cannot be derived. No plugin manifest prompts for either value; every client records them per directory with project_set or a committed formio.json, and the .mcpb desktop bundle is the one exception because a desktop host has no working directory to interview in.
The server starts without either one, so a client can connect and list the tools before anything is configured — the project URL is only demanded at the point a tool needs it, and server_status works regardless.
The server ships a Dockerfile and is published to Docker Hub as formio/mcp for linux/amd64 and linux/arm64. The image speaks stdio, so the MCP client owns stdin/stdout and the container must be run with -i:
docker run -i --rm \
-e FORMIO_PROJECT_URL=https://your-project.form.io \ -e FORMIO_API_KEY=your-api-key \ formio/mcp
Wired into a client — the same entry as Connect a client, with command and args pointed at Docker — that becomes (shown in the JSON mcpServers shape; VS Code uses servers and Codex uses TOML, as noted there):
{
"mcpServers": { "formio-mcp": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "FORMIO_PROJECT_URL", "-e", "FORMIO_API_KEY", "formio/mcp" ], "env": { "FORMIO_PROJECT_URL": "https://your-project.form.io", "FORMIO_API_KEY": "your-api-key" } } } }
FORMIO_API_KEY is the recommended path — no browser, nothing interactive. Browser login also works if you publish the auth port; see Headless environments for both.
Two container-specific notes regardless of auth mode. Prefer the FORMIO_PROJECT_URL environment variable over the project_set tool: project_set persists its per-directory mapping to ~/.formio/projects.json, which lives inside the container and is discarded when it exits. And the cwd argument every tool takes refers to a path *inside* the container, not on your host — while a workspace root the client reports is a host path, so pass cwd explicitly.
To reuse a token across container runs, mount the cache directory — it must be writable, since the server rewrites the file when a token is refreshed or cleared:
-v "$HOME/.formio:/root/.formio"
Two things commonly bite when the deployment is not public:
Hostname resolution. A private hostname won't resolve inside the container. Map it explicitly:
docker run -i --rm --add-host forms.internal:10.0.0.5 \
-e FORMIO_BASE_URL=https://forms.internal \ -e FORMIO_PROJECT_URL=https://forms.internal/my-project \ -e FORMIO_API_KEY=your-api-key \ formio/mcp
Private or self-signed certificates. The image trusts only the standard CA bundle. A certificate your host trusts — via the macOS keychain, say — will still fail inside the container, surfacing as a bare fetch failed from the tool. There are two cases, and they behave differently:
*Issued by a private CA.* Mount the CA certificate and point Node at it:
-v /path/to/rootCA.pem:/certs/rootCA.pem:ro -e NODE_EXTRA_CA_CERTS=/certs/rootCA.pem
*A fully self-signed server certificate* — one where subject and issuer are identical and there is no CA:TRUE basic constraint. NODE_EXTRA_CA_CERTS cannot fix this, even if you mount the server's own certificate: Node requires a trust anchor to be a CA, and rejects the chain with DEPTH_ZERO_SELF_SIGNED_CERT. Confirm which case you have with:
echo | openssl s_client -connect your-host:443 -servername your-host 2>/dev/null \
| openssl x509 -noout -subject -issuer
If subject and issuer match, your only option is FORMIO_INSECURE_TLS=1, which skips certificate verification only for requests to the configured deployment; every other host the server reaches is still verified. Use it for local development only — never against a production deployment.
The build context is the repository root, not this directory: the image installs its dependencies from the repository's pnpm-lock.yaml with a frozen lockfile, so it carries exactly the versions the repository tested. Run this from the repository root:
docker build -f packages/mcp-server/Dockerfile -t formio-mcp .
The MCP Inspector connects to the server and lets you browse and call its tools by hand — useful for confirming a config works before wiring it into an agent. Start the web portal:
npx @modelcontextprotocol/inspector
It prints a URL carrying an auth token and opens a browser. The default port is 6274; if something already holds it, move both with CLIENT_PORT=6284 SERVER_PORT=6285.
Copy inspector-config.example.json to inspector-config.json, fill in your project URL and API key, and you have the file the next step asks for. That name is gitignored, so a filled-in copy cannot be committed by accident.
The same run, step by step:
1. Choose Add Servers → Import from client config.
2. Click "From file…". The dialog takes a client config file or a client installed on this machine — there is nowhere to paste JSON.
3. Select your `inspector-config.json`, and the server it defines is listed as new. Confirm with "Import 1 server".
4. Enable the server with the toggle on its card. It turns green and reports the negotiated protocol version once the container is up; the first connection is slower because Docker has to start it.
5. Open the Tools tab for the tools this server exposes. Every server lists all 25 — including project_set and project_get, which are registered for every client.
6. Pick a tool, fill in its arguments, and press "Execute Tool". The result appears in the middle pane and the JSON-RPC exchange in the right-hand Protocol panel. server_status touches no credentials and makes no Form.io request, so it isolates transport problems from auth problems; form_list below is a real call against a project.
Importing writes the server into the inspector's own catalog at ~/.mcp-inspector/mcp.json, so it is still there next time — remove it from the card when you are done. A tool that fails with a bare fetch failed is usually the deployment, not the server: see Self-hosted deployments for hostname resolution and certificate trust inside a container.
The bundled @formio/mcp server exposes these 25 tools. Skills prefer these over raw HTTP whenever an operation is covered.
| Tool | Purpose |
|---|---|
form_create | Create a new form. Use the formio-schema skill first to build the JSON definition. On a deployment licensed for revisions, revisions defaults to "original". |
form_get | Fetch a single form definition by _id or path (formIdOrPath). draft: true fetches its draft instead. |
form_list | List forms, one page at a time, filtered by type and by tags (forms carrying every tag given). Returns summary fields unless select asks for others. |
form_update | Update a form with its edited JSON. Call form_get first, edit with formio-schema, then update. draft: true saves a draft instead of the live form. |
form_publish | Publish a form's draft as its live version (formId, note). Fails with NO_DRAFT when the form has no draft. Needs the revisions licence (Security Module). |
form_revert | Restore a prior revision's components, tags, properties and display onto the live form (formId, version, note). Needs the revisions licence (Security Module). |
| form_revision_list | List a form's revision summaries (_id, _vid, _vnote, _vuser, created, `