
現状の MCP では大きなファイルを扱えない
目次
Google Workspace MCP サーバーがイマイチ期待外れだった
先日、Google Workspace MCP サーバーについてブログ記事を書きました。
Google Workspace MCP サーバーを使う&解説 – もばらぶエンジニアブログ
MCP で出来る事が増えるにつれ MCP が普及していくと思いますので Google Workspace の公式 MCP サーバーが出て嬉しかったのですが、ちょっと触ってみたらいまいち使えないことが分かりました。
理由は以下の2つです。
- 出来る事がそもそも少ない
- 大きなファイルの読み書きが「実質」出来ない
前者は Google Drive MCP サーバー固有の問題ですが、後者は MCP のプロトコル自体が抱える問題です。

なぜ MCP では大きなファイルを扱えないのか
なぜ大きなファイルを扱えないかと言うと、現状の MCP では、ファイルの読み書きをしようとするとファイルの中身が Base64 エンコードされて payload に全部乗ってくるからです。
それに対して、AI エージェントは MCP サーバーとのデータ送受信に際しサイズ制限を設けていて、大きな payload の場合にエラーとする事が多いです。結果として、せいぜい数 MB までのファイルしか扱えないという状態です。
前述の通り、これは本質的には MCP 自体の問題ですが、Claude Code などの AI エージェントのバグと考える人もいて、issue に登録されてたりします。
対応策
MCP 自体に大容量ファイルを扱う仕組みが出来るのを待つ
当然、世の中の人はこの問題に気づいていて、改善案が積極的に出されている状態のようです。ちょっと検索しただけですが、以下のようなものがありました。
- SEP-2631: File Objects and Transfer by caseychow-oai · Pull Request #2631 · modelcontextprotocol/modelcontextprotocol
- SEP-2532: Resource Streaming for Binary Content Delivery by patrick-rodgers · Pull Request #2532 · modelcontextprotocol/modelcontextprotocol
ただ、こうした方法がプロトコルに取り込まれ、各 MCP サーバーが対応するまでには半年くらいはかかりそうです。
presigned URL + HTTP PUT/GET (MCP サーバー開発者向け)
これは今から MCP サーバーを作る人向けの話です。
今作っている MCP gateway サービスではローカル – gateway 間のファイル送受信のための MCP サーバー/ツールを提供しているのですが、そこでは以下のような方式でこの制限を回避しています。
- MCP サーバーはファイルのアップロード/ダウンロード用の presigned URL を発行し、MCP クライアントに返す
- 実際のファイルの読み書きは MCP クライアントが HTTP PUT/GET を直接行う
presigned URL は、S3 を使ったウェブシステムなどで扱ったことがある人も多いかと思いますが、短時間だけ有効な URL を発行し、その URL を知っている人であれば誰でもファイルをアップロード/ダウンロードできるようにしておく、という仕組みです。それにより、MCP クライアントに対する新たな認証機構などは用意せずに、MCP クライアントにファイルのアップロード/ダウンロードをさせる事が出来ます。
ちなみに、この問題について AI エージェントとやりとりしてたら、以下の Google Drive 用野良 MCP サーバーは同じ方式を使って問題を回避していると教えてくれました。見てみたら、日本の会社が作っているんですね。
あと、今作っている MCP gateway サービスは以下です。もし良ければ使ってみてください。
Bloque – All Your MCPs, Centrally Managed.
まとめ
現状の MCP では大きなファイルを扱う事を想定しておらず、Google Drive MCP サーバーを使って Google Drive に大きなファイルを作成する、あるいは Drive 上の大きなファイルをダウンロードしようとすると、AI エージェント側での制限に引っかかってしまいます。
MCP のプロトコル自体の制限であり、現在はそれに対する改善案などが議論されているようです。そのうち MCP の仕様に大容量ファイルを扱う方法が取り入れられるものと思われますが、それまでは Google Drive に限らずファイルを扱う系の MCP サーバーでは大きなファイルを扱えないという制限が発生します。
MCP サーバーを作る側の開発者であれば、presigned URL + HTTP PUT/GET を使う事によりこの制限を回避できますので、検討してみてください。
コメントを残す