Pular para o conteúdo

O servidor MCP

O cfourdev expõe a arquitetura publicada a agentes de IA através de um servidor MCP (Model Context Protocol) em:

https://api.cfourdev.com.br/mcp

Um agente que ajuda a escrever código costuma ter acesso ao repositório em que está. O que ele não tem é o mapa: quais sistemas existem na organização, quem fala com quem, onde estão os riscos registrados, e o que quebra se um serviço sair.

O servidor MCP responde a isso. Com ele, perguntas assim passam a ter resposta:

  • “o que depende da API de reservas?”
  • “quais riscos estão registrados no domínio de pagamentos?”
  • “que sistemas conversam com a agenda corporativa?”
  • “me mostre o fluxo de reserva, com os caminhos de falha”

É somente leitura. Nada nele altera modelo nenhum — quem escreve é a linha de comando.

Ele lê o que foi publicado com cfour push, no escopo das organizações de que você é membro, respeitando a visibilidade de cada repositório.

Um repositório privado não aparece para quem é reader, nem numa tela nem numa busca — é a mesma regra, num lugar só.

Ele não lê os arquivos da sua máquina, e não enxerga uma modelagem que nunca foi publicada.

O servidor fala HTTP e autentica por OAuth 2.1 com PKCE. A descoberta é padrão: um cliente sem credencial recebe 401 com o endereço do metadado do recurso, e a partir dali encontra o servidor de autorização sozinho.

Falta uma peça, e é preciso saber disso: não há registro dinâmico de cliente. O client_id tem de chegar ao agente por configuração.

client_id 5849jmr7iticd3fc2ikcfrtec8
porta de retorno 33418

O client_id é público por desenho — um cliente OAuth público não tem segredo — e por isso pode ir para um arquivo versionado.

Terminal window
claude mcp add --transport http --client-id 5849jmr7iticd3fc2ikcfrtec8 \
--callback-port 33418 cfourdev https://api.cfourdev.com.br/mcp

Isso grava a configuração no .mcp.json do projeto:

.mcp.json
{
"mcpServers": {
"cfourdev": {
"type": "http",
"url": "https://api.cfourdev.com.br/mcp",
"oauth": {
"clientId": "5849jmr7iticd3fc2ikcfrtec8",
"callbackPort": 33418
}
}
}
}

Na primeira chamada, o agente abre a tela de login no navegador. A sessão vale uma hora e é renovada sozinha.

Qualquer cliente MCP com transporte HTTP e OAuth serve, desde que aceite um client_id por configuração e permita fixar a porta do laço local de retorno.

A porta de retorno importa. A lista de endereços de retorno aceitos é mantida à mão, e o servidor de autorização casa a URL exata — esquema, host, porta e caminho. Hoje ela aceita http://localhost:33418/callback e http://127.0.0.1:33418/callback, além das variantes com /oauth/callback, e os endereços de retorno do Claude na web. Um cliente que abra o laço local numa porta aleatória não conecta.

Comece pelo catálogo. cfour_catalog diz o que existe e o que você pode ler: as organizações, os repositórios e as modelagens publicadas em cada um, com o estado de indexação de cada uma.

Descubra o vocabulário antes de filtrar. cfour_facets lista as etiquetas, as chaves e valores de metadado, e os tipos de nota que existem numa modelagem. Quem modela escolhe as palavras, e elas não são as mesmas em duas modelagens — filtrar por risco numa modelagem que usa risk devolve zero, e zero parece uma resposta.

Cada resposta carrega a procedência: o repositório, a modelagem, a ref, quando o modelo foi compilado e quando a cópia consultada foi escrita.

Isso existe porque a consulta não lê o arquivo publicado diretamente — ela lê uma cópia preparada na publicação, para responder rápido sem abrir megabytes por pergunta. Nenhuma resposta pode se apresentar mais fresca do que é, e uma modelagem que ainda não foi indexada é dita como tal em vez de aparecer como “nenhum resultado”.

resultados por chamada20 por padrão, 100 no máximo
tamanho de uma chamada32 KB
ritmo4 requisições por segundo, com rajada de 8
tamanho indexável de uma modelagem1 MB comprimido, e 5.000 itens
leitura por consulta10.000 itens. Acima disso a consulta exige um recorte por repo ou modelagem

Uma modelagem acima do teto de indexação publica normalmente — ela só não é respondida pelo MCP, e o catálogo diz isso.

  • escrita. Nenhuma ferramenta altera modelo;
  • registro dinâmico de cliente. O client_id vai por configuração;
  • fluxo de eventos. O servidor atende POST. Um GET /mcp autenticado responde 405 dizendo isso; sem credencial ele responde 401 antes disso, porque quem recusa é a borda e não a aplicação;
  • acesso a modelagem não publicada.