# Shager no Claude Code: um comando e você cria posts para 50 contas pelo terminal

_2026-08-04 · Adicione o servidor MCP remoto do Shager ao Claude Code com claude mcp add e um header bearer, escolha o escopo certo, teste e crie o primeiro post multicontas._

Para conectar o Shager ao Claude Code, rode `claude mcp add --transport http shager https://app.shager.ai/api/mcp --header "Authorization: Bearer shgr_live_..."` e depois confira com `/mcp` dentro de uma sessão. Isso registra o servidor MCP remoto do Shager via streamable HTTP, e o Claude Code passa a listar na hora seus espaços de trabalho, contas conectadas e posts. Com a chave de API em mãos, o processo todo leva uns dois minutos.

Este guia mostra como obter a chave, escolher o escopo certo de configuração, manter o segredo fora do git e qual é a primeira tarefa de verdade que vale a pena rodar.

## O que você precisa antes de começar?

Duas coisas: o Claude Code instalado e uma chave de API do Shager que comece com `shgr_live_`.

Há dois jeitos de conseguir a chave. Se você já tem uma conta no Shager, alguém da sua equipe cria a chave em https://app.shager.ai/dashboard/agents e escolhe os escopos (`read`, `write` e, se quiser, `publish`). Se ainda não tem conta, o próprio agente pode se cadastrar com uma única chamada HTTP e receber uma chave de ambiente de teste. Esse fluxo está explicado em [autocadastro de agentes e a etapa de assumir a conta](/en/blog/agent-self-signup-and-claim), e a versão resumida fica em [/auth.md](/auth.md).

Uma palavra sobre escopos antes de colar qualquer coisa. Na primeira semana, dê ao Claude Code apenas `read` e `write`. Assim ele consegue criar espaços de trabalho, enviar mídia e montar rascunhos, mas não consegue agendar nem publicar nada. O `publish` entra depois, quando você já confiar nos rascunhos que ele produz.

## Como adicionar o servidor com claude mcp add?

A [documentação de MCP do Claude Code](https://code.claude.com/docs/en/mcp) mostra o formato exato para um servidor HTTP remoto com bearer token: `--transport http`, um nome, a URL e `--header`. No caso do Shager, fica assim:

```bash
claude mcp add --transport http shager https://app.shager.ai/api/mcp \
  --header "Authorization: Bearer shgr_live_your_key_here"
```

A documentação avisa que o `claude mcp add` salva a configuração sem validar a credencial. Um erro de digitação na chave não vai falhar aqui. Vai falhar depois, quando o cliente tentar se conectar.

### Qual escopo usar?

A flag `--scope` define onde a configuração fica guardada. Segundo a mesma página da documentação:

| Escopo | Onde fica guardado | Quando usar |
|---|---|---|
| `local` (padrão) | Na sua configuração de usuário, só para este projeto | Você está testando o Shager em um repositório |
| `project` | Em `.mcp.json` no repositório, compartilhado com a equipe | A equipe inteira roda tarefas de conteúdo a partir deste repositório |
| `user` | Na sua configuração de usuário, para todos os projetos | Você quer o Shager disponível em qualquer lugar onde abrir o Claude Code |

Para uma agência, `user` costuma ser a escolha certa. A distribuição não está presa a uma base de código.

```bash
claude mcp add --transport http shager --scope user https://app.shager.ai/api/mcp \
  --header "Authorization: Bearer shgr_live_your_key_here"
```

## Como compartilhar a configuração sem commitar a chave?

Se você quer o escopo `project` para que a equipe receba o servidor automaticamente, não coloque a chave fixa no `.mcp.json`. O Claude Code aceita expansão de variáveis de ambiente em `url` e `headers` de servidores HTTP, com `${VAR}` ou `${VAR:-default}`. Commite isto:

```json
{
  "mcpServers": {
    "shager": {
      "type": "http",
      "url": "https://app.shager.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ${SHAGER_API_KEY}"
      }
    }
  }
}
```

Depois, cada pessoa exporta a própria chave no perfil do shell:

```bash
export SHAGER_API_KEY="shgr_live_your_key_here"
```

Dois detalhes da documentação importam aqui. Se a variável não estiver definida, o Claude Code carrega a configuração mesmo assim e envia o texto literal `${SHAGER_API_KEY}`, com um aviso em `claude mcp list`. Além disso, alguns nomes de credencial reservados, como `ANTHROPIC_API_KEY`, são expandidos de propósito como vazios em headers remotos; por isso, use sempre um nome de variável seu. `SHAGER_API_KEY` funciona.

Ter uma chave por pessoa também torna útil o registro de auditoria em https://app.shager.ai/dashboard/agents. Cada chamada de agente fica registrada com a chave que a fez, então dá para saber de qual sessão saiu cada rascunho.

## Como confirmar que funciona?

No shell:

```bash
claude mcp list
claude mcp get shager
```

Dentro de uma sessão, digite `/mcp`. Um servidor saudável aparece como conectado. Segundo a documentação, um servidor com credenciais inválidas aparece como falho, e o detalhe mostra o status HTTP. No Shager, um 401 significa que o header está ausente ou malformado. O servidor espera exatamente `Authorization: Bearer shgr_...`, com a palavra Bearer e um único espaço.

Em seguida, peça ao Claude algo barato e somente leitura:

```text
Chame whoami no shager e depois liste meus espaços de trabalho com a quantidade de canais de cada um.
```

O `whoami` devolve a organização e os escopos da chave. Se aparecerem `read` e `write`, mas não `publish`, é sinal de que a configuração está funcionando como planejado.

## Qual deve ser a primeira tarefa de verdade?

Não comece com "publique alguma coisa". Comece com um rascunho que exercite as partes do Shager que importam em escala. Um bom primeiro prompt:

```text
No espaço de trabalho "Northside Dental", liste os canais e os grupos de contas.
Envie este vídeo como mídia: https://example.com/clips/whitening-30s.mp4
(width 1080, height 1920, duration_ms 30000).
Depois crie um post em RASCUNHO (sem schedule_at) para o grupo "All locations" como REEL,
com uma legenda por canal que cite a cidade que aparece no nome de cada conta,
first_comment "Agende seu horário: " seguido da cta_url,
cta_url https://northsidedental.example/book, campaign "whitening-oct".
Mostre as legendas de cada canal antes de chamar create_post.
```

Por trás, o Claude encadeia `list_channels`, `list_groups`, `upload_media_from_url` e `create_post`. Três campos dessa chamada fazem o trabalho pesado.

1. `per_channel` dá a cada conta a própria legenda, em vez de cinquenta posts idênticos. Tanto as redes quanto o público percebem duplicatas, e é por isso que recomendamos esse recurso em [como evitar bloqueios por spam ao publicar em escala](/en/blog/avoid-spam-blocks-when-posting-at-scale).
2. `cta_url` ganha um link curto e uma tag UTM separados para cada conta, com o `utm_content` identificando a conta. Os cliques voltam por conta via `get_analytics`.
3. Informar width, height e `duration_ms` no envio permite que o Shager valide o Reel contra as regras de cada rede antes de qualquer coisa entrar na fila.

Como nenhum `schedule_at` foi informado, o resultado é um rascunho. Você revisa no app do Shager ou pede ao Claude um `get_post`.

## Como controlar o que o Claude Code pode fazer?

O Claude Code pede permissão antes de chamar ferramentas MCP, a menos que você as libere. As ferramentas MCP seguem o padrão `mcp__<server>__<tool>`; no Shager, você verá `mcp__shager__create_post`, `mcp__shager__list_posts` e assim por diante. Uma lista de permissões inicial sensata libera as ferramentas de leitura e deixa tudo o que escreve dependendo de confirmação. Junte isso a uma chave sem `publish` e você terá dois freios independentes: o cliente pergunta a você, e o servidor se recusa a agendar de qualquer jeito.

Quando estiver pronto para agendar, crie uma chave nova com `publish`, troque a variável de ambiente e guarde a chave antiga de leitura e escrita para sessões exploratórias. A API REST e o servidor MCP do Shager aplicam os mesmos escopos, então a regra vale seja qual for o caminho que um script tomar.

## Checklist de solução de problemas

| Sintoma | Causa provável | Solução |
|---|---|---|
| `/mcp` mostra falha, 401 | Falta `Bearer ` no header ou a chave foi digitada errado | Adicione o servidor de novo ou confira se a variável foi exportada no shell que abriu o Claude |
| As ferramentas aparecem, mas `create_post` com `schedule_at` devolve 403 | A chave não tem `publish` ou o ambiente de teste ainda não foi assumido | É o esperado. Crie um rascunho ou peça a uma pessoa para adicionar o escopo |
| 429 `rate_limited` | Mais de 120 requisições por minuto em uma chave | Agrupe o trabalho; um único `create_post` cobre muitas contas |
| 422 `rejected` | Uma regra da rede falhou, como um Reel longo demais | Leia a mensagem; ela indica a conta e a regra |

## Perguntas frequentes

### Preciso instalar mais alguma coisa além do Claude Code?

Não. O Shager roda como servidor MCP remoto, então não há processo local, contêiner Docker ou pacote npm para instalar. O Claude Code fala diretamente com https://app.shager.ai/api/mcp via streamable HTTP.

### O Claude Code pode publicar sem que eu aprove cada post?

Só se a chave que ele usa tiver o escopo `publish` e a conta tiver sido assumida por uma pessoa. Sem esse escopo, as chamadas de agendamento e publicação devolvem 403, não importa o que o agente tente. Muitas equipes também ativam a aprovação do cliente em cada espaço de trabalho, o que acrescenta uma revisão humana antes do agendamento.

### O Shager oferece login via OAuth para o Claude Code?

Sim. O servidor MCP do Shager aceita login via OAuth de qualquer cliente MCP que ofereça esse recurso. Adicione o servidor sem a flag `--header`, rode `/mcp` e escolha autenticar; depois entre no Shager e aprove no navegador. O header de chave de API mostrado acima continua funcionando, e é a melhor opção para scripts e máquinas em que ninguém consegue fazer login.

## Próximo passo

Depois que o Claude Code enxergar seus espaços de trabalho, o passo natural é tornar a rotina repetível, em vez de digitar os prompts de novo. O guia sobre [como criar uma skill do Claude para o Shager](/en/blog/build-a-claude-skill-for-shager) transforma o fluxo de rascunho acima em um comando `/shager` que toda a equipe pode rodar, e a [página para agentes](/en/agents) lista todas as ferramentas e endpoints, se você preferir ver o mapa completo primeiro.

---
Source: https://shager.ai/pt/blog/connect-shager-to-claude-code
