brewpage-mcp
Publica HTML, Markdown, KV, JSON y archivos en brewpage.app desde asistentes de IA.
Documentación
brewpage-mcp
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 LLM | Herramienta | Notas |
|---|---|---|
| "Publica este HTML para poder compartirlo" | publish_html | format=HTML; guarda ownerToken |
| "Comparte estas notas de reunión como enlace" | publish_html | format=MARKDOWN; salida renderizada legible |
| "Aloja este artefacto generado por IA" | publish_html | namespace opcional; privado/no listado por defecto -- pasa public para listarlo en la galería + indexarlo |
| "Sube esta imagen / PDF / vídeo" | publish_file | Obtiene desde URL; vista previa en línea en la URL corta |
| "Despliega este sitio estático" | publish_site | Pasa la matriz files o entryContent |
| "Corrige un error tipográfico en la página que compartí -- mismo enlace" | update_html | Requiere ownerToken; la URL permanece igual |
| "Elimina la página que publiqué" | delete_resource | Requiere ownerToken de la creación |
| "Lee la página que publiqué" | get_page | Devuelve el contenido sin procesar para editar |
| "¿Cuántas páginas hay en BrewPage?" | get_stats | Devuelve totales de la plataforma |
| "Almacena el estado JSON entre turnos" | publish_json | Devuelve URL corta + token de propietario |
| "Lee ese documento JSON de nuevo" | get_json | Por namespace + id |
| "Actualiza el JSON que almacené" | update_json | Requiere ownerToken; conserva la URL |
| "Guarda un valor bajo una etiqueta / clave" | publish_kv | Crea una nueva ranura KV |
| "Cambia el valor KV que almacené" | set_kv | Requiere ownerToken |
| "¿Qué almacené bajo esa clave?" | get_kv | Por namespace + id + key |
| "Lista mis páginas publicadas" / "¿Qué publiqué?" | search_gallery | Establece mine=true + ownerToken |
| "Explora la galería pública de BrewPage" | search_gallery | q, 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-Tokenen creaciones posteriores para agrupar recursos bajo un mismo propietario. - Pásalo a
delete_resourcepara eliminar contenido. - Pásalo a
get_page(no necesario para lecturas, pero requerido para listar tus propios recursos mediante la API REST).
Configuración
| Variable | Por defecto | Descripción |
|---|---|---|
BREWPAGE_URL | https://brewpage.app | URL base de la API |
Enlaces
- brewpage.app -- Plataforma en vivo
- brewpage.app/llms.txt -- Archivo de contexto para LLM
- brewpage.app/llms-full.txt -- Referencia completa para LLM
- Documentación de API -- Documentación interactiva
- Referencia de API -- Explorador de API Scalar
- Especificación OpenAPI -- Especificación completa
- Habilidad de Claude -- Comando de barra
/brewpage - Plugin de Brewcode -- Suite de plugins para Claude Code
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 usepublicpor defecto. Espacio de nombres omitido = no listado (accesible solo mediante su enlace, no aparece en la galería, no indexado en búsquedas); pasenamespace: "public"explícitamente para listar e indexar. Sin cambios disruptivos:namespacesigue 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 elownerTokenoriginal;password(cuando se establece) se reenvía comoX-Password.
1.4.0 -- 2026-05-12
- Sincronización con la especificación 1.31.0 -- añade variantes raw
text/*yapplication/octet-streamenPOST /api/html; espejo PUT; 422 consupportedTypes.