brewpage-mcp
Publique HTML, Markdown, KV, JSON e arquivos no brewpage.app a partir de assistentes de IA.
Documentação
brewpage-mcp
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.
| Ferramenta | Finalidade |
|---|---|
publish_html | Publicar HTML ou Markdown |
update_html | Substituir o conteúdo da página; formato omitido preserva o formato armazenado |
get_page | Buscar conteúdo bruto da página |
publish_file | Buscar uma URL de origem e enviar o arquivo |
publish_site | Publicar uma única página ou um pacote completo de site com vários arquivos |
republish_site | Substituir o pacote completo do site no mesmo ID/link |
publish_json | Publicar um objeto JSON, array ou string codificada em JSON |
get_json | Ler um documento JSON |
update_json | Substituir um documento JSON |
publish_kv | Criar um armazenamento KV com uma entrada inicial |
set_kv | Definir ou substituir uma chave em um armazenamento KV de propriedade do usuário |
get_kv | Ler um valor KV |
update_hosting | Alterar o modo de entrega elegível com token de proprietário e versão de hospedagem |
delete_resource | Excluir conteúdo HTML, JSON, KV ou arquivo |
search_gallery | Navegar por conteúdo público ou listar recursos de propriedade do usuário |
get_stats | Ler 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 LLM | Ferramenta | Notas |
|---|---|---|
| "Publique este HTML para que eu possa compartilhá-lo" | publish_html | format=HTML; salve ownerToken |
| "Compartilhe estas notas de reunião como um link" | publish_html | format=MARKDOWN; saída renderizada legível |
| "Hospede este artefato gerado por IA" | publish_html | namespace opcional; privado/não listado por padrão; public concede elegibilidade para galeria/pesquisa, exceto quando protegido |
| "Envie esta imagem / PDF / vídeo" | publish_file | Busca de URL; pré-visualização inline na URL curta |
| "Implante este site estático" | publish_site | Passe o array files ou entryContent |
| "Substitua o site que publiquei" | republish_site | Token de proprietário; pacote completo substitui todos os arquivos existentes |
| "Dê à minha página pública um endereço dedicado" | update_hosting | NOVO 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_html | Requer ownerToken; a URL permanece a mesma |
| "Remova a página que publiquei" | delete_resource | Requer ownerToken da criação |
| "Leia de volta a página que publiquei" | get_page | Retorna conteúdo bruto para edição |
| "Quantas páginas existem no BrewPage?" | get_stats | Retorna totais da plataforma |
| "Armazene o estado JSON entre turnos" | publish_json | Retorna URL curta + token de proprietário |
| "Leia aquele documento JSON de volta" | get_json | Por namespace + id |
| "Atualize o JSON que armazenei" | update_json | Requer ownerToken; preserva a URL |
| "Salve um valor sob um rótulo / chave" | publish_kv | Cria um novo slot KV |
| "Altere o valor KV que armazenei" | set_kv | Requer ownerToken |
| "O que eu armazenei sob aquela chave?" | get_kv | Por namespace + id + key |
| "Liste minhas páginas publicadas" / "O que eu publiquei?" | search_gallery | Defina mine=true + ownerToken |
| "Navegue pela galeria pública do BrewPage" | search_gallery | q 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_jsonoupublish_kvpara agrupar novos recursos sob um proprietário; as criações REST aceitamX-Owner-Token. - Passe-o para
delete_resourcepara remover conteúdo. - Passe-o para
search_gallerycommine=truepara listar recursos pertencentes.get_pagenão tem entrada de token de proprietário; leituras protegidas usampassword.
Configuração
| Variável | Padrão | Descrição |
|---|---|---|
BREWPAGE_URL | https://brewpage.app | URL base da API autorizada; nunca um host de publicação |
Links
- brewpage.app — Plataforma ao vivo
- brewpage.app/llms.txt — Arquivo de contexto LLM
- brewpage.app/llms-full.txt — Referência LLM completa
- Documentação da API — Documentos interativos
- Referência da API — Explorador de API Scalar
- Especificação OpenAPI — Especificação completa
- Habilidade Claude — Comando de barra
/brewpage - Plugin Brewcode — Suíte de plugins Claude Code
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
zodcom 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_htmleupdate_htmlimprimemdeliveryModeReasone uma linhaDelivery notice:quando o servidor os retorna. Nenhuma mudança de entrada.
1.8.0 — 2026-10-05
- Adiciona
update_hostinge a entrada opcionaldeliveryModenas 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ãopublic. Namespace omitido = não listado (acessível apenas pelo link, não listado na galeria, não indexado em pesquisa); passenamespace: "public"explicitamente para listar + indexar. Sem quebra:namespacepermanece 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 oownerTokenoriginal;password(quando definido) é encaminhado comoX-Password.
1.4.0 — 2026-05-12
- Sincronizado com a especificação 1.31.0 — adiciona variantes brutas
text/*eapplication/octet-streamemPOST /api/html; espelho PUT; 422 comsupportedTypes.