ブログ一覧

Claude Code で使う cf docs search は Web 検索並み、docs MCP より正確で安い

wrangler を置き換える予定の Cloudflare の beta の CLI cf に、ドキュメントを検索するコマンド cf docs search が入りました。Claude Code に Cloudflare のドキュメントを cf docs search で引かせると、Web 検索や Cloudflare が出しているドキュメントを検索する MCP サーバー(以下 docs MCP)で引かせるより正しく答え、費用も少なく済むのか確かめてみました。

Claude Code に Workers と D1 の 6問を 2回ずつ答えさせると、cf docs search で引かせても Web 検索で引かせても 12回すべて正しく、費用もほぼ同じでした。docs MCP で引かせると 12回中 2回は正しく答えられず、費用は cf docs search の 3倍を超える額でした。

cf docs search は Web 検索と同じく 12回すべて正しく答え、docs MCP より正しいページを多く出して費用も少なかった

cf docs search でも Web 検索でも Claude Code は 12回とも正しく、費用もほぼ同じ

cf docs search はクエリを渡すと Cloudflare のドキュメントから検索結果を最大 5件、タイトル・説明・URL の JSON で返し、ログインせずに使えます。

cf docs search に D1 Time Travel と渡すと、D1 Time Travel のページとそのセクションがタイトル・説明・URL の JSON で返る

試したのは、最近変わった Workers と D1 の事実 4問と、前からある事実 2問です。最近変わった問いはたとえば実行環境の更新で処理中のリクエストが待ってもらえる時間やWeb Crypto で ML-KEM が使えるかで、前からある問いはたとえば D1 Time Travel で Free と Paid のそれぞれ何日前まで戻せるかです。

Claude Code の 2.1.302 でモデルを Sonnet 5.5 にし、次のどれかだけを持たせて各問を 2回ずつ答えさせました。

  • ツールなし
  • Web 検索(WebSearch と WebFetch)
  • cf 1.0.0-beta.18 の cf docs search・curl・jq・grep・head・sed だけを使えるシェル
  • docs MCP だけ

docs MCP だけは、検索の結果にページの一部の本文が入るので、ページを取得するツールを持たせていません。

ツールなしでは、最近変わった 3問を 2回とも外し、正しく答えたのは 12回中 6回でした。たとえば Workers の実行環境の更新で処理中のリクエストが待ってもらえる時間を「30秒」と答えましたが、実際には今は最大 20分です。

1問に答えるまでの費用(中央値)は、cf docs search $0.019、Web 検索 $0.021、docs MCP $0.067 でした。API の定価に実際に使ったトークンを掛けた額で、Web 検索の分には WebSearch と WebFetch の中で動く小さいモデルの分も含めています。

docs MCP は正しいページを出せない問いがあり、検索のたびに長い本文を返す

答えさせずに検索だけでも比べました。問いは Workers・D1・R2 の 20問で、「D1 を昨日の状態に戻す」のように答えの載るページが 1つに決まる物です。同じクエリでそれぞれ検索し、そのページが検索結果の上位 5件に入った問いの数と、1回の検索が返す量(20問の中央値)を見ると、次のとおりでした。

  • cf docs search: 19問、タイトル・説明・URL の JSON で約 2,500字
  • docs MCP: 14問、ページの一部の本文で約 23,000字

12回中 2回正しく答えられなかったのは、D1 Time Travel で Free と Paid のそれぞれ何日前まで戻せるかを聞いた問いです。正しくは Free 7日、Paid 30日です。ページを取得するツールを持たせていない docs MCP では、Claude Code は 8回検索しても D1 Time Travel のページに届かず、「記憶では 30日」と断って答えていて、Free の 7日が抜けていました。docs MCP にページを取得するツール(WebFetch など)も足したときにこの問いを外さなくなるかは試していません。

D1 Time Travel で引くと、cf docs search はいちばん上に D1 Time Travel のページを返しました。docs MCP は 18件を返しましたが changelog の一覧のページばかりで、何回投げても D1 Time Travel のページは出ませんでした。

同じ D1 Time Travel で、cf docs search は D1 Time Travel のページとそのセクションを返し、docs MCP は changelog の一覧ばかりで D1 Time Travel のページを返さない

docs MCP は検索のたびにページの本文を長く返すので、1問の費用も高くなりました。docs MCP をつないで Cloudflare のドキュメントを引かせているなら、正しいページに届いた数でも費用でも、cf docs search に替える理由があります。

Web 検索を使っているなら替える理由は小さく、得をするのは docs MCP から替える場合とシェルだけの環境

同じ 20問で Claude Code の Web 検索を一度だけ呼んで上位 5件を比べました。既定の設定では、正しいページが入った問いは cf docs search より少なく、上位には個人ブログや GitHub、Cloudflare の changelog のミラーサイトが混ざりました。

  • Web 検索(既定): 10問
  • Web 検索(allowed_domains でドキュメントのサイト developers.cloudflare.com に絞る): 20問
  • cf docs search: 19問

ドキュメントのサイトに絞れば、Web 検索も cf docs search と並ぶ数の正しいページを出しました。

ただ、答えさせると Claude Code は既定の Web 検索の結果からでも Cloudflare のドキュメントのページを WebFetch で開いて答え、12回とも外しませんでした。Claude Code に Web 検索を使わせているなら、cf docs search に替えても、今回の 6問では正しさも費用もほとんど変わりませんでした。

cf docs search を使うには cf を入れることになるので、入れる前に次の 3つを知っておくと良いです。

  • cf は既定で検索クエリをテレメトリとして Cloudflare に送り、CF_SEND_TELEMETRY=false で止まる
  • 上位 5件に同じページのセクションが並ぶことがあり、実際に読めるページは 5件より少ないことが多い(上の D1 Time Travel の出力も、D1 Time Travel のページとそのセクションばかり)
  • cf を入れると CLI 全体(npm で 211MB)が入り、検索だけを入れる口は無い

試したのはドキュメントの事実を答えさせる 6問だけで、Worker を作らせるような大きい作業で検索の仕方の違いが結果に影響するかは確かめていません。ほかのモデルや Codex など Claude Code 以外のエージェント、人が端末で引く使い方も試していません。

替えて得をするのは、docs MCP で Cloudflare のドキュメントを引かせている場合と、MCP も Web 検索も使えずシェルだけが使える環境です。今回 cf docs search を持たせた Claude Code も、シェルだけが使える環境でした。シェルのコマンドだけで 12回とも正しく答えています。検索で見つけた URL のページは curl で Markdown として取り、grep で要る所を切り出して読んでいました。CI のジョブや、MCP と Web 検索を禁じた設定のエージェントでも、シェルさえ使えれば同じやり方で調べられます。エージェントに使わせる方法は、cf をコーディングエージェントで使うガイドの docs search のセクションにあります。

この記事をシェア