Cloudflare MCP Server

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Enables management of Cloudflare resources including Workers, KV Store, R2 Storage, D1 Databases, and Analytics. Supports creating, updating, and deploying Workers, managing key-value pairs, handling object storage, executing SQL queries, and retrieving analytics data for domains.

Servidor MCP de Cloudflare para IDE

El Protocolo de Contexto de Modelo (MCP) es un nuevo protocolo estandarizado para gestionar el contexto entre grandes modelos de lenguaje (LLM) y sistemas externos. En este repositorio, ofrecemos un instalador y un servidor MCP para la API de Cloudflare .

Esto le permite usar Claude Desktop y IDE como VSCode (Cline) y Windsurf o cualquier cliente MCP, para usar lenguaje natural para lograr cosas en su cuenta de Cloudflare, por ejemplo:

  • 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 '...'?

Manifestación

Configuración

  1. Ejecute npx @gutmutcode/mcp-server-cloudflare init
  2. Reinicie Claude Desktop, debería ver un pequeño ícono 🔨 que muestra las siguientes herramientas disponibles para su uso:
  3. Consulta el archivo de configuración de Cline; deberías ver una sección cloudflare con tu ID de cuenta de Cloudflare.
  4. Revisa tu archivo de configuración MCP de Windsurf; deberías ver una sección cloudflare . Windsurf tiene limitaciones en el uso de herramientas MCP, por lo que no puedes usar demasiadas simultáneamente. (A diferencia de Cline y Claude)

Características

Gestión de tiendas KV

  • get_kvs : enumera todos los espacios de nombres KV en su cuenta
  • kv_get : obtiene un valor de un espacio de nombres KV
  • kv_put : Almacenar un valor en un espacio de nombres KV
  • kv_list : Lista de claves en un espacio de nombres KV
  • kv_delete : eliminar una clave de un espacio de nombres KV

Gestión de almacenamiento R2

  • r2_list_buckets : enumera todos los depósitos R2 en su cuenta
  • r2_create_bucket : Crea un nuevo depósito R2
  • r2_delete_bucket : eliminar un depósito R2
  • r2_list_objects : enumera objetos en un depósito R2
  • r2_get_object : Obtener un objeto de un depósito R2
  • r2_put_object : Colocar un objeto en un depósito R2
  • r2_delete_object : eliminar un objeto de un depósito R2

Gestión de bases de datos D1

  • d1_list_databases : enumera todas las bases de datos D1 en su cuenta
  • d1_create_database : Crea una nueva base de datos D1
  • d1_delete_database : Eliminar una base de datos D1
  • d1_query : Ejecuta una consulta SQL contra una base de datos D1

Gestión de trabajadores

  • worker_list : Lista todos los trabajadores en tu cuenta
  • worker_get : obtiene el contenido del script de un trabajador
  • worker_put : Crea o actualiza un script de trabajador
  • worker_delete : eliminar un script de trabajador

Analítica

  • analytics_get : recupera datos analíticos para tu dominio
    • Incluye métricas como solicitudes, ancho de banda, amenazas y páginas vistas.
    • Admite filtrado por rango de fechas

Desarrollo

En la carpeta del proyecto actual, ejecute:

pnpm install pnpm build:watch

Luego, en una segunda terminal:

node dist/index.js init

Esto vinculará Claude Desktop con su versión instalada localmente para que pueda probarla.

Uso fuera de Claude

Para ejecutar el servidor localmente, ejecute node dist/index run <account-id> .

Si usa un cliente MCP alternativo o realiza pruebas locales, ejecute el comando tools/list para obtener una lista actualizada de todas las herramientas disponibles. Después, puede llamarlas directamente con el comando tools/call .

trabajadores

// 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" })

Tienda 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" })

Almacenamiento 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" })

Base de datos 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 ) ` })

Analítica

// Get today's analytics analytics_get({ zoneId: "your_zone_id", since: "2024-11-26T00:00:00Z", until: "2024-11-26T23:59:59Z" })

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.

-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor MCP que permite utilizar lenguaje natural para administrar recursos de Cloudflare (Workers, KV, R2, D1) a través de Claude Desktop, VSCode y otros clientes MCP.

  1. Demo
    1. Setup
      1. Features
        1. KV Store Management
        2. R2 Storage Management
        3. D1 Database Management
        4. Workers Management
        5. Analytics
      2. Developing
        1. Usage outside of Claude
          1. Workers
          2. KV Store
          3. R2 Storage
          4. D1 Database
          5. Analytics
        2. Contributing
          ID: 1rxd7s0omi