Cloudflare MCP Server for IDE について
Cloudflare MCP Server for IDEは、MCPクライアントをCloudflare APIに接続し、開発者が自然言語でアカウントのリソースを管理できるようにします。Workers、KV、R2、D1、ドメイン分析に対応しています。
主な機能
- 01Workersスクリプトの管理
- 02KVエントリーの読み書き
- 03R2バケットとオブジェクトの管理
- 04D1データベースの作成とクエリ
- 05ドメイン分析データの取得
活用シーン
- 01Workerのデプロイや更新
- 02KVデータの確認や変更
- 03KVエントリーのR2への移行
- 04D1のクエリや分析データの確認
MCP 対応
Cloudflare APIの操作をツールとしてMCPクライアントに公開し、リソース管理や分析データの取得を可能にします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
IDE 向け Cloudflare MCP サーバー
Model Context Protocol(MCP)は、LLM(大規模言語モデル)と外部システムの間でコンテキストを管理するための新しい標準プロトコルです。このリポジトリでは、Cloudflare の API向けのインストーラーと MCP サーバーを提供します。
これにより、Claude Desktop や VSCode(Cline)、Windsurf などの IDE、または任意の MCP クライアントを使って、自然言語で Cloudflare アカウント上の操作を実行できます。たとえば、次のように依頼できます。
Please deploy me a new Worker with an example durable object.Can you tell me about the data in my D1 database named '...'?Can you copy all the entries from my KV namespace '...' into my R2 bucket '...'?
デモ
セットアップ
npx @gutmutcode/mcp-server-cloudflare initを実行します
- Claude Desktop を再起動すると、小さな 🔨 アイコンが表示され、次のツールを利用できるようになります。
- Cline の設定ファイルを確認すると、Cloudflare アカウント ID を含む
cloudflareセクションが表示されます。
- Windsurf の MCP 設定ファイルを確認すると、こちらにも
cloudflareセクションが表示されます。Windsurf では MCP ツールの使用に制限があるため、一度に多くのツールを使用することはできません。(Cline や Claude とは異なります)
機能
KV ストアの管理
get_kvs:アカウント内のすべての KV 名前空間を一覧表示しますkv_get:KV 名前空間から値を取得しますkv_put:KV 名前空間に値を保存しますkv_list:KV 名前空間内のキーを一覧表示しますkv_delete:KV 名前空間からキーを削除します
R2 ストレージの管理
r2_list_buckets:アカウント内のすべての R2 バケットを一覧表示しますr2_create_bucket:新しい R2 バケットを作成しますr2_delete_bucket:R2 バケットを削除しますr2_list_objects:R2 バケット内のオブジェクトを一覧表示しますr2_get_object:R2 バケットからオブジェクトを取得しますr2_put_object:R2 バケットにオブジェクトを格納しますr2_delete_object:R2 バケットからオブジェクトを削除します
D1 データベースの管理
d1_list_databases:アカウント内のすべての D1 データベースを一覧表示しますd1_create_database:新しい D1 データベースを作成しますd1_delete_database:D1 データベースを削除しますd1_query:D1 データベースに対して SQL クエリを実行します
Workers の管理
worker_list:アカウント内のすべての Workers を一覧表示しますworker_get:Worker のスクリプト内容を取得しますworker_put:Worker スクリプトを作成または更新しますworker_delete:Worker スクリプトを削除します
アナリティクス
analytics_get:ドメインのアナリティクスデータを取得します- リクエスト数、帯域幅、脅威、ページビューなどの指標を含みます
- 日付範囲によるフィルタリングに対応しています
開発
現在のプロジェクトフォルダーで、次を実行します。
pnpm install
pnpm build:watch
次に、2つ目のターミナルで次を実行します。
node dist/index.js init
これにより、テスト用に Claude Desktop がローカルにインストールされたバージョンを参照するように設定されます。
Claude 以外での使用
サーバーをローカルで実行するには、node dist/index run <account-id> を実行します。
別の MCP クライアントを使用している場合や、ローカルでテストしている場合は、tools/list コマンドを送信して、利用可能なツールの最新一覧を取得してください。その後、tools/call コマンドを使って、それらを直接呼び出すことができます。
Workers
// List workers
worker_list()
// Get worker code
worker_get({ name: "my-worker" })
// Update worker
worker_put({
name: "my-worker",
script: "export default { async fetch(request, env, ctx) { ... }}",
bindings: [
{
type: "kv_namespace",
name: "MY_KV",
namespace_id: "abcd1234"
},
{
type: "r2_bucket",
name: "MY_BUCKET",
bucket_name: "my-files"
}
],
compatibility_date: "2024-01-01",
compatibility_flags: ["nodejs_compat"]
})
// Delete worker
worker_delete({ name: "my-worker" })
KV ストア
// List KV namespaces
get_kvs()
// Get value
kv_get({
namespaceId: "your_namespace_id",
key: "myKey"
})
// Store value
kv_put({
namespaceId: "your_namespace_id",
key: "myKey",
value: "myValue",
expirationTtl: 3600 // optional, in seconds
})
// List keys
kv_list({
namespaceId: "your_namespace_id",
prefix: "app_", // optional
limit: 10 // optional
})
// Delete key
kv_delete({
namespaceId: "your_namespace_id",
key: "myKey"
})
R2 ストレージ
// List buckets
r2_list_buckets()
// Create bucket
r2_create_bucket({ name: "my-bucket" })
// Delete bucket
r2_delete_bucket({ name: "my-bucket" })
// List objects in bucket
r2_list_objects({
bucket: "my-bucket",
prefix: "folder/", // optional
delimiter: "/", // optional
limit: 1000 // optional
})
// Get object
r2_get_object({
bucket: "my-bucket",
key: "folder/file.txt"
})
// Put object
r2_put_object({
bucket: "my-bucket",
key: "folder/file.txt",
content: "Hello, World!",
contentType: "text/plain" // optional
})
// Delete object
r2_delete_object({
bucket: "my-bucket",
key: "folder/file.txt"
})
D1 データベース
// List databases
d1_list_databases()
// Create database
d1_create_database({ name: "my-database" })
// Delete database
d1_delete_database({ databaseId: "your_database_id" })
// Execute a single query
d1_query({
databaseId: "your_database_id",
query: "SELECT * FROM users WHERE age > ?",
params: ["25"] // optional
})
// Create a table
d1_query({
databaseId: "your_database_id",
query: `
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
`
})
アナリティクス
// Get today's analytics
analytics_get({
zoneId: "your_zone_id",
since: "2024-11-26T00:00:00Z",
until: "2024-11-26T23:59:59Z"
})
コントリビュート
コントリビュートを歓迎します!お気軽にプルリクエストを送信してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。