Supabase Docs over SSH で AI エージェントにドキュメントを渡す

はじめに

Xcode MCP の DocumentationSearch を使っていると、AI エージェントが開発中にドキュメントをシームレスに参照できる体験がとても快適だと感じます。オンデバイスのセマンティック検索で、ネットワーク通信なしに Apple の API ドキュメントを即座に引けます。「この API の使い方なんだっけ」と聞くだけで、エージェントがドキュメントを引っ張ってきて回答してくれます。

先日、Supabase Docs over SSH という記事を見かけて、DocumentationSearch とはまた別の体験ができそうだと思い試してみました。grepfind でドキュメントを絞り込めるという点で、コンテキスト効率の面で異なるメリットがありそうです。

Supabase Docs over SSH とは

Supabase が公開した、SSH 経由で Supabase の公式ドキュメントをターミナルから検索・閲覧できるサービスです。ssh supabase.sh を実行するだけで接続でき、/supabase/docs/ 以下に Markdown 形式でドキュメントが配置されています。grepfindcat といったおなじみのコマンドで検索・閲覧ができます。

ポイントは、実際の Supabase プロジェクトへのアクセスは一切発生しないことです。あくまで読み取り専用のドキュメントサーバーで、中身は JavaScript 製のサンドボックス bash エミュレータになっています。認証も不要で、SSH の公開鍵があればすぐに使えます。

実際に試してみた

agents コマンドで AI 向け設定を取得

まず ssh supabase.sh agents を実行してみます。

ssh supabase.sh agents

すると、以下のような AI エージェント向けの設定テキストが出力されます。

## Supabase Docs

Before working on a Supabase feature, check the docs via `ssh supabase.sh <command>`.

# Search for a topic
ssh supabase.sh grep -rl 'auth' /supabase/docs/

# Read a specific guide
ssh supabase.sh cat /supabase/docs/guides/auth/passwords.md

# Find all guides in a section
ssh supabase.sh find /supabase/docs/guides/database -name '*.md'

# Search with context
ssh supabase.sh grep -r 'RLS' /supabase/docs/guides/auth --include='*.md' -l

この出力をそのまま CLAUDE.md に貼り付ければ、エージェントが Supabase ドキュメントを参照するための手順を把握できます。

ドキュメントの検索

grep でドキュメント内を横断検索できます。たとえば RLS に関するドキュメントを探したいときはこんな感じです。

ssh supabase.sh grep -rl 'RLS' /supabase/docs/

RLS について書かれたファイルの一覧が返ってきます。全文検索のように使えるので、どのドキュメントに目的の情報があるか素早く特定できます。

特定ドキュメントの閲覧

見たいファイルがわかったら cat で中身を表示します。

ssh supabase.sh cat /supabase/docs/guides/auth/passwords.md

Markdown がそのまま出力されるので、ターミナル上でも十分読めます。AI エージェントに渡す場合はむしろ Markdown のほうが都合がよいです。

コンテキスト効率がとても良い

実際に Claude Code で使ってみて感じたのが、SSH + grep のコンテキスト効率の良さです。

たとえば RLS の CREATE POLICY の書き方を調べたいとき、Web ページ全体を取得すると HTML やナビゲーション、CSS なども含まれて大量のコンテキストを消費します。cat でファイル全体を読んでも、目的と関係ないセクションまで含まれます。一方で grep -A 5 'CREATE POLICY' なら、必要な箇所とその前後数行だけが返ってきます。

AI エージェントのコンテキストウィンドウは有限なので、この差は大きいです。grep でピンポイントに必要な情報だけを取得できるのは、SSH ならではの強みだと感じました。

CLAUDE.md への追記

ssh supabase.sh agents の出力を CLAUDE.md に追記すると、Claude Code が Supabase のドキュメントを自動的に参照できるようになります。

これだけで、Claude Code が「RLS の設定方法を教えて」と聞かれたときに ssh supabase.sh 経由でドキュメントを検索し、内容を踏まえた回答を返せるようになります。Web ブラウザを開いてドキュメントを探す手間がなくなるのは大きいです。

Supabase Local の UI がよくできている

SSH ドキュメントを試すついでに、改めて Supabase Local(supabase start で起動するローカル開発環境)の Studio UI を触ってみました。

Table Editor、SQL Editor、Auth のユーザー管理など、本番の Supabase Dashboard とほぼ同じ UI が localhost:54323 で動きます。ローカルで覚えた操作がそのまま本番でも使えるので、環境の切り替えで迷うことがありません。

Supabase Local の SQL Editor。本番と同じ UI でクエリを実行し、保存されたノートデータを確認できる

ただし、本番と同じ UI であるがゆえの注意点もあります。見た目が同じなので、SQL Editor で気軽にクエリを実行しがちですが、今自分がローカルと本番のどちらに接続しているかは常に意識する必要があります。URL が localhost:54323 であることを確認する癖をつけておかないと、本番環境で意図しないクエリを実行してしまうリスクがありそうに感じました。

Xcode MCP DocumentationSearch との比較

ここで改めて、最初のモチベーションだった Xcode MCP の DocumentationSearch と比較してみます。

DocumentationSearch は完全にオンデバイスで動作し、ネットワーク通信は発生しません。実際に nettop で監視しながら検索を実行してみましたが、Xcode からの通信はゼロでした。セマンティック検索で関連ドキュメントを自動的に複数返却してくれるため、何を探すか明確でなくても使えます。ただし、返却されるドキュメント量が多く、コンテキスト消費は大きくなります。必要な箇所だけに絞り込むことができません。

一方、Supabase Docs over SSH は毎回 SSH 接続が発生しますが、grep で必要な行だけをピンポイントで取得できるためコンテキスト効率がとても良いです。何を検索すべきか分かっている場合に特に有効です。

DocumentationSearch の検索精度は素晴らしいのですが、コンテキスト効率の面では SSH + grep に分があります。もし DocumentationSearch にも grep のように出力を絞り込む仕組みがあれば、オンデバイスの速度とコンテキスト効率を両立できて理想的だと感じました。

まとめ

Supabase Docs over SSH は、AI エージェント時代のドキュメント参照として面白いアプローチでした。ssh コマンド一発でドキュメントにアクセスできるシンプルさと、grep/cat/find というターミナルの標準ツールで操作できる設計が、CLI ベースの AI エージェントととても相性がよいです。実際に使ってみて、grep によるコンテキスト効率の良さを実感しました。

CLAUDE.md に数行追記するだけで AI エージェントが Supabase のドキュメントを自動参照してくれるようになるのは便利でした。Supabase Local の本番同等 UI と合わせて、Supabase はローカル開発の体験がとてもよくできていると思います。

今後、Xcode MCP の DocumentationSearch のように、他のサービスでもオンデバイスのセマンティック検索と SSH のようなコンテキスト効率の良いアクセス手段の両方が増えてくると嬉しいです。

参考リンク