postgrowth-mcp

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.

Category
访问服务器

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_clickup antes, 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.

  1. Gere um valor novo (ex.: openssl rand -hex 32).
  2. Troque POSTGROWTH_MCP_TOKEN no projeto do PostGrowth na Vercel e faça redeploy. A partir daí, todo token antigo recebe 401.
  3. Distribua o novo por canal privado a quem deve continuar com acesso.
  4. Cada pessoa atualiza o env da 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

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选