ChatGPTにローカルPCのファイルを読み書きさせる(MCP + Secure MCP Tunnel)

当記事内にアフィリエイトリンクを含みます
  • URLをコピーしました!

ChatGPTと相談しながらアプリの仕様を固め、CodexやClaude Codeで実装する進め方を、非エンジニア向けに紹介します。

そのために、ChatGPTから自分のパソコンにある仕様書やコードを直接読み書きできるようにし、CodexやClaude Codeとの作業をつなぎます。

この記事では、これを実現するMCPとSecure MCP Tunnelの仕組みと、導入の流れを解説します。MCPはAIと外部のファイルやツールをつなぐ仕組みで、Secure MCP Tunnelなら、ルーターのポートを開放せずに接続できます。

目次

1. ChatGPTとの相談と実装をつなぐ

私の場合、まずChatGPTと相談しながら、何を作りたいのかを整理しています。

ある程度まとまったらCodexやClaude Codeに実装を任せ、実装して分かったことがあれば、再びChatGPTとの相談へ戻ります。

この分け方には、ChatGPTで相談した分がCodex側のトークン利用枠を消費しないという利点もあります。ChatGPTを相談に使いながら、Codexの利用枠を実装のために残せます。

※サブスクリプションプラン内で使う場合、Claude.aiとClaude Codeは共通のトークン利用枠を使うため、Claudeでは同じ節約にはなりません

一方で、相談と実装を分けると、仕様書やコードをそのたびにコピーしたり、ファイルを添付したりする手間が生じます。

そこで、MCPとOpenAIのSecure MCP Tunnelを使い、ChatGPTから、許可した範囲の仕様書やコードを直接読み書きできるようにしました。

この記事では、その仕組みと、実際に使って分かったことを紹介します。接続や実装でつまずいた技術的な話は、末尾へまとめました。

2. ChatGPTとローカルPCをつなぐ仕組み

ChatGPTから、私のWindowsパソコンにある開発中のコードや設定ファイルを読み書きするには、両者をインターネット経由でつなぐ必要があります。

そこで使ったのが、OpenAIが提供しているSecure MCP Tunnelというサービスです。自宅のルーターでポートを開放するのではなく、自分のパソコン側からOpenAIへ接続して、外部へポートを公開せずに通信経路を確立します。

全体の仕組みは、次のようになっています。

ChatGPTとWindowsパソコンをつなぐ仕組みの図。インターネット上のChatGPTには「repo-mcp-windows」というプラグインを作成してあり、そこから自分のWindowsパソコンで動くtunnel-client.exeへSecure MCP Tunnelで指示と結果がやり取りされる。接続はWindows側から始まるためルーターのポート開放は不要。tunnel-client.exeが自作MCPサーバーを起動し、そのMCPサーバーが開発中のコードを読み取り専用で、共有作業場ai-sharedを読み書き可能で扱う

tunnel-client.exeがChatGPTと自分のパソコンの間をつなぎ、MCPサーバーが実際のファイル操作を担当します。以下、順に説明します。

まず、OpenAI Platformの管理画面で、固有のトンネルID(tunnel_a1b2c3d4…)を作成します。

自分のパソコンでは、このIDを指定してtunnel-client.exeを起動します。これで通信経路が確立します。ChatGPT側では「プラグイン」を作成し、同じIDを指定します。両方が同じIDを指すことで、ChatGPTと自分のパソコンが結びつきます。私はプラグインにrepo-mcp-windowsという名前を付けました。

たとえば、ChatGPTに「このフォルダの中に何があるか教えて」と頼むと、ChatGPTはこのプラグインを通じて、「フォルダの中身を一覧にして」といった具体的な指示を、自分のパソコンへ向けて送ります。その指示を実際に運ぶのが、tunnel-client.exeです。

ただし、tunnel-client.exe自身がファイルを探したり、内容を読んだりするわけではありません。実際のファイル操作は、tunnel-client.exeが内部で起動する別のプログラムが担当します。

これは、Claude Codeに作ってもらった小さなPythonプログラムです。MCPサーバー(Model Context Protocol Server)と呼ばれるもので、MCPは、ChatGPTのようなAIと外部のプログラムがやり取りするための共通規格です。

ここまでが仕組みの全体像です。次章では、MCPサーバーが何をするのかを説明します。

3. MCPサーバーの役割と操作範囲

MCPサーバーは、AIからの依頼を受けて実際の作業を行うプログラムです。ファイル操作用なら、ファイルの一覧を調べる、内容を読む、決められた場所へ書き出す、といった機能を持ちます。公式のFilesystem MCP Serverなど定番のものがあり、そのまま使ってもかまいません。

大事なのは、ChatGPTに何を見せ、どこまで操作させるかを決めるのが、このMCPサーバーだという点です。Secure MCP Tunnelの側に、こうした制限が備わっているわけではありません。

Secure MCP Tunnelが安全にするのは通信経路です。ChatGPTが操作できるファイルの範囲は、MCPサーバー側で制限します。

私の場合は、小規模なMCPサーバーを自作する練習も兼ねて、必要な機能だけを持つものをClaude Codeに作らせました。仕様は次のようになっています。

  • ChatGPTから読めるのは、自分で登録した開発プロジェクトのうち、原則としてGitで追跡されているファイルだけ
  • 元のリポジトリは読み取り専用
  • 書き込み先は、別に用意した共有作業場ai-sharedだけ(Git管理の有無を問わず読み書きできる)
  • 任意のコマンド実行、ファイル削除、git pushといった強い機能は用意しない

PC全体の操作を渡さずに、必要なやり取りだけができる状態です。

4. 実際の運用

こうして操作範囲を限定したうえで、実際には次の二つの流れで使っています。

一つは、ChatGPTとの壁打ちから始める流れです。

たとえば、「こんなアプリを作りたいので、仕様を一緒に整理してほしい」と相談します。ブログ記事なら、「こんなテーマの記事を書きたい」と伝え、構成や論旨を会話しながら固めていきます。

ある程度まとまったら、ChatGPTに仕様書や記事案を、共有作業場ai-sharedへ書き出してもらいます。その後はCodexやClaude Codeがファイルを読み、実装や原稿への反映を引き継ぎます。

もう一つは、すでにある程度できているものを、ChatGPTにレビューしてもらう流れです。

アプリのプロトタイプやブログ記事の原稿を指定し、「現在の実装や内容を読んでレビューしてほしい」と頼みます。その際、「必要なら、このファイル以外の関連ファイルも自分で探して読んで」と伝えれば、周辺の仕様書や設定ファイルも含めて確認させられます。

ChatGPTは、レビュー結果や修正案をai-sharedへ書き出します。それをCodexやClaude Codeが読み、コードや原稿へ反映します。

このように、ChatGPTから相談を始める場合にも、すでにある成果物をChatGPTへ持ち込む場合にも、同じローカルファイルを使って作業を往復できます。

5. 必要な環境

  • Windows 11
  • Python 3系(MCPサーバーを動かす)
  • ChatGPT(カスタムMCPを利用できる環境。筆者はPlusで動作確認済み)
  • OpenAI Platformのアカウント(ChatGPTとは別の開発者向け管理画面。トンネルの作成とAPIキーの発行に使う)

※私はChatGPT PlusとClaude Proを契約していますが、この仕組みの導入にClaude Proは必須ではありません。

手順はWindows前提で書きますが、仕組み自体はOSを問いません。

6. アカウント設定とトンネルの作成

ここからは、OpenAIとChatGPT側で行う4つの設定です。

1. 開発者モードを有効にする

自分のパソコンで動かすMCPサーバーを登録するには、ChatGPTの設定にある「セキュリティとログイン」または「プラグイン」から、「開発者モード」をオンにします。

2. トンネルを作成してIDを控える

OpenAI PlatformのTunnels管理画面でトンネルを作成すると、tunnel_で始まるIDが発行されます。このIDをWindows側とChatGPT側の両方で指定するので、控えておきます。

OpenAI PlatformのTunnels管理画面。左のメニューでTunnelsが選ばれ、作成済みのトンネルが1件表示されている。ID列の値は「tunnel_」で始まる。右上に「Create tunnel」ボタンがある(トンネル名・ID・作成者はマスク済み)

3. APIキーを発行する

WindowsパソコンからOpenAIへ接続するために、API keysの画面でAPIキーを発行します。トンネルIDが接続先を指す「住所」なら、APIキーはそこを使う権限を証明する「鍵」です。

種別はRestrictedにし、権限はTunnels: Read + Useだけを許可します。

APIキーは別ファイルに保存し、チャット欄やスクリプトには直接記さないようにします。

4. ChatGPTにプラグインを作成する

ChatGPTの設定から「プラグイン」を開いて新規作成し、接続方法を「トンネル」へ切り替えます。

「利用可能なトンネル」の欄は空のままですが、そのまま「作成する」を押すと、「トンネル ID」の入力欄が現れます。

ChatGPTの「新規プラグイン」画面を簡略化した図。上から順に、名前の欄(記入例は「カスタム ツール」)、接続の切り替え(「サーバーの URL」と「トンネル」のうち「トンネル」が選択されている)、トンネル IDの欄(記入例として「tunnel_0123456789abcdef0123456789abcdef」が薄く表示され、赤枠と「トンネル ID は必須です」の赤字が付いている)、認証の欄(「認証なし」を選択)、「注意:カスタム MCP サーバーはリスクを引き起こします」という警告とチェック済みの「理解したうえで、続行します」、右下の「作成する」ボタンが並ぶ

控えておいたIDを貼り付け、認証は「認証なし」、警告への同意にチェックを入れて、もう一度「作成する」を押します。

あとはWindows側の準備を済ませれば、ChatGPTから使えるようになります。

7. Windows側の準備と接続確認

Windows側では、次のような準備が必要です。

tunnel-client.exeは、OpenAI PlatformのTunnels管理画面からダウンロードできます(DL元はGitHub)。パソコンに置いたら、次のようなコマンドで、トンネルID・APIキー・MCPサーバーの起動方法をまとめて設定し、そのまま起動します。

tunnel-client runtimes connect --alias maruq-tunnel --tunnel-id tunnel_0123456789abcdef0123456789abcdef --mcp-command "python.exe -u C:/mcp/server.py" --runtime-api-key file:C:/mcp/api-key.txt
  • --alias: このトンネルに自分で付ける呼び名です(ここではmaruq-tunnel)。あとで状態確認や停止をするとき、どのトンネルを指すかをこの名前で区別します
  • --tunnel-id: 控えておいたトンネルID
  • --mcp-command: 3章で説明したMCPサーバー(既製のFilesystem MCP Serverでも、自作したものでも)を起動するコマンド
  • --runtime-api-key: APIキーを保存したファイルのパスをfile:に続けて指定します。この起動コマンドをps1などのスクリプトにしておくときも、キーをハードコードせずに済みます

起動できているかは、次のコマンドで確認できます。

tunnel-client runtimes status maruq-tunnel

起動している間だけChatGPTから接続できるので、パソコンを再起動したりtunnel-client.exeを終了したりすると接続も切れます。再度使うときは、もう一度runtimes connectを実行します。停止したいときはtunnel-client runtimes stop maruq-tunnelです。私はこのコマンドをps1スクリプトにまとめ、起動自体もAIエージェントに任せています。

起動を確認できたら、ChatGPTに何かファイルを読んでもらい、実際に応答が返ってくるかで疎通を確認します。

正確なオプションはtunnel-client --helpやAIに確認しながら進めるのが確実です。

8. まとめ

ChatGPTを相談役、CodexやClaude Codeを実装役として使い分けると、その間のファイル受け渡しが新たな手間になります。

MCPとSecure MCP Tunnelは、その手間を減らすための仕組みです。操作範囲を必要な場所だけに限定しながら、ChatGPTとの対話をローカルの仕様書やコードへ直接つなげられます。

AIごとの役割分担を変えずに、相談と実装を一つの作業の流れにできることが、この構成のいちばん大きな利点です。

おまけ:接続と実装で遭遇した問題

以下は、同じ構成を自作する人向けの技術メモです。

  • tunnel-client v0.0.10のruntime起動時、Windowsパスのバックスラッシュがエスケープされ、OnStart hook failedで即時停止。起動コマンドをスラッシュ区切りへ変更
  • git ls-filesの子プロセスがMCPのstdinを継承し、Windowsで終了待ちのままハング。Git起動時に標準入力を閉じて解消
  • Git出力のデコードがWindows既定のcp932となり、日本語ファイル名で失敗。UTF-8を明示
  • 起動元コンソールを閉じると常駐プロセスも終了。独立コンソールで起動するラッパーを使用
  • Git追跡ファイル限定処理の実装漏れにより、初期状態では.venvやgitignore対象も列挙された。git ls-files基準へ変更

参考URL

  • OpenAI Platform(トンネル作成・APIキー発行) — https://platform.openai.com/
  • Secure MCP Tunnel 公式ドキュメント — https://developers.openai.com/api/docs/guides/secure-mcp-tunnels
  • Model Context Protocol 公式サイト — https://modelcontextprotocol.io/

この記事で書いたような、対話を重ねながら少しずつ仕様を固めていく進め方は、「progressive specification」として研究でも報告されています。

  • Tang et al. “Programming by Chat: A Large-Scale Behavioral Analysis of 11,579 Real-World AI-Assisted IDE Sessions” — https://arxiv.org/abs/2604.00436
よかったらシェアしてね!
  • URLをコピーしました!
目次