brewpage-mcp

Publique HTML, Markdown, KV, JSON e arquivos no brewpage.app a partir de assistentes de IA.

Documentação

brewpage-mcp

npm version License: MIT

Servidor MCP para BrewPage — publique e gerencie conteúdo HTML, KV, JSON e arquivos diretamente de assistentes de IA.

O que é BrewPage

BrewPage é uma plataforma gratuita de hospedagem instantânea projetada para agentes de IA e desenvolvedores. Uma única solicitação POST publica HTML, Markdown, um site com vários arquivos, um documento JSON ou um arquivo binário e retorna seu link HTTPS principal — sem contas, sem chaves de API, sem configuração de infraestrutura. Cada recurso carrega um token de proprietário retornado no momento da criação: use-o para atualizar o conteúdo no lugar, excluir o recurso ou autenticar operações de listagem entre sessões. brewpage-mcp expõe esta API como dezesseis ferramentas MCP tipadas para que qualquer agente compatível — Claude, Codex, Gemini, Cursor, Cline — possa publicar, atualizar, buscar e gerenciar conteúdo HTML, JSON, KV e arquivos do BrewPage sem sair da conversa.

Início Rápido

npx -y brewpage-mcp@1.9.3

Requer Node.js 20 ou superior. Isso inicia o servidor stdio para um cliente MCP.

Instalação

Claude Desktop

Adicione em ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows):

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

Claude Code

Registre um servidor stdio com escopo de projeto:

claude mcp add --transport stdio --scope project brewpage -- npx -y brewpage-mcp@1.9.3

Isso grava .mcp.json na raiz do projeto. Use --scope user para registro com escopo de usuário. Consulte o guia oficial de MCP do Claude Code.

Cursor

Abra Configurações > MCP e adicione:

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

Cline (extensão VS Code)

Abra o painel de configurações MCP do Cline e adicione:

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

Instalação Global

npm install -g brewpage-mcp@1.9.3
brewpage-mcp

Ferramentas

Dezesseis ferramentas estão disponíveis. A criação retorna um token de proprietário; guarde-o para modificar ou excluir o recurso posteriormente. Atualizações (PUT/PATCH) exigem o ownerToken original. Entradas de senha suportadas usam X-Password.

FerramentaFinalidade
publish_htmlPublicar HTML ou Markdown
update_htmlSubstituir o conteúdo da página; formato omitido preserva o formato armazenado
get_pageBuscar conteúdo bruto da página
publish_fileBuscar uma URL de origem e enviar o arquivo
publish_sitePublicar uma única página ou um pacote completo de site com vários arquivos
republish_siteSubstituir o pacote completo do site no mesmo ID/link
publish_jsonPublicar um objeto JSON, array ou string codificada em JSON
get_jsonLer um documento JSON
update_jsonSubstituir um documento JSON
publish_kvCriar um armazenamento KV com uma entrada inicial
set_kvDefinir ou substituir uma chave em um armazenamento KV de propriedade do usuário
get_kvLer um valor KV
update_hostingAlterar o modo de entrega elegível com token de proprietário e versão de hospedagem
delete_resourceExcluir conteúdo HTML, JSON, KV ou arquivo
search_galleryNavegar por conteúdo público ou listar recursos de propriedade do usuário
get_statsLer estatísticas de toda a plataforma

Todas as cinco ferramentas de publicação aceitam deliveryMode: "path" | "subdomain" opcional, enviado apenas como X-Delivery-Mode; corpos JSON e multipartes autorais mantêm seu formato existente. Visibilidade e proteção por senha são escolhas separadas. Namespace omitido ainda gera um namespace priv-<random> não listado; qualquer pessoa com um link não listado e sem senha pode lê-lo. public concede elegibilidade para galeria/busca apenas; conteúdo protegido por senha permanece excluído e não listado, protegido ou não, respostas nativas inelegíveis carregam noindex; HTML público elegível, sites e arquivos podem permitir indexação.

O servidor MCP encapsula um subconjunto do contrato REST público gerado pelo backend. Suas entradas mantêm o comportamento publicado: entradas TTL aceitam 1–30 dias (padrão 15), enquanto limites específicos do proprietário no backend e extensões automáticas elegíveis podem afetar a expiração real. Use o expiresAt retornado. get_page lê HTML renderizado armazenado ou código/texto específico de formato da API; não chama o endpoint de origem original exclusivo do proprietário nem um visualizador de navegador. publish_file envia de uma URL de origem e não expõe entradas de senha ou TTL.

Para uma publicação nova, sites e namespaces não públicos exigem subdomínio Dedicado (subdomain); path explícito é rejeitado. Outras publicações públicas usam padrão Promoção (path) e podem escolher subdomínio Dedicado, incluindo conteúdo protegido por senha. Promoção usa um caminho BrewPage com restrições mais rígidas de documento ativo. Cada site NOVO recebe um host específico da publicação para seu pacote completo, preservando caminhos relativos/relativos à raiz; ativos ausentes retornam 404, sem fallback SPA. Widgets de terceiros ainda podem precisar de configuração do provedor.

As respostas usam o link primário do servidor literalmente, incluindo a barra raiz, e expõem routingCohort, modos real/solicitado/efetivo, deliveryModeMatched, modeLocked, hostingVersion, acesso e o managementLink de ápice confiável quando presente. Nunca reconstrua um host a partir de namespace ou ID. Links de senha NOVOS são URLs limpas: não adicione ?p=; leitores de navegador desbloqueiam através do gateway confiável. Tokens de proprietário e chamadas de API permanecem na origem de API de ápice configurada.

Quando deliveryMode é omitido para uma página public HTML ou Markdown, o servidor pode publicá-la em seu próprio subdomínio se a página precisar de recursos de navegador que um link BrewPage não fornece. publish_html então imprime deliveryModeReason: "auto:<codes>" e uma linha Delivery notice: com a explicação do servidor; passe deliveryMode: "path" para manter um link BrewPage, ou altere-o depois com update_hosting. advisory:<codes> (de publish_html ou update_html) significa que o endereço não foi alterado, mas tais recursos foram encontrados. Os códigos são separados por vírgula, extraídos de storage, cookies, history, downloads, top-navigation, media-capture, pointer-lock, embeds, fullscreen. Nenhuma linha aparece quando nada se aplica.

Um vencedor de deduplicação existente mantém sua URL real, coorte e modo, mesmo quando outro modo foi solicitado. Publicações ANTIGAS exibem Link existente, com metadados de modo nulos; seus links e comportamento legados permanecem inalterados. Atualizações comuns de conteúdo e republicação de sites preservam a hospedagem. Um novo site público não-site elegível pode mudar de modo separadamente com update_hosting.

Hospedagem

update_hosting

Alterar um novo site público não-site elegível entre Promoção e subdomínio Dedicado. Parâmetros: type (html | file | json | kv), namespace, id, ownerToken, deliveryMode (path | subdomain) e expectedVersion (hostingVersion atual do servidor, inteiro ≥1).

A ferramenta envia PATCH /api/{html|files|json|kv}/{namespace}/{id}/hosting exclusivo do proprietário com {deliveryMode, expectedVersion} e X-Owner-Token. Links ANTIGOS, sites e publicações não públicas estão bloqueados. O servidor retorna 403 para autoridade de proprietário inválida, 400 para hospedagem bloqueada e 409 para versão desatualizada; recarregue os metadados atuais antes de tentar novamente. Uma alteração real pausada retorna 503. Selecionar o modo atual retorna 200 sem incrementar a versão. Use o link primário retornado após uma alteração bem-sucedida; a identidade do host da publicação é mantida em ambas as direções.

update_hosting(type="html", namespace="public", id="aBcDeFgHiJ", ownerToken="tok_...", deliveryMode="subdomain", expectedVersion=1)

HTML

publish_html

Publicar conteúdo HTML ou Markdown no BrewPage. Retorna uma URL pública e token de proprietário.

Parâmetros: content (string), format (HTML | MARKDOWN, padrão HTML), namespace (opcional — omita para conteúdo não listado; passe public apenas para elegibilidade de galeria/busca, exceto quando protegido por senha), password (opcional), ttlDays (1–30, padrão 15), filename (opcional, usado como fallback de título), showTopBar (booleano opcional — adiciona uma barra de ferramentas com nome de arquivo, botão Download e alternância de tema), deliveryMode (opcional).

O resultado inclui deliveryModeReason e uma linha Delivery notice: quando o servidor os retorna (veja acima).

Exemplo de prompt que invoca esta ferramenta:

"Salve este relatório HTML para que eu possa compartilhar o link com minha equipe."

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

update_html

Atualizar uma página HTML ou Markdown existente no lugar, preservando sua URL curta. Requer o ownerToken original retornado na criação.

Parâmetros: namespace (string), id (string), content (string, o novo corpo), ownerToken (string), format (alias HTML/Markdown opcional ou linguagem de código suportada, como json, yaml ou typescript; omitido preserva o formato armazenado).

Uma atualização nunca altera o link ou o modo de entrega; uma linha consultiva deliveryModeReason e Delivery notice: é impressa quando o servidor as retorna.

Exemplo de prompt:

"Corrija o erro de digitação no relatório que publiquei antes — mesmo link."

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

get_page

Buscar o conteúdo de uma página HTML BrewPage publicada por namespace e ID.

Retorna o corpo real da resposta como texto, incluindo HTML ou código JSON de autoria. Metadados de hospedagem e o link primário vêm apenas dos cabeçalhos de resposta do servidor; campos JSON dentro da publicação nunca são tratados como metadados de plataforma. A rota de API HTML de ápice existente é mantida.

Parâmetros: namespace (string), id (string), password (opcional, se a página for protegida por senha).

Exemplo de prompt:

"Recupere o conteúdo da minha página publicada para que eu possa continuar editando."

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

Arquivos

publish_file

Enviar um arquivo para o BrewPage buscando-o de uma URL. Retorna uma URL pública e token de proprietário. Suporta imagens, PDFs, vídeo, áudio, arquivos de código e arquivos compactados.

Parâmetros: url (string, a URL de origem a buscar), namespace (opcional — omita para manter o arquivo privado/não listado: acessível apenas pelo link, não na galeria, não indexado em busca; passe public apenas para elegibilidade de galeria/busca), filename (nome de arquivo personalizado opcional), deliveryMode (opcional). Esta ferramenta não expõe entradas base64, senha ou TTL.

Exemplo de prompt:

"Envie este PNG e me dê um link compartilhável."

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

Sites

publish_site

Publicar um site HTML de página única ou vários arquivos. Passe entryContent para uma única página ou files (array de {path, content}) para um site com vários arquivos. Suporta proteção por senha, TTL e agrupamento por token de proprietário.

Parâmetros: exatamente um de entryContent (string) ou files não vazio (array de {path, content}), entry (caminho do arquivo de entrada opcional, padrão index.html), namespace (opcional — omita para conteúdo não listado; public concede elegibilidade de galeria exceto quando protegido por senha), password (opcional), ttlDays (1–30, padrão 15), ownerToken (opcional, agrupa o site sob um proprietário existente), deliveryMode (opcional; sites novos exigem subdomain).

Exemplo de prompt:

"Implante este site estático com index.html e style.css."

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

republish_site

Substituir o conjunto completo de arquivos de um site de propriedade do usuário no mesmo ID e link primário. Arquivos ausentes do novo pacote são removidos; arquivos correspondentes são sobrescritos e novos arquivos são adicionados. A hospedagem permanece inalterada.

Parâmetros: namespace, id, ownerToken, exatamente um de entryContent ou um array files não vazio de {path, content}, entry opcional (padrão index.html), ttlDays (entrada de compatibilidade 1–30; expiração existente é preservada) e tags.

republish_site(namespace="public", id="aBcDeFgHiJ", ownerToken="tok_...", files=[{"path":"index.html","content":"<h1>Updated site</h1>"}])

JSON

publish_json

Publicar um documento JSON no BrewPage. Retorna uma URL pública e token de proprietário. O corpo pode ser passado como uma string JSON ou como um objeto estruturado. Parâmetros: json (string, objeto ou array), namespace (opcional — omita para conteúdo não listado; public concede elegibilidade para galeria/pesquisa, exceto quando protegido por senha), password (opcional), ttlDays (1–30, padrão 15), tags (opcional string[]), ownerToken (opcional proprietário existente), deliveryMode (opcional).

Exemplo de prompt:

"Salve este blob de configuração como um documento JSON que eu possa buscar depois."

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

get_json

Busca um documento JSON publicado por namespace e ID.

Parâmetros: namespace (string), id (string), password (opcional, enviado como X-Password se definido).

Exemplo de prompt:

"Leia de volta o documento JSON que acabei de armazenar."

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

update_json

Atualiza um documento JSON existente no lugar, preservando sua URL curta. Requer o ownerToken original.

Parâmetros: namespace (string), id (string), json (string, objeto ou array), ownerToken (string).

Exemplo de prompt:

"Aumente o campo de versão naquele documento JSON para 4."

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

KV

publish_kv

Cria uma nova entrada KV (chave/valor). Retorna uma URL pública e um token de proprietário. A entrada KV é endereçada por (namespace, id, key); esta ferramenta cria a entrada e emite o id gerado junto com o token de proprietário.

Parâmetros: key (string), value (string), namespace (opcional — omita para conteúdo não listado; public concede elegibilidade para galeria/pesquisa, exceto quando protegido por senha), password (opcional), ttlDays (1–30, padrão 15), tags (opcional string[]), ownerToken (opcional proprietário existente), deliveryMode (opcional).

Exemplo de prompt:

"Armazene o tema selecionado para que eu possa reutilizá-lo na próxima sessão."

publish_kv(key="theme", value="dark")

set_kv

Define ou substitui o valor em um slot (namespace, id, key) existente. Requer o ownerToken original.

Parâmetros: namespace (string), id (string), key (string), value (string), ownerToken (string).

Exemplo de prompt:

"Altere o tema selecionado para claro."

set_kv(namespace="public", id="aBcDeFgHiJ", key="theme", value="light", ownerToken="tok_...")

get_kv

Busca o valor armazenado em (namespace, id, key).

Parâmetros: namespace (string), id (string), key (string), password (opcional, enviado como X-Password se definido).

Exemplo de prompt:

"Qual tema eu armazenei?"

get_kv(namespace="public", id="aBcDeFgHiJ", key="theme")

Descoberta

search_gallery

Navegue pela galeria pública de páginas BrewPage ou liste recursos que você possui. Retorna um resultado paginado com metadados (id, título, contagem de visualizações, data de criação). Todos os parâmetros são opcionais; sem parâmetros, retorna as páginas públicas mais recentes.

Parâmetros: q (consulta de pesquisa opcional), page (opcional, baseado em 0), size (tamanho de página opcional), sort (opcional date | views), mine (booleano opcional — lista apenas recursos pertencentes a ownerToken), ownerToken (obrigatório apenas quando mine=true).

Exemplo de prompt:

"O que eu publiquei na semana passada?"

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

Gerenciamento

delete_resource

Exclui um recurso BrewPage (página HTML, armazenamento KV, documento JSON ou arquivo) usando o token de proprietário recebido na criação.

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

Sites não são suportados por esta ferramenta; use o endpoint REST de exclusão de sites.

Exemplo de prompt:

"Exclua a página que acabei de publicar — namespace public, id aBcDeFgHiJ."

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

get_stats

Obtém estatísticas de uso da plataforma BrewPage (contagem de páginas, contagem de arquivos, armazenamento, totais diários). Suporta um fuso horário IANA opcional para o limite de "hoje".

Parâmetros: tz (string de fuso horário IANA opcional, ex.: Europe/Lisbon, padrão UTC).

Exemplo de prompt:

"Quantas páginas estão atualmente hospedadas no BrewPage?"

get_stats()

Mapeamento Comum de Consulta LLM para Ferramenta BrewPage

Consulta / intenção do LLMFerramentaNotas
"Publique este HTML para que eu possa compartilhá-lo"publish_htmlformat=HTML; salve ownerToken
"Compartilhe estas notas de reunião como um link"publish_htmlformat=MARKDOWN; saída renderizada legível
"Hospede este artefato gerado por IA"publish_htmlnamespace opcional; privado/não listado por padrão; public concede elegibilidade para galeria/pesquisa, exceto quando protegido
"Envie esta imagem / PDF / vídeo"publish_fileBusca de URL; pré-visualização inline na URL curta
"Implante este site estático"publish_sitePasse o array files ou entryContent
"Substitua o site que publiquei"republish_siteToken de proprietário; pacote completo substitui todos os arquivos existentes
"Dê à minha página pública um endereço dedicado"update_hostingNOVO público não-site; token de proprietário + versão de hospedagem atual
"Corrija um erro de digitação na página que compartilhei — mesmo link"update_htmlRequer ownerToken; a URL permanece a mesma
"Remova a página que publiquei"delete_resourceRequer ownerToken da criação
"Leia de volta a página que publiquei"get_pageRetorna conteúdo bruto para edição
"Quantas páginas existem no BrewPage?"get_statsRetorna totais da plataforma
"Armazene o estado JSON entre turnos"publish_jsonRetorna URL curta + token de proprietário
"Leia aquele documento JSON de volta"get_jsonPor namespace + id
"Atualize o JSON que armazenei"update_jsonRequer ownerToken; preserva a URL
"Salve um valor sob um rótulo / chave"publish_kvCria um novo slot KV
"Altere o valor KV que armazenei"set_kvRequer ownerToken
"O que eu armazenei sob aquela chave?"get_kvPor namespace + id + key
"Liste minhas páginas publicadas" / "O que eu publiquei?"search_galleryDefina mine=true + ownerToken
"Navegue pela galeria pública do BrewPage"search_galleryq opcional, sort=date|views

Token de Proprietário

Toda resposta de publicação inclui um token de proprietário — a única credencial que permite atualizar ou excluir seu conteúdo. Salve-o. Ele não pode ser recuperado.

  • Reutilize-o com publish_site, publish_json ou publish_kv para agrupar novos recursos sob um proprietário; as criações REST aceitam X-Owner-Token.
  • Passe-o para delete_resource para remover conteúdo.
  • Passe-o para search_gallery com mine=true para listar recursos pertencentes. get_page não tem entrada de token de proprietário; leituras protegidas usam password.

Configuração

VariávelPadrãoDescrição
BREWPAGE_URLhttps://brewpage.appURL base da API autorizada; nunca um host de publicação

Links

Changelog

1.9.3 — 2026-10-11

  • Corrige descrições de ferramentas/descoberta para acesso não listado, indexação nativa condicional, links de compartilhamento exatos, limites atuais, exceções de TTL de proprietário/extensão, expiração retida de republicação de site e representações de conteúdo da API.
  • Mantém dezesseis ferramentas, todos os padrões de entrada e comportamento HTTP inalterados. Este patch de pacote de metadados é versionado independentemente do contrato de API de backend 1.107.2.

1.9.2 — 2026-10-06

  • Dependências são declaradas como versões exatas, então um servidor instalado usa as mesmas versões de SDK e zod com as quais é construído e testado. Nenhuma mudança funcional.

1.9.1 — 2026-10-06

  • Manutenção de dependências: atualizou as versões de dependência bloqueadas usadas para construir e testar o servidor. Nenhuma mudança funcional.

1.9.0 — 2026-10-06

  • publish_html e update_html imprimem deliveryModeReason e uma linha Delivery notice: quando o servidor os retorna. Nenhuma mudança de entrada.

1.8.0 — 2026-10-05

  • Adiciona update_hosting e a entrada opcional deliveryMode nas ferramentas de publicação; as respostas mostram os metadados de hospedagem do servidor. Contagem de ferramentas: 15 -> 16.

1.7.0 — 2026-06-08

  • Adiciona republish_site — substitui os arquivos de um site publicado na mesma URL. Contagem de ferramentas: 14 -> 15.

1.6.0 — 2026-06-05

  • Publicação privada por padrão. Quando namespace é omitido, todas as cinco ferramentas de publicação (publish_html, publish_file, publish_site, publish_json, publish_kv) agora enviam um namespace não listado explícito (priv-<random>) em vez de deixar o backend usar o padrão public. Namespace omitido = não listado (acessível apenas pelo link, não listado na galeria, não indexado em pesquisa); passe namespace: "public" explicitamente para listar + indexar. Sem quebra: namespace permanece opcional.
  • Respostas de publicação para namespaces não públicos agora anexam um aviso de "Link não listado" explicando como tornar o conteúdo público.
  • Descrições de ferramentas e README reescritos para refletir o modelo privado por padrão.

1.5.0 — 2026-05-21

  • Adiciona 8 novas ferramentas MCP: update_html, publish_json, get_json, update_json, publish_kv, set_kv, get_kv, search_gallery.
  • Contagem de ferramentas: 6 -> 14. Cobertura completa de atualização de HTML, CRUD de JSON, CRUD de KV e descoberta de galeria (incl. listagem com escopo de proprietário via mine=true).
  • Operações de atualização (update_html, update_json, set_kv) exigem o ownerToken original; password (quando definido) é encaminhado como X-Password.

1.4.0 — 2026-05-12

  • Sincronizado com a especificação 1.31.0 — adiciona variantes brutas text/* e application/octet-stream em POST /api/html; espelho PUT; 422 com supportedTypes.

Licença

MIT