AI Tools
チュートリアル12 分2026年8月27日執筆:AIGCDev

DevSpaceでChatGPT ProのWeb版からローカルプロジェクトにアクセスする方法

ChatGPT ProのWeb版から、パソコン上のプロジェクトフォルダーを直接開くことはできません。ローカルコードにアクセスさせるには、パソコン上でDevSpaceを動かし、対象プロジェクトだけをMCPワークスペースとして公開します。さらにTailscale FunnelでChatGPTから接続できる公開HTTPS URLを用意します。DevSpaceとの接続は、SettingsでAppを作成するのではなく、ChatGPT Web版のPluginsページから追加します。

最短の手順は、DevSpaceのProject rootsでアクセス範囲を制限し、ローカルの127.0.0.1:7676をFunnelでHTTPS URLに変換して、ChatGPTのDeveloper modeを有効にした後、Pluginsページへ完全な/mcp URLを入力することです。2026年8月27日時点で、OpenAIの公式接続ガイドは、Developer modeの利用可否がアカウントやワークスペースのポリシーによって異なると説明しています。この項目が表示されないアカウントでは、現時点でこの方法を利用できません。

以下はmacOSとDevSpace 1.0.8を使った手順です。最初はテスト用リポジトリを使い、シークレット、顧客データ、本番設定を含むプロジェクトは公開しないでください。

接続の流れ

ChatGPT Pro Web版
        │
        │ HTTPS + OAuth
        ▼
https://<device>.<tailnet>.ts.net/mcp
        │
        │ Tailscale Funnel
        ▼
http://127.0.0.1:7676/mcp
        │
        │ DevSpace
        ▼
/Users/yourname/Projects/example-app

DevSpaceはローカルの127.0.0.1:7676だけで待ち受け、Funnelが公開HTTPSの入口を提供します。ここでTailscale Serveを代わりに使うことはできません。Serveはtailnet内のデバイスにしか公開されませんが、Funnelはインターネットから接続できるURLを提供します。違いはTailscale Funnelのドキュメントで確認できます。

必要なもの

DevSpace 1.0.8のSetup Guideに従い、次の環境を用意します。

  • Node.js >=22.19 <27
  • npm、Git、Bash
  • ログイン済みのTailscale CLI
  • Developer modeが表示されるChatGPT ProのWeb版
  • 公開するプロジェクトの絶対パス

2026年8月27日時点で、TailscaleはFunnelをbetaとして提供しており、tailnetでMagicDNSが有効になっていることを要件としています。初回承認では有効なHTTPS証明書の作成とFunnelのノード属性追加が行われますが、MagicDNSは事前に有効化しておく必要があります。詳しくはFunnelのドキュメントを参照してください。

Funnelの公式な最低バージョンはTailscale 1.38.3ですが、Tailscale 1.52でServeとFunnelのCLI構文が変更されています。以下のコマンドは1.52以降の構文です。クライアントがそれより古い場合は、先に現在の安定版へ更新してください。構文の変更はFunnel CLIのドキュメントで確認できます。

最初に各コマンドを確認します。

node --version
git --version
bash --version
tailscale version

初回は、機密情報を含まないテスト用リポジトリを用意してください。許可するディレクトリはプロジェクト自体に限定し、ホームディレクトリやProjectsフォルダー全体を指定しないでください。

手順1:Tailscale Funnelを起動する

DevSpaceはデフォルトで127.0.0.1:7676を使用します。Funnelからこのアドレスへ転送します。

tailscale funnel --bg http://127.0.0.1:7676

この端末で初めてFunnelを有効にする場合、ターミナルにTailscale管理画面のリンクが表示されます。リンクを開いて、この端末でのFunnel利用を許可してから状態を確認します。

tailscale funnel status

コマンドを実行すると、次のような公開URLが表示されます。

https://&#x3C;device>.&#x3C;tailnet>.ts.net

この時点ではoriginだけを控え、末尾に/mcpを付けません。--bgを指定するとFunnelの設定がバックグラウンドで有効になります。詳細はFunnel CLIのドキュメントを参照してください。

手順2:DevSpaceを初期化する

次のコマンドを実行します。

npx @waishnav/[email protected] init

対話形式の設定では、次の4点を確認します。

  1. クライアントにChatGPTを選びます。
  2. Hostは127.0.0.1、portは7676のままにします。
  3. Project rootsには対象プロジェクトの絶対パスだけを入力します。例:/Users/yourname/Projects/example-app。
  4. Public base URLにはFunnelのoriginを入力します。例:https://<device>.<tailnet>.ts.net。ここでは/mcpを付けません。

初期化時にOwner passwordが生成されます。パスワードマネージャーへ保存し、後ほどDevSpaceのOAuth承認ページだけで入力してください。

設定後に診断を実行します。

npx @waishnav/[email protected] doctor

DevSpace 1.0.8の通常設定は~/.devspace/config.json、認証情報は~/.devspace/auth.jsonに保存されます。後者をリポジトリへコミットしたり、スクリーンショットやトラブルシューティングのログへ載せたりしないでください。

手順3:サービスを起動してエンドポイントを確認する

1つ目のターミナルでDevSpaceを起動します。

npx @waishnav/[email protected] serve

そのまま起動しておき、別のターミナルで次を実行します。

curl -i http://127.0.0.1:7676/healthz
curl -i https://&#x3C;device>.&#x3C;tailnet>.ts.net/healthz
curl -i https://&#x3C;device>.&#x3C;tailnet>.ts.net/mcp
curl -i https://&#x3C;device>.&#x3C;tailnet>.ts.net/.well-known/oauth-protected-resource/mcp

期待する結果は次のとおりです。

確認項目 期待する結果
ローカルの/healthz 200
公開側の/healthz 200
未認証の公開/mcp 401
OAuth protected-resourceメタデータ 200とJSON

/mcpの401は正常です。匿名リクエストからツールを直接呼び出せないことを示します。OAuth discoveryのURLは、DevSpace 1.0.8のConfigurationドキュメントで確認できます。

手順4:ChatGPTのPluginsページから接続を追加する

この手順では2つのページを使います。SettingsではDeveloper modeを有効にするだけです。DevSpaceとの接続はChatGPT Web版のPluginsページから追加します。

  1. ChatGPT Web版でSettings → Security and loginを開き、Developer modeを有効にします。
  2. ChatGPT Pluginsページを開きます。
  3. プラスボタンを押してPluginを作成します。
  4. 名前と説明を入力し、Connectionに完全なURL https://<device>.<tailnet>.ts.net/mcpを入力します。
  5. 作成後、検出されたツール名と説明がDevSpaceのものか確認します。
  6. 画面の案内に従ってOAuth認証を完了し、DevSpaceの承認ページで保存しておいたOwner passwordを入力します。

これはOpenAIの現行ドキュメントと同じ接続順です。詳しくはConnect and test your pluginを参照してください。Developer modeがない場合や、Pluginsページに追加ボタンがない場合は、アカウントとワークスペースのポリシーを確認してください。DevSpaceの認証を無効にして回避してはいけません。

手順5:新しいチャットでプロジェクトを開く

新しいChatGPTのチャットを作成し、ツールメニューから先ほどのDevSpace接続を追加します。最初の依頼ではChatGPTにパスを推測させず、絶対パスを指定してください。

DevSpaceを使って、次のローカルワークスペースを開いてください。
/Users/yourname/Projects/example-app

まずは読み取りだけを行い、ファイルを変更せず、副作用のあるコマンドも実行しないでください。
ルートにAGENTS.mdまたはCLAUDE.mdがあれば先に読み、その後、次を教えてください。
1. プロジェクトの技術スタック
2. 起動コマンドとテストコマンド
3. 現在のgit status
4. 実際に読んだファイル

DevSpaceは最初にopen_workspaceでプロジェクトを開き、同じチャットでは返されたworkspaceIdを再利用します。ルートのAGENTS.mdまたはCLAUDE.mdも、ワークスペースを開いた後にツールコンテキストとして返されます。詳しくはDevSpace 1.0.8のChatGPT coding workflowを参照してください。

使わないときは公開を止める

DevSpaceはローカル開発マシンへのリモートアクセスを提供します。少なくとも次の境界を守ってください。

  • Project rootsには、現在必要なプロジェクトだけを指定します。
  • Owner passwordはDevSpaceのOAuthページだけで入力し、チャットメッセージには書きません。
  • Pluginsページで、ChatGPTが実際に検出したツールを確認します。利用できる機能はアカウントやワークスペースのポリシーに従います。
  • Project roots内のシンボリックリンクも確認します。DevSpaceの#45では、ファイルツールがシンボリックリンクを通じて許可範囲外へアクセスできる問題が報告されています。1.0.8のパス判定もリンク先の実体を解決せず、パス文字列を比較しています。許可したディレクトリ内に、機密性の高い場所を指すリンクを置かないでください。
  • allowedRootsはOSのサンドボックスではありません。Shellコマンドはローカルユーザーの権限で実行されます。機密性の高いリポジトリには、別のOSユーザー、コンテナ、または専用の開発マシンを使ってください。

使い終わったらDevSpaceを停止し、Funnelも無効にします。

tailscale funnel --https=443 off

ディレクトリ、OAuth、ローカルコマンドの具体的な境界は、DevSpace 1.0.8のSecurity Modelで確認できます。

接続できないときの確認順

症状 最初に確認すること
doctorが失敗する Node、Git、Bash、Project roots、publicBaseUrl
ローカルの/healthzが失敗する DevSpaceが起動中か、port 7676がほかのプロセスに使われていないか
ローカルは200だが、公開側がTLS/SSLで失敗する Funnelの状態、DNS、HTTPS証明書、Tailscaleクライアントのバージョン。更新後にFunnelコマンドを再実行する
未認証の/mcpが401にならない 接続作業を止め、OAuthと認証設定を確認する
OAuthのURLがlocalhostを指している publicBaseUrlを公開originへ変更し、DevSpaceを再起動して、Pluginsページで接続を更新してから新しいチャットを作る
DevSpaceがプロジェクトパスを拒否する プロンプトが絶対パスを使っているか、そのパスがProject roots内にあるか
Pluginは作成済みだが、新しいチャットにツールが表示されない ツールメニューから接続を追加する。それでも表示されなければ、接続の詳細でRefreshを実行してから新しいチャットを作る

2026年8月26日、当サイトのmacOS環境では、古いTailscaleクライアントでローカルのヘルスチェックは成功したものの、公開URLへの接続がTLS段階で失敗しました。Tailscaleを1.102.3へ更新し、tailscale funnel --bg http://127.0.0.1:7676をもう一度実行すると、公開側の/healthzが200を返すようになりました。

1.102.3は今回のトラブルシューティングで接続できたバージョンであり、必須バージョンではありません。同じ症状が出た場合は、まず現在の安定版へ更新し、ローカルサービス → Funnel → OAuth → ChatGPTの順に確認してください。

接続できたかどうかは、まずPluginsページにDevSpaceのツールが表示され、新しいチャットから指定した絶対パスを開けることを確認します。次に、Project roots外の隣接ディレクトリを絶対パスで指定し、DevSpaceが拒否することを確認します。最後の確認で分かるのは通常のパス指定に対する設定だけです。シンボリックリンクやShell権限は検証できず、サンドボックスが成立した証明にはなりません。

よくある質問

OpenAI API Keyは必要ですか?

この構成ではOpenAI Platform API Keyを設定する必要はありません。ChatGPTアカウントでログインし、DevSpace OAuthでローカルMCP接続を承認します。DevSpaceの初期化時に生成されるOwner passwordは、DevSpace自身の承認ページだけで使用します。

localhostを指定できないのはなぜですか?

ChatGPTはクラウドで動作するため、パソコン上の127.0.0.1へ接続できません。OpenAIは、MCPサーバーに公開HTTPS URLまたはSecure MCP Tunnelを使用するよう求めています。この手順ではTailscale FunnelでHTTPS URLを用意します。詳しくはOpenAIのMCP接続ガイドを参照してください。

Tailscale ServeをFunnelの代わりに使えますか?

この接続方法では代用できません。Serveはtailnet内のデバイスだけにローカルサービスを公開しますが、ChatGPTのクラウドはtailnetの外にあります。公開HTTPS URLを提供するにはFunnelが必要です。

Pluginを作成したのに、新しいチャットにDevSpaceが表示されません

まず、新しいチャットのツールメニューからDevSpace接続を追加します。それでも表示されない場合は、Pluginsページで接続を開き、/mcp URLを確認してRefreshを実行します。ツールとメタデータが更新されたことを確認してから、新しいチャットを作成してください。更新しても直らない場合だけ、接続を削除して作り直します。

ChatGPTからローカルファイルを変更できますか?

DevSpace 1.0.8のデフォルトのminimalモードでは、open_workspace、read、write、edit、bashが提供されるため、接続自体はファイル変更とコマンド実行に対応します。ChatGPTが実際にこれらのツールを呼び出せるかどうかは、アカウント、ワークスペースのポリシー、確認フローによって異なります。初回は読み取り専用のプロンプトでディレクトリ制限を確認してください。書き込みやコマンド実行を許可する場合は、allowedRootsがShellのサンドボックスではないことを前提に、別のOSユーザー、コンテナ、または専用の開発マシンで機密プロジェクトを分離してください。

chatgptdevspacemcplocal-developmenttailscale