Cloudflare MCP Server

Implementa un servidor MCP remoto y sin autenticación en Cloudflare Workers.

Documentación

🤝 Muestra tu apoyo - da una ⭐️ si te gustó el contenido

MCP Memory

MCP Memory es un servidor MCP que brinda a los clientes MCP (Cursor, Claude, Windsurf y más) la capacidad de recordar información sobre los usuarios (preferencias, comportamientos) a través de conversaciones. Utiliza tecnología de búsqueda vectorial para encontrar recuerdos relevantes basados en el significado, no solo en palabras clave. Está construido con Cloudflare Workers, D1, Vectorize (RAG), Durable Objects, Workers AI y Agents.

📺 Vídeo

Watch the video

🚀 Pruébalo

https://memory.mcpgenerator.com/

🛠️ Cómo Implementar Tu Propio MCP Memory

Opción 1: Implementa Tu Propio MCP Memory en Cloudflare con Un Solo Clic

Deploy to Cloudflare

En la sección Create Vectorize elige:

  • Dimensions: 1024
  • Metric: cosine

Haz clic en el botón "Create and Deploy"

En el panel de Cloudflare, ve a "Workers & Pages" y haz clic en Visit

Visit MCP Memory

Opción 2: Usa esta plantilla

  1. Haz clic en el botón "Use this template" en la parte superior de este repositorio
  2. Clona tu nuevo repositorio
  3. Sigue las instrucciones de configuración a continuación

Opción 3: Crear con CloudFlare CLI

npm create cloudflare@latest --git https://github.com/puliczek/mcp-memory

🔧 Configuración (Solo Opciones 2 y 3)

  1. Instala las dependencias:
npm install
  1. Crea un índice de Vectorize:
npx wrangler vectorize create mcp-memory-vectorize --dimensions 1024 --metric cosine
  1. Instala Wrangler:
npm run dev
  1. Implementa el worker:
npm run deploy

🧠 Cómo Funciona

MCP Memory Architecture

  1. Almacenamiento de recuerdos:

    • Tu texto es procesado por Cloudflare Workers AI usando el modelo de código abierto @cf/baai/bge-m3 para generar embeddings
    • El texto y su embedding vectorial se almacenan en dos lugares:
      • Cloudflare Vectorize: Almacena los embeddings vectoriales para la búsqueda por similitud
      • Cloudflare D1: Almacena el texto original y los metadatos para persistencia
    • Un Durable Object (MyMCP) gestiona el estado y garantiza la consistencia
    • El framework Agents maneja la comunicación del protocolo MCP
  2. Recuperación de recuerdos:

    • Tu consulta se convierte en un vector usando Workers AI con el mismo modelo @cf/baai/bge-m3
    • Vectorize realiza una búsqueda por similitud para encontrar recuerdos relevantes
    • Los resultados se clasifican por puntuación de similitud
    • La base de datos D1 proporciona el texto original para los vectores coincidentes
    • El Durable Object coordina el proceso de recuperación

Esta arquitectura permite:

  • Búsqueda rápida de similitud vectorial a través de Vectorize
  • Almacenamiento persistente con D1
  • Operaciones con estado mediante Durable Objects
  • Interacciones de IA estandarizadas a través de Workers AI
  • Cumplimiento del protocolo mediante el framework Agents

El sistema encuentra información conceptualmente relacionada incluso cuando las palabras exactas no coinciden.

🔒 Seguridad

MCP Memory implementa varias medidas de seguridad para proteger los datos de los usuarios:

  • Los recuerdos de cada usuario se almacenan en espacios de nombres aislados dentro de Vectorize para la separación de datos
  • El límite de velocidad integrado previene el abuso (100 req/min - puedes cambiarlo en wrangler.jsonc)
  • La autenticación se basa solo en el userId
    • Si bien esto es suficiente para una protección básica debido al límite de velocidad
    • Se pueden agregar fácilmente capas de autenticación adicionales (como claves API u OAuth) si es necesario
  • Todos los datos se almacenan en la infraestructura segura de Cloudflare
  • Todas las comunicaciones están protegidas con cifrado TLS estándar de la industria (proporcionado automáticamente por la certificación SSL/TLS de Cloudflare)

💰 Información de Costos - GRATIS para la Mayoría de los Usuarios

MCP Memory es gratuito para niveles de uso normales:

  • El nivel gratuito permite 1,000 recuerdos con ~28,000 consultas por mes
  • Utiliza la cuota gratuita de Cloudflare para Workers, Vectorize, Worker AI y la base de datos D1

Para más detalles sobre los precios de Cloudflare, consulta:

❓ Preguntas Frecuentes

  1. ¿Puedo usar memory.mcpgenerator.com para almacenar mis recuerdos?

    • Sí, puedes usar memory.mcpgenerator.com para almacenar y recuperar tus recuerdos
    • El servicio es gratuito
    • Tus recuerdos se almacenan de forma segura y solo tú puedes acceder a ellos
    • No puedo garantizar que el servicio esté siempre disponible
  2. ¿Puedo alojarlo?

    • Sí, puedes alojar tu propia instancia de MCP Memory gratis en Cloudflare
    • Necesitarás una cuenta de Cloudflare y los siguientes servicios:
      • Workers
      • Vectorize
      • D1 Database
      • Workers AI
  3. ¿Puedo ejecutarlo localmente?

    • Sí, puedes ejecutar MCP Memory localmente para desarrollo
    • Usa wrangler dev para ejecutar el worker localmente
    • Necesitarás configurar credenciales de desarrollo local para los servicios de Cloudflare
    • Ten en cuenta que algunas funciones como la búsqueda vectorial o Workers AI requieren una conexión a los servicios de Cloudflare
  4. ¿Puedo usar un alojamiento diferente?

    • No, MCP Memory está diseñado específicamente para la infraestructura de Cloudflare
  5. ¿Por qué lo construiste?

    • Quería una solución de código abierto
    • El control sobre mis propios datos era importante para mí
  6. ¿Puedo usarlo para más de una persona?

    • Sí, MCP Memory se puede integrar en tu aplicación para servir a todos tus usuarios
    • Cada usuario tiene su propio espacio de memoria aislado
  7. ¿Puedo usarlo para almacenar cosas que no sean recuerdos?

    • Sí, MCP Memory puede almacenar cualquier tipo de información basada en texto
    • Algunos ejemplos prácticos:
      • Base de conocimientos: Almacena documentación técnica, procedimientos y guías de resolución de problemas
      • Comportamientos de usuario: Realiza un seguimiento de cómo interactúan los usuarios con las funciones y los patrones de uso comunes
      • Notas de proyecto: decisiones y actualizaciones del proyecto
    • La búsqueda vectorial ayudará a encontrar elementos relacionados independientemente del tipo de contenido

Cloudflare Browser Rendering Experiments & MCP Server

Este proyecto demuestra cómo usar Cloudflare Browser Rendering para extraer contenido web para el contexto de LLM. Incluye experimentos con la API REST y la API de Workers Binding, así como una implementación de servidor MCP que se puede usar para proporcionar contexto web a los LLM.

Web Content Server MCP server

Estructura del Proyecto

cloudflare-browser-rendering/
├── examples/                   # Example implementations and utilities
│   ├── basic-worker-example.js # Basic Worker with Browser Rendering
│   ├── minimal-worker-example.js # Minimal implementation
│   ├── debugging-tools/        # Tools for debugging
│   │   └── debug-test.js       # Debug test utility
│   └── testing/                # Testing utilities
│       └── content-test.js     # Content testing utility
├── experiments/                # Educational experiments
│   ├── basic-rest-api/         # REST API tests
│   ├── puppeteer-binding/      # Workers Binding API tests
│   └── content-extraction/     # Content processing tests
├── src/                        # MCP server source code
│   ├── index.ts                # Main entry point
│   ├── server.ts               # MCP server implementation
│   ├── browser-client.ts       # Browser Rendering client
│   └── content-processor.ts    # Content processing utilities
├── puppeteer-worker.js         # Cloudflare Worker with Browser Rendering binding
├── test-puppeteer.js           # Tests for the main implementation
├── wrangler.toml               # Wrangler configuration for the Worker
├── cline_mcp_settings.json.example # Example MCP settings for Cline
├── .gitignore                  # Git ignore file
└── LICENSE                     # MIT License

Requisitos Previos

  • Node.js (v16 o posterior)
  • Una cuenta de Cloudflare con Browser Rendering habilitado
  • TypeScript
  • CLI de Wrangler (para implementar el Worker)

Instalación

  1. Clona el repositorio:
git clone https://github.com/yourusername/cloudflare-browser-rendering.git
cd cloudflare-browser-rendering
  1. Instala las dependencias:
npm install

Configuración del Worker de Cloudflare

  1. Instala el paquete de Cloudflare Puppeteer:
npm install @cloudflare/puppeteer
  1. Configura Wrangler:
# wrangler.toml
name = "browser-rendering-api"
main = "puppeteer-worker.js"
compatibility_date = "2023-10-30"
compatibility_flags = ["nodejs_compat"]

[browser]
binding = "browser"
  1. Implementa el Worker:
npx wrangler deploy
  1. Prueba el Worker:
node test-puppeteer.js

Ejecutando los Experimentos

Experimento Básico con la API REST

Este experimento demuestra cómo usar la API REST de Cloudflare Browser Rendering para obtener y procesar contenido web:

npm run experiment:rest

Experimento con la API de Puppeteer Binding

Este experimento demuestra cómo usar la API de Workers Binding de Cloudflare Browser Rendering con Puppeteer para una automatización del navegador más avanzada:

npm run experiment:puppeteer

Experimento de Extracción de Contenido

Este experimento demuestra cómo extraer y procesar contenido web específicamente para usarlo como contexto en LLM:

npm run experiment:content

Servidor MCP

El servidor MCP proporciona herramientas para obtener y procesar contenido web usando Cloudflare Browser Rendering para usarlo como contexto en LLM.

Construyendo el Servidor MCP

npm run build

Ejecutando el Servidor MCP

npm start

O, para desarrollo:

npm run dev

Herramientas del Servidor MCP

El servidor MCP proporciona las siguientes herramientas:

  1. fetch_page - Obtiene y procesa una página web para el contexto de LLM
  2. search_documentation - Busca en la documentación de Cloudflare y devuelve contenido relevante
  3. extract_structured_content - Extrae contenido estructurado de una página web usando selectores CSS
  4. summarize_content - Resume el contenido web para un contexto de LLM más conciso

Configuración

Para usar tu endpoint de Cloudflare Browser Rendering, configura la variable de entorno BROWSER_RENDERING_API:

export BROWSER_RENDERING_API=https://YOUR_WORKER_URL_HERE

Reemplaza YOUR_WORKER_URL_HERE con la URL de tu Worker de Cloudflare implementado. Necesitarás reemplazar este marcador de posición en varios archivos:

  1. En los archivos de prueba: test-puppeteer.js, examples/debugging-tools/debug-test.js, examples/testing/content-test.js
  2. En la configuración del servidor MCP: cline_mcp_settings.json.example
  3. En el cliente del navegador: src/browser-client.ts (como respaldo si la variable de entorno no está configurada)

Integración con Cline

Para integrar el servidor MCP con Cline, copia el archivo cline_mcp_settings.json.example a la ubicación adecuada:

cp cline_mcp_settings.json.example ~/Library/Application\ Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

O agrega la configuración a tu archivo cline_mcp_settings.json existente.

Aprendizajes Clave

  1. Cloudflare Browser Rendering requiere el paquete @cloudflare/puppeteer para interactuar con el binding del navegador.
  2. El patrón correcto para usar el binding del navegador es:
    import puppeteer from '@cloudflare/puppeteer';
    
    // Then in your handler:
    const browser = await puppeteer.launch(env.browser);
    const page = await browser.newPage();
    
  3. Al implementar un Worker que usa el binding de Browser Rendering, debes habilitar el indicador de compatibilidad nodejs_compat.
  4. Siempre cierra el navegador después de usarlo para evitar fugas de recursos.

cloudflare-api-mcp

Este es un servidor ligero de Protocolo de Control de Modelos (MCP) inicializado con create-mcp e implementado en Cloudflare Workers.

Este servidor MCP permite que los agentes (como Cursor) interactúen con la API REST de Cloudflare.

Todavía está en desarrollo, iré agregando más herramientas a medida que las necesite.

Herramientas Disponibles

Consulta src/index.ts para ver la lista actual de herramientas. Cada método de la clase es una herramienta MCP.

Instalación

  1. Ejecuta el script de instalación automatizada para clonar este servidor MCP e implementarlo en tu cuenta de Cloudflare:
bun create mcp --clone https://github.com/zueai/cloudflare-api-mcp
  1. Abre Cursor Settings -> MCP -> Add new MCP server y pega el comando que se copió en tu portapapeles.

  2. Sube tu clave API y correo electrónico de Cloudflare a los secretos de tu worker:

bunx wrangler secret put CLOUDFLARE_API_KEY
bunx wrangler secret put CLOUDFLARE_API_EMAIL

Desarrollo Local

Agrega tu clave API y correo electrónico de Cloudflare al archivo .dev.vars:

CLOUDFLARE_API_KEY=<your-cloudflare-api-key>
CLOUDFLARE_API_EMAIL=<your-cloudflare-api-email>

Implementación

  1. Ejecuta el script de implementación:
bun run deploy
  1. Recarga tu ventana de Cursor para ver las nuevas herramientas.

Cómo Crear Nuevas Herramientas MCP

Para crear nuevas herramientas MCP, agrega métodos a la clase MyWorker en src/index.ts. Cada función se convertirá automáticamente en una herramienta MCP que tu agente puede usar.

Ejemplo:

/**
 * Create a new DNS record in a zone.
 * @param zoneId {string} The ID of the zone to create the record in.
 * @param name {string} The name of the DNS record.
 * @param content {string} The content of the DNS record.
 * @param type {string} The type of DNS record (CNAME, A, TXT, or MX).
 * @param comment {string} Optional comment for the DNS record.
 * @param proxied {boolean} Optional whether to proxy the record through Cloudflare.
 * @return {object} The created DNS record.
 */
createDNSRecord(zoneId: string, name: string, content: string, type: string, comment?: string, proxied?: boolean) {
    // Implementation
}

Los comentarios JSDoc son importantes:

  • La primera línea se convierte en la descripción de la herramienta
  • Las etiquetas @param definen los parámetros de la herramienta con tipos y descripciones
  • La etiqueta @return especifica el valor de retorno y su tipo

Aprende Más