Visão Geral
Configuração
Arquivo de Configuração
Crie~/.chatcli/mcp_servers.json:
Capacidades estendidas do servidor
Além do mínimo (name, command, args, env, transport, enabled, overrides), o entry de cada servidor aceita um conjunto de campos opt-in cobrindo os mesmos casos suportados por Claude Code, Cline, Cursor e AWS EKS MCP — auto-aprovação de tools, filtragem enabledTools/disabledTools, timeouts próprios, working directory, headers HTTP custom e autenticação HTTP (bearer/basic/header, compartilhada por sse e http), além de metadados (description, tags, category) que aparecem em /mcp status.
Qualquer chave fora do schema tipado é preservada verbatim no round-trip (catch-all Extensions), então copiar uma config de outro cliente funciona sem perder anotações vendor-specific.
Referência completa com semântica, exemplos e troubleshooting: Configuração de MCP Servers.
Variáveis de Ambiente
Via Flag do Servidor
Transportes
- stdio
- SSE (HTTP+SSE)
- http (Streamable HTTP)
O transporte Uso: Servidores locais distribuidos como pacotes npm, binarios standalone ou scripts.
stdio inicia um processo local e se comunica via stdin/stdout usando JSON-RPC 2.0:Nomeacao de Ferramentas
Ferramentas MCP são automaticamente prefixadas commcp_ e recebem a descrição do servidor de origem:
O prefixo
mcp_ evita colisões com ferramentas nativas do ChatCLI.Overrides de Built-ins (Shadow + Fallback)
Quando um servidor MCP oferece uma ferramenta que substitui um plugin nativo (ex:@webfetch, @websearch), use o campo overrides para declarar quais built-ins ele substitui. O ChatCLI esconde automaticamente os built-ins listados enquanto o servidor MCP estiver conectado. Se o servidor desconectar, os built-ins são restaurados imediatamente — o usuário nunca perde a capacidade.
Por que usar overrides?
Semoverrides, o LLM vê duas ferramentas que fazem a mesma coisa (ex: @webfetch e mcp_web_fetch) e escolhe aleatoriamente. Com overrides, o comportamento é determinístico: o LLM só vê a ferramenta MCP, sem ambiguidade.
Configuração
Adicioneoverrides na configuração do servidor MCP:
- CLI (mcp_servers.json)
- Helm (values.yaml)
- Operator (Instance CRD)
Como funciona
O sync de shadow acontece a cada turno de conversa, não apenas no startup. Isso significa que se o MCP server cair no meio de uma conversa, os built-ins voltam na próxima mensagem — sem restart necessário.
Regras importantes
| Regra | Detalhe |
|---|---|
| Nomes exatos | Use o nome completo do built-in, incluindo o @ (ex: "@webfetch", não "webfetch") |
| Múltiplos servers | Vários servers podem declarar overrides diferentes. Se dois servers fazem override do mesmo built-in, basta um estar conectado para manter o shadow |
| Server desabilitado | "enabled": false no server = overrides não se aplicam (server nunca conecta) |
| Override parcial | Você pode fazer override de apenas um built-in (ex: só @websearch) e manter os outros visíveis |
| Sem efeito no @coder | O @coder não pode ser overridden via MCP — suas subcommands são tools nativas do modo /coder |
Deploy via Helm
- Servidores MCP Inline
- ConfigMap Existente
mcp_servers.json e monta em /etc/chatcli/mcp/.
Deploy via Operator (Instance CRD)
Quando usando o ChatCLI Operator, configure MCP diretamente no recursoInstance:
- Gera um ConfigMap
<instance>-mcpcommcp_servers.json - Monta em
/etc/chatcli/mcp/(read-only) - Passa
--mcp-config /etc/chatcli/mcp/mcp_servers.jsonao container
O CRD
MCPSpec espelha exatamente o formato do mcp_servers.json. Cada campo do MCPServerSpec corresponde a um campo do JSON — incluindo overrides para shadow de built-ins.Verificando Status
O MCP Manager expoe o status de cada servidor:Servidores MCP Populares
| Servidor | Descrição | Instalação |
|---|---|---|
@anthropic/mcp-server-filesystem | Acesso ao sistema de arquivos | npx -y @anthropic/mcp-server-filesystem /path |
@anthropic/mcp-server-github | Integração com GitHub | npx -y @anthropic/mcp-server-github |
@anthropic/mcp-server-postgres | Queries PostgreSQL | npx -y @anthropic/mcp-server-postgres |
@anthropic/mcp-server-slack | Integração com Slack | npx -y @anthropic/mcp-server-slack |
MCP no Modo Client (TTY)
Desde a versão mais recente, o MCP funciona diretamente no modo interativo (TTY), não apenas no modo servidor.
O ChatCLI auto-detecta o arquivo
~/.chatcli/mcp_servers.json e inicializa os servidores automaticamente ao iniciar.| Modo | Como funciona |
|---|---|
| Chat | Ferramentas listadas no system prompt como contexto informativo |
| Agent | Ferramentas invocaveis via <tool_call name="mcp_<tool>" args='...' /> |
| Coder | Mesmo mecanismo do Agent mode |
Deferred Schemas (Economia de Tokens)
Para economizar tokens no system prompt, o ChatCLI usa deferred schemas:- Apenas nome + descrição são enviados no prompt (lightweight)
- Quando o modelo invoca uma tool sem argumentos, o schema completo e retornado como feedback
- O modelo então re-invoca com os argumentos corretos
Comando /mcp
Gerencie servidores MCP diretamente do terminal interativo. Todos os subcomandos que aceitam um nome de servidor têm autocomplete — pressione Tab após /mcp <subcomando> para listar os servidores configurados.
| Subcomando | Argumento | Descrição |
|---|---|---|
/mcp ou /mcp status [nome] | Opcional | Status de todos os servidores (sem nome) ou de um específico |
/mcp tools [nome] | Opcional | Lista todas as tools (sem nome) ou apenas as do servidor <nome> |
/mcp start <nome> | Obrigatório | Inicia um servidor parado (ou que falhou na inicialização) |
/mcp stop <nome> | Obrigatório | Para um servidor sem removê-lo da config — start depois ressuscita |
/mcp restart [nome] | Opcional | Reinicia um servidor (com nome) ou todos (sem nome) |
/mcp reload | — | Re-lê mcp_servers.json e reconcilia (mesma lógica do hot-reload, manual) |
/mcp logs <nome> | Obrigatório | Últimas 200 linhas de stderr do servidor (ring buffer em memória) |
Exemplo: status e logs
Semântica de start/stop
| Cenário | Comportamento |
|---|---|
/mcp stop foo em um servidor rodando | Mata o processo, drop das tools; mantém a entry no manager |
/mcp start foo depois de stop | Ressuscita usando a config atual em memória; tools voltam |
Hot-reload (edição do JSON) com foo parado pelo usuário | Reload respeita o stop manual; só reinicia se a config de foo mudar |
/mcp restart (sem nome) | Stop all + start all com novo mcpCtx — equivale a um reset completo |
/mcp restart foo | Stop + start apenas de foo, preservando o ctx global e os outros servidores |
| Servidor que falhou no startup (LastError setado) | /mcp start foo limpa LastError e retenta — útil para retry após corrigir o command/env |
A diferença entre
/mcp restart e /mcp reload:/mcp restartforça um restart mesmo se a config não mudou (útil para “recarregar credentials” após editar shell env)./mcp reloadé um diff-and-apply contramcp_servers.json— não reinicia nada que não tenha mudado.
Buffer de logs por servidor
Cada servidor stdio mantém um ring buffer de 200 linhas alimentado pelo stderr do processo filho. Isso significa que:/mcp logs <nome>mostra as últimas 200 linhas sem precisar de--debug;- Servidores muito tagarelas não consomem memória ilimitada — linhas antigas saem do início;
- Capturas como
npm 404, panic stacks e mensagens de inicialização ficam disponíveis mesmo após o startup terminar.
Push notifications — MCP Channels
Além de tools (request/response), o ChatCLI aceita push notifications de qualquer servidor MCP nos três transports. Notifications são mensagens JSON-RPC semid (a forma que a spec reserva para “o server quer me dizer algo, não pediu nada em troca”). O ChatCLI captura, persiste e injeta automaticamente nas próximas conversas, e — opcionalmente — aciona o agent via rules de trigger.
O essencial
- Funciona em
stdio,sseehttp— cada transport tem seu próprio listener:sse: o GET/sseque já carrega tool responses recebe notifications no mesmo stream.http: um GET separado no endpoint (opt-in pelo cliente, opcional pela spec) puxa notifications. Servidores que não suportam respondem 405/404/501 e o listener para limpo, sem retry.stdio: linhas JSON-RPC no stdout semidsão tratadas como notifications.
- Persistência durável em
~/.chatcli/mcp/channels.jsonl(até 10 MiB, rotaciona, recarrega no boot). - Auto-injection das 5 mais recentes no system prompt de
chat/agent/coder(uncached pra não trashar cache). - Filtro per-server: campo
channelsemmcp_servers.jsonaceita allow-list literal. - Rules engine opcional em
~/.chatcli/mcp/triggers.jsoncom 3 modos:notify(banner discreto, default),confirm(yes/no manual),auto(executa o agent — requer whitelist de tools). - Slash commands:
/channel list,/channel ack,/channel pause,/channel rules,/channel confirm <id>,/channel run <seq>,/channel inject.
Exemplo mínimo — server com channels
/channel list, aparecem no banner do próximo prompt e são injetados automaticamente no contexto do agent.
Exemplo — trigger que investiga falhas de CI
~/.chatcli/mcp/triggers.json:
/channel confirm <id> aceita e o agent começa a investigar.
Documentação completa de channels, rules e troubleshooting: MCP Channels. Schema completo do campo
channels e referência do triggers.json: MCP Config.Próximos passos
MCP Channels
Push messages dos três transports (
stdio, sse, http) com persistência durável, filtro por servidor e rules engine (notify/confirm/auto).Plugins agênticos
Sistema de plugins do ChatCLI — comparativo com MCP.
Tool Use Nativo
APIs nativas Anthropic/OpenAI que potencializam MCP.
Configuração MCP
Formato completo de
mcp_servers.json e exemplos.