brewpage-mcp

Publica HTML, Markdown, KV, JSON y archivos en brewpage.app desde asistentes de IA.

Documentación

brewpage-mcp

npm version License: MIT

Servidor MCP para BrewPage -- publica y gestiona contenido HTML, KV, JSON y archivos directamente desde asistentes de IA.

Qué es BrewPage

BrewPage es una plataforma gratuita de hosting instantáneo diseñada para agentes de IA y desarrolladores. Una única solicitud POST publica HTML, Markdown, un sitio de múltiples archivos, un documento JSON o un archivo binario y devuelve una URL corta HTTPS estable -- sin cuentas, sin claves API, sin configuración de infraestructura. Cada recurso lleva un token de propietario devuelto en el momento de la creación: úsalo para actualizar el contenido en su lugar (manteniendo la misma URL), eliminar el recurso o autenticar operaciones de listado entre sesiones. brewpage-mcp expone esta API como catorce herramientas MCP tipadas para que cualquier agente compatible -- Claude, Codex, Gemini, Cursor, Cline -- pueda publicar, actualizar, obtener y gestionar contenido HTML, JSON, KV y archivos de BrewPage sin salir de la conversación.

Inicio rápido

npx brewpage-mcp

Instalación

Claude Desktop

Añade a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "brewpage": {
      "command": "npx",
      "args": ["-y", "brewpage-mcp"]
    }
  }
}

Claude Code

Añade a ~/.claude/settings.json:

{
  "mcpServers": {
    "brewpage": {
      "command": "npx",
      "args": ["-y", "brewpage-mcp"]
    }
  }
}

Cursor

Abre Settings > MCP y añade:

{
  "mcpServers": {
    "brewpage": {
      "command": "npx",
      "args": ["-y", "brewpage-mcp"]
    }
  }
}

Cline (extensión de VS Code)

Abre el panel de configuración MCP de Cline y añade:

{
  "brewpage": {
    "command": "npx",
    "args": ["-y", "brewpage-mcp"]
  }
}

Instalación global

npm install -g brewpage-mcp
brewpage-mcp

Herramientas

Hay catorce herramientas disponibles, agrupadas por recurso: HTML, JSON, KV, Archivos, Sitios y Descubrimiento. Todas las operaciones de escritura devuelven un token de propietario; consérvalo para modificar o eliminar el recurso más tarde. Cualquier operación de actualización (PUT) requiere el ownerToken original -- es la puerta de autorización del backend. password es opcional en lecturas/creaciones; si se establece, se envía como cabecera X-Password.

HTML

publish_html

Publica contenido HTML o Markdown en BrewPage. Devuelve una URL pública y un token de propietario.

Parámetros: content (cadena), format (HTML | MARKDOWN, por defecto HTML), namespace (opcional -- omítelo para mantener la página privada/no listada: accesible solo mediante su enlace, no en la galería, no indexada por buscadores; pasa public solo cuando el usuario quiera explícitamente que aparezca en la galería y sea indexada), password (opcional), ttlDays (1--30, por defecto 15), filename (opcional, usado como título alternativo), showTopBar (booleano opcional -- añade una barra de herramientas con nombre de archivo, botón de descarga y selector de tema).

Ejemplo de prompt que invoca esta herramienta:

"Guarda este informe HTML para que pueda compartir el enlace con mi equipo."

publish_html(content="<h1>Report</h1>...", format="HTML", ttlDays=15)

update_html

Actualiza una página HTML o Markdown existente en su lugar, conservando su URL corta. Requiere el ownerToken original devuelto en la creación.

Parámetros: namespace (cadena), id (cadena), content (cadena, el nuevo cuerpo), ownerToken (cadena), format (HTML | MARKDOWN | code opcional, por defecto HTML).

Ejemplo de prompt:

"Corrige el error tipográfico en el informe que publiqué antes -- mismo enlace."

update_html(namespace="public", id="aBcDeFgHiJ", content="<h1>Updated</h1>...", ownerToken="tok_...")

get_page

Obtiene el contenido de una página HTML de BrewPage publicada por espacio de nombres e ID.

Parámetros: namespace (cadena), id (cadena), password (opcional, si la página está protegida por contraseña).

Ejemplo de prompt:

"Recupera el contenido de mi página publicada para poder seguir editándola."

get_page(namespace="public", id="aBcDeFgHiJ")

Archivos

publish_file

Sube un archivo a BrewPage obteniéndolo desde una URL. Devuelve una URL pública y un token de propietario. Admite imágenes, PDF, vídeo, audio, archivos de código y archivos comprimidos.

Parámetros: url (cadena, la URL de origen a obtener), namespace (opcional -- omítelo para mantener el archivo privado/no listado: accesible solo mediante su enlace, no en la galería, no indexado por buscadores; pasa public solo para listarlo e indexarlo), filename (nombre de archivo personalizado opcional).

Ejemplo de prompt:

"Sube este PNG y dame un enlace para compartir."

publish_file(url="https://example.com/diagram.png")

Sitios

publish_site

Publica un sitio HTML de una sola página o de múltiples archivos. Pasa entryContent para una sola página o files (matriz de {path, content}) para un sitio de múltiples archivos. Admite protección por contraseña, TTL y agrupación por token de propietario.

Parámetros: entryContent (cadena, mutuamente excluyente con files), files (matriz de {path, content}, mutuamente excluyente con entryContent), entry (ruta de archivo de entrada opcional, por defecto index.html), namespace (opcional -- omítelo para mantener el sitio privado/no listado: accesible solo mediante su enlace, no en la galería, no indexado por buscadores; pasa public solo para listarlo e indexarlo), password (opcional), ttlDays (1--30, por defecto 15), ownerToken (opcional, agrupa el sitio bajo un propietario existente).

Ejemplo de prompt:

"Despliega este sitio estático con index.html y style.css."

publish_site(files=[{"path": "index.html", "content": "..."}, {"path": "style.css", "content": "..."}])

JSON

publish_json

Publica un documento JSON en BrewPage. Devuelve una URL pública y un token de propietario. El cuerpo puede pasarse como cadena JSON o como objeto estructurado.

Parámetros: json (cadena u objeto, el payload JSON), namespace (opcional -- omítelo para mantener el documento privado/no listado: accesible solo mediante su enlace, no en la galería, no indexado por buscadores; pasa public solo para listarlo e indexarlo), password (opcional), ttlDays (opcional, 1--30, por defecto 15), tags (string[] opcional).

Ejemplo de prompt:

"Guarda este blob de configuración como documento JSON que pueda obtener más tarde."

publish_json(json={"mode": "dark", "version": 3}, ttlDays=15)

get_json

Obtiene un documento JSON publicado por espacio de nombres e ID.

Parámetros: namespace (cadena), id (cadena), password (opcional, enviado como X-Password si se establece).

Ejemplo de prompt:

"Lee el documento JSON que acabo de almacenar."

get_json(namespace="public", id="aBcDeFgHiJ")

update_json

Actualiza un documento JSON existente en su lugar, conservando su URL corta. Requiere el ownerToken original.

Parámetros: namespace (cadena), id (cadena), json (cadena u objeto, el nuevo payload), ownerToken (cadena).

Ejemplo de prompt:

"Sube la versión del campo en ese documento JSON a 4."

update_json(namespace="public", id="aBcDeFgHiJ", json={"mode": "dark", "version": 4}, ownerToken="tok_...")

KV

publish_kv

Crea una nueva entrada KV (clave/valor). Devuelve una URL pública y un token de propietario. La entrada KV se direcciona mediante (namespace, id, key); esta herramienta crea la entrada y emite el id generado junto con el token de propietario.

Parámetros: key (cadena), value (cadena), namespace (opcional -- omítelo para mantener el almacén KV privado/no listado: accesible solo mediante su enlace, no en la galería, no indexado por buscadores; pasa public solo para listarlo e indexarlo), password (opcional), ttlDays (opcional, 1--30, por defecto 15), tags (string[] opcional).

Ejemplo de prompt:

"Almacena la clave API bajo la etiqueta 'staging-token' para poder reutilizarla en la próxima sesión."

publish_kv(key="staging-token", value="abc123")

set_kv

Establece o reemplaza el valor en una ranura (namespace, id, key) existente. Requiere el ownerToken original.

Parámetros: namespace (cadena), id (cadena), key (cadena), value (cadena), ownerToken (cadena).

Ejemplo de prompt:

"Actualiza el valor de staging-token al nuevo secreto."

set_kv(namespace="public", id="aBcDeFgHiJ", key="staging-token", value="def456", ownerToken="tok_...")

get_kv

Obtiene el valor almacenado en (namespace, id, key).

Parámetros: namespace (cadena), id (cadena), key (cadena), password (opcional, enviado como X-Password si se establece).

Ejemplo de prompt:

"¿Qué almacené bajo staging-token?"

get_kv(namespace="public", id="aBcDeFgHiJ", key="staging-token")

Descubrimiento

search_gallery

Explora la galería pública de páginas de BrewPage, o lista los recursos que posees. Devuelve un resultado paginado con metadatos (id, título, número de visitas, fecha de creación). Todos los parámetros son opcionales; sin parámetros devuelve las páginas públicas más recientes.

Parámetros: q (consulta de búsqueda opcional), page (opcional, basado en 0), size (tamaño de página opcional), sort (date | views opcional), mine (booleano opcional -- lista solo los recursos propiedad de ownerToken), ownerToken (requerido solo cuando mine=true).

Ejemplo de prompt:

"¿Qué publiqué la semana pasada?"

search_gallery(mine=true, ownerToken="tok_...", sort="date")

Gestión

delete_resource

Elimina un recurso de BrewPage (página HTML, almacén KV, colección JSON o archivo) usando el token de propietario recibido en la creación.

Parámetros: type (html | kv | json | file), namespace (cadena), id (cadena), ownerToken (cadena).

Ejemplo de prompt:

"Elimina la página que acabo de publicar -- espacio de nombres public, id aBcDeFgHiJ."

delete_resource(type="html", namespace="public", id="aBcDeFgHiJ", ownerToken="tok_...")

get_stats

Obtiene estadísticas de uso de BrewPage a nivel de plataforma (número de páginas, número de archivos, almacenamiento, totales diarios). Admite una zona horaria IANA opcional para el límite de "hoy".

Parámetros: tz (cadena de zona horaria IANA opcional, p. ej. Europe/Lisbon, por defecto UTC).

Ejemplo de prompt:

"¿Cuántas páginas están actualmente alojadas en BrewPage?"

get_stats()

Mapeo de consultas comunes de LLM a herramientas de BrewPage

Consulta / intención del LLMHerramientaNotas
"Publica este HTML para poder compartirlo"publish_htmlformat=HTML; guarda ownerToken
"Comparte estas notas de reunión como enlace"publish_htmlformat=MARKDOWN; salida renderizada legible
"Aloja este artefacto generado por IA"publish_htmlnamespace opcional; privado/no listado por defecto -- pasa public para listarlo en la galería + indexarlo
"Sube esta imagen / PDF / vídeo"publish_fileObtiene desde URL; vista previa en línea en la URL corta
"Despliega este sitio estático"publish_sitePasa la matriz files o entryContent
"Corrige un error tipográfico en la página que compartí -- mismo enlace"update_htmlRequiere ownerToken; la URL permanece igual
"Elimina la página que publiqué"delete_resourceRequiere ownerToken de la creación
"Lee la página que publiqué"get_pageDevuelve el contenido sin procesar para editar
"¿Cuántas páginas hay en BrewPage?"get_statsDevuelve totales de la plataforma
"Almacena el estado JSON entre turnos"publish_jsonDevuelve URL corta + token de propietario
"Lee ese documento JSON de nuevo"get_jsonPor namespace + id
"Actualiza el JSON que almacené"update_jsonRequiere ownerToken; conserva la URL
"Guarda un valor bajo una etiqueta / clave"publish_kvCrea una nueva ranura KV
"Cambia el valor KV que almacené"set_kvRequiere ownerToken
"¿Qué almacené bajo esa clave?"get_kvPor namespace + id + key
"Lista mis páginas publicadas" / "¿Qué publiqué?"search_galleryEstablece mine=true + ownerToken
"Explora la galería pública de BrewPage"search_galleryq, sort=date|views opcionales

Token de propietario

Cada respuesta de publicación incluye un token de propietario -- la única credencial que permite actualizar o eliminar tu contenido. Guárdalo. No se puede recuperar.

  • Reutilízalo mediante X-Owner-Token en creaciones posteriores para agrupar recursos bajo un mismo propietario.
  • Pásalo a delete_resource para eliminar contenido.
  • Pásalo a get_page (no necesario para lecturas, pero requerido para listar tus propios recursos mediante la API REST).

Configuración

VariablePor defectoDescripción
BREWPAGE_URLhttps://brewpage.appURL base de la API

Enlaces

Registro de cambios

1.6.0 -- 2026-06-05

  • Publicación privada por defecto. Cuando se omite namespace, las cinco herramientas de publicación (publish_html, publish_file, publish_site, publish_json, publish_kv) ahora envían un espacio de nombres no listado explícito (priv-<random>) en lugar de dejar que el backend use public por defecto. Espacio de nombres omitido = no listado (accesible solo mediante su enlace, no aparece en la galería, no indexado en búsquedas); pase namespace: "public" explícitamente para listar e indexar. Sin cambios disruptivos: namespace sigue siendo opcional.
  • Las respuestas de publicación para espacios de nombres no públicos ahora añaden un aviso de "Enlace no listado" que explica cómo hacer público el contenido.
  • Las descripciones de herramientas y el README fueron reescritos para reflejar el modelo privado por defecto.

1.5.0 -- 2026-05-21

  • Se añaden 8 nuevas herramientas MCP: update_html, publish_json, get_json, update_json, publish_kv, set_kv, get_kv, search_gallery.
  • Número de herramientas: 6 -> 14. Cobertura completa de actualización de HTML, CRUD de JSON, CRUD de KV y descubrimiento de galería (incluido el listado con ámbito de propietario mediante mine=true).
  • Las operaciones de actualización (update_html, update_json, set_kv) requieren el ownerToken original; password (cuando se establece) se reenvía como X-Password.

1.4.0 -- 2026-05-12

  • Sincronización con la especificación 1.31.0 -- añade variantes raw text/* y application/octet-stream en POST /api/html; espejo PUT; 422 con supportedTypes.

Licencia

MIT