Claude CodeにCloudflare MCPを連携する手順【WSL対応】¶
この記事の対象者
- Claude Codeを使っていて、Cloudflareの情報をAIアシスタントから直接参照したい開発者
この記事のポイント¶
- 3ファイルで完了 設定ファイル編集とOAuth認証だけで連携できる
- WSLでも動く wslviewでOAuth認証をWindows側ブラウザに転送
- 再認証不要 refresh_tokenで自動更新、手動ログインは初回のみ
Cloudflare MCPでできること¶
Claude Codeのターミナルから「このドメインのDNSレコード一覧を見せて」と聞くだけで、Cloudflareのデータを直接取得できるようになる。
Cloudflareは公式MCPサーバーをホスティングしている。OAuth認証を通せばAPIキーの管理なしで利用可能だ。
執筆時点で提供されているDNS Analyticsエンドポイント(dns-analytics.mcp.cloudflare.com)では以下の操作ができる。
- ゾーン一覧の取得(アカウント配下のドメイン一覧)
- DNSレポートの取得(クエリ数、パフォーマンス分析)
- DNS設定の参照(アカウント単位・ゾーン単位)
APIキーをローカルに保存する必要がなく、OAuthトークンの自動更新で運用できるのが特徴だ。
前提条件¶
| 項目 | 要件 |
|---|---|
| Claude Code | インストール済み |
| Node.js | v20以上(npxが使える状態) |
| Cloudflareアカウント | 管理対象のドメインがあること |
| WSL環境の場合 | wsluパッケージ(wslviewコマンド) |
WSLでwslviewがない場合は先にインストールする。
sudo apt install wslu
セットアップ手順¶
ステップ1: ラッパースクリプトを作成¶
Cloudflare MCPはmcp-remote経由で接続する。起動コマンドをラッパースクリプトにまとめておくと管理しやすい。
#!/bin/bash
# PATH: Node.jsのインストールパスに合わせて変更すること
export PATH="$HOME/.nvm/versions/node/v22.19.0/bin:/usr/local/bin:/usr/bin:/bin"
export BROWSER=wslview
exec npx mcp-remote "$@"
PATHはNode.jsの実際のインストールパスに合わせて変更する。nvmを使っていない場合はwhich nodeの結果からbinディレクトリを指定すればよい。パスを動的に取得したい場合は以下のように書くこともできる。
export PATH="$(dirname "$(which node)"):/usr/local/bin:/usr/bin:/bin"
BROWSER=wslviewはWSL環境のみ必要。 Linux/macOSネイティブ環境ではこの行を削除する。
実行権限を付与する。
chmod +x ~/.claude/mcp-cloudflare.sh
ステップ2: Claude Codeの設定に追加¶
~/.claude/settings.jsonの既存のmcpServersオブジェクトに、以下のcloudflareエントリを追記する。ファイル全体を上書きしないよう注意。
{
"mcpServers": {
"cloudflare": {
"command": "/home/your-user/.claude/mcp-cloudflare.sh",
"args": [
"https://dns-analytics.mcp.cloudflare.com/mcp"
]
}
}
}
commandのパスは絶対パスで指定する。~は展開されないため、フルパスを書くこと。
argsのURLを変えれば、他のCloudflare MCPエンドポイントにも接続できる。なお、/sse(SSEトランスポート)でも動作するが、Cloudflare公式は/mcp(Streamable HTTP)を推奨している。
ステップ3: OAuth認証を完了する¶
Claude Codeを再起動する。初回接続時にOAuth認証フローが始まる。
Please authorize this client by visiting:
https://dns-analytics.mcp.cloudflare.com/oauth/authorize?...
Browser opened automatically.
Windows側ブラウザでCloudflareのログイン画面が開く。ログインして権限を許可すると、以下のログが表示されて接続が完了する。
Auth code received, resolving promise
Connected to remote server using SSEClientTransport
Proxy established successfully
WSL環境でブラウザが開かない場合¶
WSLではデフォルトのブラウザ起動コマンドがLinux向けのため、Windows側ブラウザが開かない。ステップ1でBROWSER=wslviewを設定していれば解決する。
それでも開かない場合は、ターミナルに表示された認証URLを手動でコピーしてブラウザに貼り付ける。
リダイレクト先がlocalhostのため、WSL2でもポートフォワーディング経由でコールバックを受信できる。
もし認証が途中で失敗した場合は、ロックファイルを削除してからリトライする。ディレクトリ名のハッシュ値はエンドポイントURLから生成されるため、実際の値は環境によって異なる。
# ハッシュ値部分(f96b4928*)は環境によって異なる
rm ~/.mcp-auth/mcp-remote-*/f96b4928*_lock.json
rm ~/.mcp-auth/mcp-remote-*/f96b4928*_code_verifier.txt
トークンの有効期限¶
認証完了後、トークンは~/.mcp-auth/に保存される。
| トークン種別 | 有効期限 | 備考 |
|---|---|---|
| access_token | 1時間 | API呼び出しに使用 |
| refresh_token | 長期間(Cloudflare側の設定依存) | access_token失効時に自動更新 |
mcp-remoteがrefresh_tokenで自動更新するため、通常は初回認証のみで運用できる。再認証が必要になるケースは主に2つある。
- Cloudflare側でrefresh_tokenが失効した場合
~/.mcp-auth/ディレクトリを削除した場合
まとめ¶
- Cloudflare MCPは
mcp-remote+ OAuth認証でAPIキー不要で接続できる。APIキーをローカルに保存しない分、漏洩リスクが低い(OAuthトークンは~/.mcp-auth/に保存されるが、自動更新・自動失効するため管理コストは小さい) - WSL環境では
BROWSER=wslviewの1行でOAuth認証のブラウザ転送問題を解決できる。この手法は他のOAuth認証付きMCPサーバーにも流用可能 - refresh_tokenによる自動更新があるため、一度認証すれば基本的にメンテナンスフリーで運用できる