Skip to main content
Glama
GutMutCode
by GutMutCode

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

Related MCP server: Remote MCP Server Authless

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/GutMutCode/mcp-server-cloudflare'

If you have feedback or need assistance with the MCP directory API, please join our Discord server