対話しながらリソース設計。Cloudflare MCPが変える次世代の構築体験

はじめに
下記にあるように、様々な役割の MCP サーバが提供されています。
https://developers.cloudflare.com/agents/model-context-protocol/mcp-servers-for-cloudflare/
ドキュメントの閲覧やログやメトリクスの分析など、「情報を取得する」用途のものが多く見られますが、今回は「構築」に主眼を置き、実際に Cloudflare のリソースを作成できる「Workers Bindings Server」を使い、各リソースの作成を試してみようと思います。
記事執筆時点での README.md を見てみると、KV Namespace・R2 Bucket・D1 Database・Hyperdrive config について、create のツールが提供されているようです。
https://github.com/cloudflare/mcp-server-cloudflare/blob/ac3ffda5a136beaba84a49203b2f8eb1c69dd6bb/apps/workers-bindings/README.md
設定と準備
まずは、Claude Code に MCP サーバを設定しましょう。
$ claude mcp add -s project -t http
cloudflare-workers-bindings
https://bindings.mcp.cloudflare.com/mcp
Claude Code を起動したら、/mcp コマンドで認証を行っておきましょう。

複数のアカウントに所属している場合は、下記のように、操作対象のアカウントを設定できます。

> Cloudflare のアカウントリストを表示して
⏺ Cloudflareのアカウントリストを取得しますね。
⎿ {
"accounts": [
{
… +7 lines (ctrl+o to expand)
⏺ Cloudflareのアカウント情報を取得しました。
アカウント一覧:
- アカウント名: XXX@XXX.XXX's Account
- アカウントID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- 作成日: 2025年10月28日
現在、1つのアカウントが登録されています。
★ Insight ─────────────────────────────────────
- このアカウントIDは、Workers、KV、D1、R2などのCloudflareリソースを操作する際に必要となります
- MCP(Model Context Protocol)を通じてCloudflare APIに接続することで、ターミナルから直接リソース管理が可能になります
─────────────────────────────────────────────────
このアカウントで何か操作を行いたい場合は、お知らせください。Workers、KV namespaces、R2 buckets、D1 databasesなどの確認や管理ができます。
> アカウント ID XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX をアクティブにして
⏺ アカウントIDをアクティブに設定します。
⏺ cloudflare-workers-bindings - Set active account (MCP)(activeAccountIdParam: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
⎿ {
"activeAccountId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
⏺ アカウントを正常にアクティブに設定しました。
アクティブアカウント: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
★ Insight ─────────────────────────────────────
- アクティブアカウントを設定することで、以降のすべてのCloudflare操作(Workers、KV、D1、R2など)がこのアカウントに対して実行されます
- これにより、毎回アカウントIDを指定する必要がなくなり、操作が簡潔になります
─────────────────────────────────────────────────
これで、Workers、KV namespaces、R2 buckets、D1 databasesなどのリソース管理ができるようになりました。次に何を確認または操作したいですか?
各リソースの作成
KV namespace
まずは KV namespace を作ってみます。

> test という名前で KV namespace を作成して
⏺ 「test」という名前でKV namespaceを作成します。
⏺ cloudflare-workers-bindings - Create KV namespace (MCP)(title: "test")
⎿ {
"id": "046a3397179047cb84fa0e81c3ee64d8",
"title": "test",
… +2 lines (ctrl+o to expand)
⏺ KV namespaceを正常に作成しました!
作成されたKV namespace:
- ID: 046a3397179047cb84fa0e81c3ee64d8
- 名前: test
- URL エンコーディング対応: はい
★ Insight ─────────────────────────────────────
- KV (Key-Value) namespaceは、Cloudflare Workersで使用できるグローバルに分散された低レイテンシのキー・バリュー型ストレージです
- このnamespace IDは、Workersスクリプトのバインディング設定で使用します(wrangler.tomlのkv_namespacesセクションに追加)
- URL エンコーディング対応により、特殊文字を含むキー名も安全に扱えます
─────────────────────────────────────────────────
このKV namespaceを使ってデータの保存や取得を行うことができます。Workerスクリプトと連携させる場合は、wrangler.tomlに以下のような設定を追加します:
kv_namespaces = [
{ binding = "TEST_KV", id = "046a3397179047cb84fa0e81c3ee64d8" }
]
他に何か操作したいことはありますか?

すんなり作成できました。
Cloudflare dashboard でも、作成した KV namespace が見えていますね。
R2 Bucket

> R2 object storage のバケットを test という名前で Eastern North America に作成してください。
⏺ R2バケットを作成する前に、location設定について確認させてください。
⏺ cloudflare-workers-bindings - Search Cloudflare docs (MCP)(query: "R2 bucket creation location Eastern North America")
⎿ <result>
<url>https://developers.cloudflare.com/https://developers.cloudflare.com/r2/reference/data-location/</url>
<title></title>
… +168 lines (ctrl+o to expand)
⏺ ドキュメントを確認しました。R2バケットの作成時にlocation hint(enam = Eastern North America)を指定できることがわかりましたが、現在利用可能なMCPツールではlocation hintパラメータが公開されていません。
★ Insight ─────────────────────────────────────
• R2のlocation hintsは、S3 APIのLocationConstraintパラメータまたはCloudflareダッシュボードで指定できます(enam、wnam、weur、eeur、apac、ocが利用可能
)
• MCPツール経由では名前のみ指定可能で、location hintは設定できないため、自動的に最も近いリージョンにバケットが作成されます
─────────────────────────────────────────────────
以下の選択肢があります:
1. 自動locationで「test」バケットを作成する(MCPツール経由)
2. S3 APIを直接使用してlocation hint enamを指定する
どちらの方法で進めますか?
> 1 で作ってください。
⏺ 承知しました。自動locationで「test」バケットを作成します。
⏺ cloudflare-workers-bindings - Create R2 bucket (MCP)(name: "test")
⎿ {
"name": "test",
"creation_date": "2025-12-16T03:15:53.815Z",
… +4 lines (ctrl+o to expand)
⏺ R2バケット「test」が正常に作成されました!
作成結果:
- バケット名: test
- 作成日時: 2025-12-16T03:15:53.815Z
- ロケーション: APAC(Asia-Pacific)
- ストレージクラス: Standard
- 管轄区域: default
★ Insight ─────────────────────────────────────
• 自動location選択は、バケット作成リクエストの発信元に最も近いリージョンを選択します。今回はAPAC(アジア太平洋)に配置されました
• Eastern North Americaに配置したい場合は、S3 APIでLocationConstraint: "enam"を明示的に指定する必要があります
• R2はグローバル分散ストレージなので、location hintはパフォーマンス最適化のためのもので、どこからでもアクセス可能です
─────────────────────────────────────────────────
バケットは正常に動作していますが、もしEastern North Americaへの配置が必須の場合は、バケットを削除して、S3 APIまたはCloudflareダッシュボードから再作成することをお勧めします。このまま使用しますか?
作成時に Location hint を指定することはできないようです。
ただし、代わりに自動で作成することを提案され、作成自体は行うことができました。
D1 database
データベースの作成
引き続き D1 database も作成してみましょう。
D1 database も Location の指定がありますが、どうなるでしょうか。

> D1 database を、test という名前で Eastern North America に作成してください。
⏺ D1データベースを「test」という名前でEastern North Americaに作成します。
⏺ cloudflare-workers-bindings - Create D1 database (MCP)(name: "test", primary_location_hint: "enam")
⎿ {
"uuid": "d319e300-4ab3-4b1e-9e02-008215d35032",
"name": "test",
… +8 lines (ctrl+o to expand)
⏺ D1データベース「test」が正常に作成されました!
作成結果:
- UUID: d319e300-4ab3-4b1e-9e02-008215d35032
- データベース名: test
- 作成日時: 2025-12-16T03:21:37.550Z
- Primary Location Hint: ENAM(Eastern North America)
- 実際の作成リージョン: ENAM
- バージョン: production
- ファイルサイズ: 8192 bytes
- テーブル数: 0
★ Insight ─────────────────────────────────────
• D1データベースのMCPツールはprimary_location_hintパラメータをサポートしており、R2と異なり、MCPツール経由でも希望のリージョンを指定できます
• created_in_regionが"ENAM"となっており、location hintが正しく適用されたことが確認できます
• D1はSQLiteベースのリレーショナルデータベースで、現在テーブル数は0です。次はテーブル作成やクエリ実行が可能です
─────────────────────────────────────────────────
データベースが準備できました。テーブルの作成やデータの投入を行いますか?
D1 database については、Location hint がサポートされており、その通り作成することができました。
クエリの発行
また、D1 database には、d1_database_query というツールがあるので、引き続きテーブルの作成やデータの投入も試してみました。

> テーブル test_rbl を作成してください。
今回はテストなので、シンプルなスキーマをそちらで決めて下さい。
⏺ 承知しました。シンプルなテスト用スキーマで test_rbl テーブルを作成します。
⏺ cloudflare-workers-bindings - Query D1 database (MCP)(database_id: "d319e300-4ab3-4b1e-9e02-008215d35032", sql: "CREATE TABLE test_rbl (n id
INTEGER PRIMARY KEY AUTOINCREMENT,n name TEXT NOT NULL,n value TEXT,n created_at TEXT
DEFAULT CURRENT_TIMESTAMPn)")
⎿ [
{
"results": [],
… +19 lines (ctrl+o to expand)
⏺ test_rbl テーブルが正常に作成されました!
作成したスキーマ:
CREATE TABLE test_rbl (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
value TEXT,
created_at TEXT DEFAULT CURRENT_TIMESTAMP
)
実行結果:
- ステータス: 成功
- 処理リージョン: ENAM(Eastern North America)
- SQL実行時間: 0.26ms
- データベースサイズ: 8KB → 20KB
- 書き込み行数: 4行(メタデータ)
★ Insight ─────────────────────────────────────
• SQLiteではAUTOINCREMENT付きのINTEGER PRIMARY KEYにより、idが自動的に割り当てられます
• created_atはCURRENT_TIMESTAMPをデフォルト値として、レコード作成時刻を自動記録します
• D1のクエリ実行メタデータには、処理されたリージョン(ENAM)やパフォーマンス指標(実行時間、読み書き行数)が含まれます
─────────────────────────────────────────────────
テーブルが準備できました。テストデータを挿入しますか?それとも他の操作を行いますか?
> テストデータを 1 つ挿入してください。各値もそちらで決めて OK です。
⏺ 承知しました。テストデータを1件挿入します。
⏺ cloudflare-workers-bindings - Query D1 database (MCP)(database_id: "d319e300-4ab3-4b1e-9e02-008215d35032", sql: "INSERT INTO test_rbl (name, value)nVALUES ('Sample Entry', 'test-value-001')")
⎿ [
{
"results": [],
… +19 lines (ctrl+o to expand)
⏺ テストデータが正常に挿入されました!挿入されたデータを確認してみましょう。
⏺ cloudflare-workers-bindings - Query D1 database (MCP)(database_id: "d319e300-4ab3-4b1e-9e02-008215d35032", sql: "SELECT * FROM test_rbl")
⎿ [
{
"results": [
… +26 lines (ctrl+o to expand)
⏺ テストデータの挿入と確認が完了しました!
挿入結果:
- ステータス: 成功
- 変更行数: 1行
- 自動生成ID: 1
- SQL実行時間: 0.18ms
挿入されたデータ:
| id | name | value | created_at |
|-----|--------------|----------------|---------------------|
| 1 | Sample Entry | test-value-001 | 2025-12-16 03:25:04 |
★ Insight ─────────────────────────────────────
• idはAUTOINCREMENTにより自動的に1が割り当てられました
• created_atはCURRENT_TIMESTAMPにより、挿入時刻(UTC)が自動記録されました
• D1のクエリメタデータから、INSERT操作で2行書き込み(データ行+インデックス行)、SELECT操作で1行読み込みが行われたことが分かります
─────────────────────────────────────────────────
D1データベースのセットアップとテストが完了しました。他に何か操作しますか?
スキーマやテストデータの投入を行ってくれました。
Hyperdrive config
README.md には hyperdrive_config_create というツールが提供されている旨の記述がありますが、実際に試した所、残念ながらツールが無いようで MCP サーバでの設定はできないようです。

> hyperdrive_config_create で Hyperdrive config を作成したいです。必要のパラメータをヒアリングしながら進めてください。
⏺ Hyperdriveの設定を作成したいとのことですね。まず、利用可能な方法を確認させてください。
⏺ cloudflare-workers-bindings - Search Cloudflare docs (MCP)(query: "Hyperdrive create configuration API")
⎿ <result>
<url>https://developers.cloudflare.com/https://developers.cloudflare.com/hyperdrive/hyperdrive-rest-api/</url>
<title></title>
… +126 lines (ctrl+o to expand)
⏺ 申し訳ありませんが、現在利用可能なMCPツールには hyperdrive_config_create が含まれていないようです。利用可能なHyperdrive関連のツールは以下です:
- hyperdrive_configs_list - 設定の一覧取得
- hyperdrive_config_get - 設定の詳細取得
- hyperdrive_config_edit - 設定の編集
- hyperdrive_config_delete - 設定の削除
★ Insight ─────────────────────────────────────
- Hyperdriveの設定作成は通常、Wrangler CLIの wrangler hyperdrive create コマンドで行います
- REST APIでも作成可能ですが、MCPツールでは現在未実装のようです
─────────────────────────────────────────────────
代わりに、Wrangler CLIを使用してHyperdrive設定を作成できます。以下の情報を教えていただけますか?
まとめ
パラメタのサポート状況など、ソース毎のツールの習熟度の差はありますが、実際にリソースを作成することができました。
実際の構築を考えると、現時点ではスクリプトや Terraform などを使ったほうが確実なのでは?」と思う場面もありました。
ただ、例えば Workers を使ったアプリケーションの設計などで、実際に構築しながら設計を決めていくようなシチュエーションで役に立つのでは、とも感じました。
今回は Workers Bindings Server でしたが、他のサーバについても試してみたいと思います。
Cloudflareに、アクセリアの運用サポートをプラスしたCDNサービスを提供しています
移行支援によるスムーズな導入とともに、お客様の運用負担を最小限にとどめながら、WEBサイトのパフォーマンスとセキュリティを最大限に高めます。運用サポートはフルアウトソーシングからミニマムサポートまで、ご要望に合わせてご提供します。
Cloudflare(クラウドフレア)の導入や運用について、またそれ以外のことでもなにか気になることがございましたらお気軽にご相談下さい。
サービスにご興味をお持ちの方は
お気軽にお問い合わせください。
Webからお問い合わせ
お問い合わせお電話からお問い合わせ
平日09:30 〜 18:00
Free Service












