postgrowth-mcp
MCP server that acts as a shim between Claude and the PostGrowth API, exposing seven tools to list clients, manage posts, and handle ClickUp tasks and media uploads. It translates MCP calls into authenticated HTTP requests, keeping business rules and credentials on the server side.
README
postgrowth-mcp
Shim MCP do PostGrowth. Expõe sete ferramentas MCP que viram chamadas HTTP para a API protegida do PostGrowth.
Claude Desktop / Claude Code ──stdio──► postgrowth-mcp ──https──► https://postgrowth.vercel.app/api/mcp
O que este repositório NÃO tem, por decisão: acesso ao Supabase, SQL, chamada direta ao ROI SENSEI, credencial de qualquer serviço, regra de negócio. Ele só traduz ferramenta MCP em chamada HTTP. Quem valida, grava e aplica as regras é o PostGrowth.
Instalação
Não precisa clonar nada. Requer Node 20+ e git instalados.
npx -y github:praticacontroller-pixel/postgrowth-mcp#v0.1.0
O programa não é interativo: ele fala JSON-RPC por stdio e é iniciado pelo seu cliente MCP. Rodar direto no terminal serve só para conferir que a instalação funciona — sem token, ele sai com erro, e é isso mesmo que deve acontecer.
Use sempre a tag (#v0.1.0). Sem tag, o npm pode servir uma versão em cache
e a equipe fica com versões diferentes sem perceber.
Token
POSTGROWTH_MCP_TOKEN é obrigatório e privado. Sem ele o shim se recusa a
iniciar — de propósito: um servidor que sobe e devolve 401 em toda ferramenta é
pior que um que não sobe.
- É segredo, do mesmo nível de uma senha: dá acesso de escrita a posts.
- Peça a quem administra o PostGrowth e receba por canal privado.
- Nunca coloque o valor em arquivo versionado, print, issue ou chat de grupo.
- O token nunca é escrito em log por este programa, e qualquer eco dele vindo do
servidor é substituído por
[REDIGIDO]antes de chegar ao modelo.
Não existe token neste repositório. Ele é público justamente porque não tem segredo nenhum.
Configuração — Claude Desktop
Edite claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"postgrowth": {
"command": "npx",
"args": ["-y", "github:praticacontroller-pixel/postgrowth-mcp#v0.1.0"],
"env": {
"POSTGROWTH_MCP_TOKEN": "COLE_AQUI_O_TOKEN_QUE_VOCE_RECEBEU"
}
}
}
}
Reinicie o Claude Desktop. As sete ferramentas aparecem na lista de ferramentas disponíveis.
Esse arquivo passa a conter o token em texto puro. Trate a máquina de acordo: disco cifrado, sem compartilhar a pasta, sem colar o arquivo em lugar nenhum.
Configuração — Claude Code
claude mcp add postgrowth \
--env POSTGROWTH_MCP_TOKEN=COLE_AQUI_O_TOKEN_QUE_VOCE_RECEBEU \
-- npx -y github:praticacontroller-pixel/postgrowth-mcp#v0.1.0
Conferir:
claude mcp list
Variáveis
| Variável | Obrigatória | Padrão | Para quê |
|---|---|---|---|
POSTGROWTH_MCP_TOKEN |
sim | — | Autenticação nas rotas /api/mcp. Ausente ⇒ o shim não inicia. |
POSTGROWTH_MCP_BASE_URL |
não | https://postgrowth.vercel.app/api/mcp |
Trocar de ambiente. |
POSTGROWTH_MCP_ALLOW_LOCAL |
não | — | true libera host local/interno. Só desenvolvimento. |
POSTGROWTH_MCP_TIMEOUT_MS |
não | 30000 |
Tempo limite por chamada. |
Host local, rede interna (10.x, 192.168.x, 172.16–31.x), endereço de
metadados de nuvem e http:// remoto são bloqueados por padrão. O token
viaja no header Authorization; apontar o shim para um host qualquer seria a
forma mais fácil de entregá-lo a quem não deve recebê-lo.
Ferramentas
| Ferramenta | Efeito | Rota |
|---|---|---|
listar_clientes |
leitura | GET /clientes |
listar_posts_cliente |
leitura | GET /clientes/{id}/posts |
consultar_post |
leitura | GET /posts/{id} |
criar_post |
escrita | POST /posts |
atualizar_post |
escrita | PATCH /posts/{id} |
consultar_tarefa_clickup |
leitura | GET /clickup/tarefa/{taskId} |
subir_midia_clickup |
escrita destrutiva | POST /midias |
Cada ferramenta chama uma rota fixa. Não existe ferramenta genérica de
fetch, de URL, de método HTTP nem de SQL — e há teste automatizado que falha
se alguém tentar acrescentar uma.
Campos derivados (status, status_texto, aprovado_em, design_enviado_em…)
não aparecem em schema nenhum. São calculados pelas regras do PostGrowth e o
servidor recusa quem tentar enviá-los.
⚠️ subir_midia_clickup — leia antes de usar
Esta ferramenta faz upload real dos anexos da tarefa do ClickUp para a biblioteca de mídia do ROI SENSEI da subconta do cliente, através do PostGrowth. A arte enviada passa a aparecer na página pública de aprovação que o cliente vê.
- Com
confirmar_substituicao: true, a mídia atual do post é apagada e substituída. Não existe "acrescentar uma imagem": toda escrita substitui o conjunto inteiro. - Nada disso é desfeito pelo shim.
- Use
consultar_tarefa_clickupantes, confira o vínculo e o cliente, e só então autorize. - Nunca em lote. Uma chamada por vez, cada uma com confirmação humana explícita.
O servidor ainda aplica as próprias travas: recusa vínculo ambíguo, recusa cliente divergente e recusa substituição não confirmada antes de baixar ou enviar qualquer arquivo.
Exemplos de uso
"Lista os clientes do PostGrowth."
"Mostra os posts da Zone Ti que estão aguardando aprovação de texto."
"Cadastra um carrossel para a Zone Ti no dia 01/09 às 18:30, com esse roteiro: …"
"Muda a legenda do post <id> e reprograma para dia 05 às 19h."
"Consulta a tarefa ABC123 do ClickUp e me diz a que post ela está vinculada."
Revogar acesso
O token é único e compartilhado: revogar derruba todo mundo de uma vez, e é assim que se corta o acesso de alguém que saiu da equipe ou de uma máquina perdida.
- Gere um valor novo (ex.:
openssl rand -hex 32). - Troque
POSTGROWTH_MCP_TOKENno projeto do PostGrowth na Vercel e faça redeploy. A partir daí, todo token antigo recebe 401. - Distribua o novo por canal privado a quem deve continuar com acesso.
- Cada pessoa atualiza o
envda própria configuração e reinicia o cliente MCP.
Não há revogação individual — é a limitação de um token compartilhado, e está registrada de propósito.
Desenvolvimento
npm install
npm test # node --test, contra servidor stub local; não toca em produção
Os testes nunca chamam produção: sobem um stub HTTP em 127.0.0.1 e conferem
método, rota, corpo e headers. Nenhum post é criado, nenhuma tarefa nasce no
ClickUp, nenhuma mídia sobe para o ROI SENSEI.
Estrutura:
bin/postgrowth-mcp.mjs entrypoint: valida ambiente e conecta o stdio
src/config.mjs variáveis de ambiente e bloqueio de host
src/http.mjs único fetch do projeto; Bearer, timeout, redação do token
src/tools.mjs as sete ferramentas, cada uma amarrada a uma rota
src/server.mjs servidor MCP (SDK oficial, API de baixo nível)
JS puro (ESM), sem TypeScript e sem build step — npx github: roda o código como
está. Dependência de runtime: uma, @modelcontextprotocol/sdk.
Licença
MIT.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。