Nodaro ドキュメント
ドキュメントノードリファレンスモデルAI エージェント(MCP)開発者向けセルフホスティングリサーチ

セルフホスティング環境での MCP

セルフホスティング環境の Nodaro で MCP サーバーを有効にし、Claude、Cursor、ChatGPT などの MCP クライアントが、専用の MCP ホスト名から OAuth で環境を使えるようにします。

Nodaro の MCP サーバーを使うと、Claude、Cursor、Cline、Continue、Goose、ChatGPT などの AI クライアントが、ユーザーに代わってセルフホスティング環境のツールを使えるようになります。MCP サーバーは、デフォルトではオフです。有効にするには、MCP 専用のホスト名を用意してそのホスト名を API にルーティングし、2 つの変数を設定します。その後、ユーザーは自分のクライアントから OAuth で環境にログインします。

MCP の提供のしくみ

  • MCP は API が提供します。nodaro コンテナ内のポート 9000 で、パス /mcp に応答します。
  • ポート 3000 の Web サーバーは、MCP のリクエストを拒否します。アプリのメインのアドレスで /mcp にリクエストすると、405 とエラー wrong_mcp_host、そして本来のエンドポイントのアドレスが返されます。
  • そのため、MCP には専用のホスト名が必要です。mcp.nodaro.example.com のように、トラフィックが API に直接届くホスト名を用意します。
  • ログインはメインのドメインのままです。OAuth のディスカバリードキュメント /.well-known/oauth-authorization-server と同意画面は、PUBLIC_URL で提供されます。

MCP を有効にする

MCP のホスト名を API にルーティングする

mcp.<your-domain> の DNS レコードを作成し、自分のサーバーに解決されるようにします。CDN を経由してプロキシしないでください。プロキシを通すと、MCP が使う長時間の Server-Sent Events 接続が切断されます。

Compose ファイルは、API のポートを公開していません。nodaro サービスの下で、ループバックインターフェイスに公開します。

  nodaro:
    ports:
      - "3000:3000"
      - "127.0.0.1:9000:9000"

次に、リバースプロキシに MCP ホスト用の 2 つ目のサイトを追加し、127.0.0.1:3000 ではなく 127.0.0.1:9000 に転送するようにします。nginx の例と同じように、レスポンスのバッファリングはオフのままにします。

MCP のホスト名を、backend サービスのカスタムドメインとして追加します。

railway domain add mcp.your-domain.com --service backend

または、Railway のダッシュボードで Project › backend service › Settings › Domains › Add custom domain を開きます。その後、DNS プロバイダーで CNAME レコードを追加します。

変数を設定する

MCP_ENABLED=true                              # required; the default is off
MCP_PUBLIC_URL=https://mcp.your-domain.com    # the hostname from step 1

Compose スタックでは、どちらも nodaro サービスの environment: の下に追加します。Compose ファイルは、これらを .env から渡さないためです。その後、docker compose -f docker-compose.community.yml up -d を実行します。

MCP_PUBLIC_URL は、ディスカバリーエンドポイントが保護されたリソース(RFC 9728)の識別子として公開する値で、ツールが返すアップロードリンクのベースにもなります。設定しないと、環境は Nodaro Cloud の MCP ホストを公開してしまいます。サブドメインではなくメインのドメインで MCP を提供する場合は、PUBLIC_URL と同じ値を設定します。その場合も、/mcp へのリクエストは API のポートに直接届く必要があります。

ディスカバリーエンドポイントを確認する

curl https://mcp.your-domain.com/.well-known/oauth-protected-resource
curl https://your-domain.com/.well-known/oauth-authorization-server

どちらも、ステータス 200 で JSON を返す必要があります。

クライアントにコネクタを追加する

MCP のエンドポイントは https://mcp.your-domain.com/mcp です。Claude では、Settings(設定)› Connectors(コネクタ)› Add custom connector(カスタムコネクタを追加)を開き、この URL を入力します。ほかのクライアントについては、クライアントを接続を参照し、Nodaro Cloud の URL の代わりに自分の MCP の URL を使ってください。

登録できるクライアント

MCP クライアントは、OAuth でログインします。対応しているクライアントは、動的クライアント登録(RFC 7591)によって、自分自身を環境に登録します。登録は 2 つの変数で制御でき、ほとんどの環境ではデフォルトのままで問題ありません。

変数デフォルト説明
MCP_DYNAMIC_REGISTRATIONallowlistallowlist は、MCP_DCR_ALLOWLIST にあるクライアント名だけを受け付けます。open は、任意のクライアントを受け付けます。off は、動的登録を無効にします。
MCP_DCR_ALLOWLIST既知の 14 のクライアントallowlist モードで受け付けるクライアント名を、カンマ区切りで指定します。

デフォルトの許可リストは、Claude、Claude Code、Cursor、Cline、Continue、Goose、ChatGPT、OpenAI、Lovable、Gemini、Gemini CLI、Codex、MCP Inspector、mcp-inspector です。独自のクライアントを追加するには、リスト全体を設定します。

MCP_DCR_ALLOWLIST=Claude,Cursor,Cline,Continue,Goose,YourCustomClient

推奨のモードは allowlist です。

クライアントでできること

MCP サーバーには、画像、動画、音声、キャラクター、ロケーション、オブジェクトの生成ツールと、ギャラリー、ワークフロー、アプリ、保存したコンポーネント、モデルのためのツールがあります。各ユーザーは、環境上の自分のアカウントとして操作します。MCP ツールのリファレンスと、MCP のトラブルシューティングを参照してください。

よくある質問

最終更新

目次