Usar no Claude, ChatGPT e Gemini (MCP)
Conecte o Lei Vigente como servidor MCP ao Claude, ao ChatGPT ou ao Gemini para ler a lei e conferir respostas antes de confiar nelas.
O Lei Vigente também é um servidor MCP (Model Context Protocol). Conectado a um assistente (Claude, ChatGPT ou Gemini), ele dá ao modelo ferramentas para ler o texto oficial de um artigo, buscar na legislação e verificar todas as citações de uma resposta, em vez de confiar na memória do modelo.
https://api.leivigente.com.br/mcpTransporte Streamable HTTP, sem sessão (stateless), só POST. É o mesmo corpus e as mesmas regras da API
REST: leitura sem login (30 req/min por IP), verificação com uma conta Lei Vigente conectada (OAuth) ou com
uma chave vg_live_….
Como autenticar
| Cliente | Como autenticar |
|---|---|
| ChatGPT, claude.ai, Claude Desktop | Login com a conta Lei Vigente (OAuth), preferível; a URL fica sem chave |
| Claude Code, Codex, Gemini CLI, Cursor, VS Code, Windsurf, OpenCode | Cabeçalho Authorization: Bearer vg_live_… (preferível) |
| App Gemini, Gemini Business ou qualquer cliente que só aceite uma URL | ?key=vg_live_… no fim da URL |
Conta Lei Vigente (OAuth)
O servidor também é um servidor de autorização OAuth 2.1 (registro dinâmico de cliente, PKCE). Ao adicionar
a URL /mcp sem chave, o ChatGPT e o claude.ai detectam o login e abrem uma janela do Lei Vigente: você entra com
o seu e-mail e a sua senha (ou cria a conta ali mesmo), autoriza o assistente e pronto. Não há chave para copiar nem
segredo na URL. O acesso vale pelo plano da sua conta, e a ferramenta minha_conta mostra o
plano e o uso do mês. O token de acesso dura 1 hora e o assistente o renova sozinho; se a conexão ficar 30
dias sem uso, o assistente pede o login de novo.
Chave de API
A chave é aceita de duas formas, conforme o cliente: no cabeçalho Authorization ou, só no /mcp, no
parâmetro key da URL:
https://api.leivigente.com.br/mcp?key=vg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxSem login e sem chave, o servidor também responde, mas só com as ferramentas de leitura; verificar_texto,
verificar_citacoes e extrair_citacoes devolvem um erro explicando como conectar a conta ou configurar a
chave. Crie uma chave em sua conta ou veja Autenticação.
A URL com ?key= contém a sua chave
Trate essa URL como um segredo: não a cole em prompts nem a compartilhe. O Lei Vigente não registra a query
string em log (o log de requisição guarda só o caminho /mcp) e os logs de invocação do Cloudflare estão
desligados, mas a chave fica visível na tela de conectores do assistente. Para trocar a chave, gere uma nova em
sua conta, atualize a URL e revogue a antiga. No ChatGPT e no claude.ai,
prefira o login com a conta Lei Vigente, que não põe segredo na URL.
Claude
claude.ai e Claude Desktop
Conectores personalizados funcionam em todos os planos do Claude (no Gratuito, um conector personalizado; nos planos Pro, Max, Team e Enterprise, vários), no claude.ai, no Claude Desktop e nos apps para celular. São configurados por URL, sem cabeçalhos. O caminho preferido é o login com a conta Lei Vigente (OAuth):
-
Em Personalizar → Conectores (Customize → Connectors), clique em + e depois em Adicionar conector personalizado (Add custom connector).
-
Nome:
Lei Vigente. Em URL do servidor MCP remoto, cole a URL sem chave:https://api.leivigente.com.br/mcp -
Deixe as Configurações avançadas (Client ID e secret do OAuth) em branco: o Claude se registra sozinho. Clique em Adicionar.
-
Clique em Conectar (Connect) no conector. Na janela do Lei Vigente, entre com e-mail e senha (ou crie a conta) e autorize o Claude.
-
Em uma conversa, clique em + → Conectores e ative o Lei Vigente. Pergunte "qual é o meu plano no Lei Vigente?" para conferir a conexão (ferramenta
minha_conta).
Nos planos Team e Enterprise, quem adiciona é um proprietário da organização: Configurações da organização → Conectores (Organization settings → Connectors) → Adicionar → Personalizado → Web, com a mesma URL. Depois, cada pessoa abre Personalizar → Conectores, encontra o Lei Vigente e clica em Conectar para entrar com a própria conta.
A URL com chave continua funcionando, para quem já tem uma chave vg_live_… ou prefere não criar conta:
cole https://api.leivigente.com.br/mcp?key=vg_live_… no passo 2; nesse caso o Claude
não pede login. O Claude acessa o Lei Vigente a partir da nuvem da Anthropic, então a conexão funciona igual em
qualquer rede.
Claude Code
No terminal, o cabeçalho Authorization é a forma preferida (a chave não entra em URL nenhuma):
-
Rode o comando, trocando
vg_live_…pela sua chave:claude mcp add --transport http vigente \ https://api.leivigente.com.br/mcp \ --header "Authorization: Bearer vg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Acrescente
--scope userpara ter o servidor em todos os projetos. -
claude mcp listconfirma a conexão. -
Dentro do Claude Code,
/mcpmostra as ferramentas.
Sem chave, com a conta Lei Vigente: adicione o servidor sem o --header e, dentro do Claude Code, rode /mcp
(ou claude mcp login vigente no terminal) para entrar pelo navegador. Enquanto não houver login,
claude mcp list mostra o Lei Vigente como ! Needs authentication.
ChatGPT
Conectar no ChatGPT
No ChatGPT, servidores MCP entram como plugins. Enquanto o Lei Vigente não aparece no diretório de plugins, ele é adicionado como plugin pessoal, no modo de desenvolvedor, no ChatGPT para web (não no app de celular). Disponível nos planos Plus, Pro, Business, Enterprise e Edu; não funciona nos planos Gratuito e Go.
Plus e Pro:
-
Em Configurações → Segurança e login (Settings → Security and login), ative o Modo de desenvolvedor (Developer mode).
-
Em Configurações → Plugins (ou direto em chatgpt.com/plugins), clique em +.
-
Nome:
Lei Vigente. Descrição: "Legislação brasileira verificada: Planalto, STF, STJ". Em Conexão (Connection), escolha o endereço público e cole a URL sem chave:https://api.leivigente.com.br/mcp -
Na autenticação, escolha OAuth e deixe Client ID e secret em branco: o ChatGPT se registra sozinho. Crie o plugin.
-
O ChatGPT abre a janela do Lei Vigente: entre com e-mail e senha (ou crie a conta) e autorize. Em seguida ele lista as ferramentas encontradas; confira se aparecem
consultar_artigo,verificar_textoe as demais. -
Instale o plugin: em seus plugins (chatgpt.com/plugins?view=personal), abra o Lei Vigente e clique em +.
-
Para usar, na página inicial do ChatGPT troque a aba Chat por Work, digite @ no campo de mensagem e escolha o Lei Vigente. "@Lei Vigente qual é o meu plano?" confere a conexão (ferramenta
minha_conta).
Business, Enterprise e Edu: o modo de desenvolvedor é controlado pelo workspace. No Business, só administradores e proprietários criam plugins de desenvolvedor, nas configurações do workspace, e os publicam para todos; no Enterprise e no Edu, um administrador libera o acesso em Permissões e funções e quem recebeu acesso cria o plugin como acima. Use a mesma URL e OAuth. Em workspaces que ainda não receberam a mudança de nome, a seção aparece como Apps em vez de Plugins.
Plugins de desenvolvedor não se atualizam sozinhos: se o Lei Vigente ganhar ferramentas novas, abra o plugin em Configurações → Plugins e clique em Atualizar (Refresh); em workspaces, o administrador republica.
Quando o Lei Vigente estiver no diretório de plugins, basta procurá-lo, instalar e entrar com a conta; o login é o mesmo. Os planos estão em Planos.
Com uma chave vg_live_…, sem conta, também funciona: no passo 4, escolha Sem autenticação e ponha a
chave na própria URL (https://api.leivigente.com.br/mcp?key=vg_live_…).
As ferramentas do Lei Vigente são todas de leitura (readOnlyHint), então o ChatGPT não pede confirmação antes
de usá-las.
GPT personalizado (Actions, sem MCP)
Alternativa para quem quer distribuir um GPT ou não tem o modo de desenvolvedor: um GPT personalizado com Actions chama a API REST diretamente, e a chave fica guardada no ChatGPT, fora da URL.
- Explorar GPTs → Criar → aba Configurar → Criar nova ação.
- Em Esquema, clique em Importar de URL e informe
https://api.leivigente.com.br/openapi.json(OpenAPI 3.1 comserverseoperationIdem todas as rotas). - Autenticação → Chave de API, tipo Bearer, cole a chave
vg_live_…. Sem chave, só as rotas de leitura funcionam. - Nas instruções do GPT, diga algo como: "Antes de afirmar o que diz um artigo, chame
consultarArtigo. Ao final de qualquer resposta com citações, chameresolverTextocom o texto da resposta e corrija o que vierrevogado,nao_encontradoouverificado_parcial."
Limite do ChatGPT: 30 operações por ação (o Lei Vigente tem 16). Cada chamada de Action é uma requisição da API para efeito de limites.
Gemini
App Gemini (conta pessoal)
O app Gemini na web aceita servidores MCP como apps personalizados (recurso "Gemini Spark"). Requisitos atuais do Google: conta Google pessoal (não de trabalho ou escola), 18 anos ou mais, atividade do app ("Manter atividade") ativada e, por enquanto, disponibilidade limitada a alguns países.
-
Em gemini.google.com, abra Configurações e ajuda → Apps conectados.
-
Em Apps personalizados, clique em Adicionar um app personalizado.
-
Cole a URL do servidor MCP, trocando
vg_live_…pela sua chave (a tela não aceita cabeçalhos, por isso a chave vai na URL; a seção "Recursos avançados" é só para OAuth):https://api.leivigente.com.br/mcp?key=vg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -
Clique em Próxima e siga os passos.
-
Na conversa, digite @ e escolha o Lei Vigente para garantir que o Gemini use as ferramentas naquele pedido.
Para desligar: toggle do app em Apps conectados; para apagar: Mais detalhes → Remover app.
Gemini Business e Gemini Enterprise
Quem configura é um administrador da equipe:
-
Em Configurações e ajuda → Gerenciar equipe → Apps conectados, clique em Adicionar servidor MCP.
-
Nome:
Lei Vigente. -
Em URL do servidor, cole a URL abaixo, trocando
vg_live_…pela chave da equipe:https://api.leivigente.com.br/mcp?key=vg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -
Em autenticação, escolha Sem autenticação (as opções são "Sem autenticação" ou OAuth 2.0; não há campo para chave em cabeçalho).
-
Salve. A conexão nasce desativada: ative-a para que apareça para os membros.
Só o transporte Streamable HTTP é aceito, e é o que o Lei Vigente usa. No Gemini Enterprise, o mesmo servidor entra como data store de MCP personalizado, com as mesmas regras.
Gemini CLI e Gemini Code Assist
No terminal, com a chave em cabeçalho:
-
Rode o comando, trocando
vg_live_…pela sua chave:gemini mcp add --transport http --scope user vigente \ https://api.leivigente.com.br/mcp \ --header "Authorization: Bearer vg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Ou edite
~/.gemini/settings.jsonna mão (o Gemini Code Assist, no VS Code, lê o mesmo arquivo):{ "mcpServers": { "vigente": { "httpUrl": "https://api.leivigente.com.br/mcp", "headers": { "Authorization": "Bearer vg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, "timeout": 15000 } } } -
gemini mcp listno terminal, ou/mcpdentro da sessão, mostra o estado da conexão e as ferramentas.
Outros agentes e IDEs
Codex, Cursor, VS Code, Windsurf e OpenCode aceitam cabeçalho, então a chave fica fora da URL. Sem o cabeçalho, as ferramentas de leitura
continuam funcionando. Troque vg_live_… pela sua chave (ou aponte para uma variável de ambiente, como nos
exemplos).
Codex (CLI e extensão do IDE)
-
Exporte a chave no perfil do shell (
~/.zshrc,~/.bashrc):export VIGENTE_KEY="vg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -
Registre o servidor:
codex mcp add vigente \ --url https://api.leivigente.com.br/mcp \ --bearer-token-env-var VIGENTE_KEYEquivalente em
~/.codex/config.toml(a extensão do Codex para VS Code lê o mesmo arquivo):[mcp_servers.vigente] url = "https://api.leivigente.com.br/mcp" bearer_token_env_var = "VIGENTE_KEY" -
codex mcp listmostra o estado.
Evite http_headers com a chave em texto puro em um .codex/config.toml de projeto, que pode ir para o
repositório.
Cursor
-
Abra Settings → Tools & MCP → New MCP server, ou edite
~/.cursor/mcp.json(global) ou.cursor/mcp.json(projeto). -
Cole a configuração:
{ "mcpServers": { "vigente": { "url": "https://api.leivigente.com.br/mcp", "headers": { "Authorization": "Bearer ${env:VIGENTE_KEY}" } } } } -
Exporte
VIGENTE_KEY=vg_live_…no perfil do shell (ou troque${env:VIGENTE_KEY}pela chave, se o arquivo não for para o repositório). -
Na mesma tela, confirme que o servidor aparece com as ferramentas listadas.
VS Code (GitHub Copilot)
-
Na paleta de comandos, rode MCP: Add Server, ou crie
.vscode/mcp.jsonna mão. -
Cole a configuração. O bloco
inputspede a chave uma vez e a guarda no armazenamento seguro do VS Code:{ "inputs": [ { "type": "promptString", "id": "vigente-key", "description": "Chave da API Lei Vigente (vg_live_…)", "password": true } ], "servers": { "vigente": { "type": "http", "url": "https://api.leivigente.com.br/mcp", "headers": { "Authorization": "Bearer ${input:vigente-key}" } } } } -
Clique em Start sobre o servidor no arquivo e cole a chave quando o VS Code pedir.
-
No Copilot Chat (modo Agent), o ícone de ferramentas mostra as do Lei Vigente.
Windsurf
-
Abra Cascade → MCP → Configure, ou edite
~/.codeium/windsurf/mcp_config.json. -
Cole a configuração, trocando
vg_live_…pela sua chave (Windsurf usaserverUrl, nãourl):{ "mcpServers": { "vigente": { "serverUrl": "https://api.leivigente.com.br/mcp", "headers": { "Authorization": "Bearer vg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } } } } -
Clique em Refresh no painel de MCP do Cascade para carregar as ferramentas.
OpenCode
-
Edite
opencode.json(projeto) ou~/.config/opencode/opencode.json(global). -
Cole a configuração, trocando
vg_live_…pela sua chave:{ "$schema": "https://opencode.ai/config.json", "mcp": { "vigente": { "type": "remote", "url": "https://api.leivigente.com.br/mcp", "headers": { "Authorization": "Bearer vg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, "enabled": true } } } -
Reinicie o OpenCode;
/mcplista as ferramentas conectadas.
Qualquer outro cliente
Servidor HTTP remoto (Streamable HTTP):
https://api.leivigente.com.br/mcpCom Authorization: Bearer vg_live_… quando o cliente permite cabeçalhos; senão, a chave na própria URL:
https://api.leivigente.com.br/mcp?key=vg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxO servidor responde em JSON a qualquer cabeçalho Accept, e GET /mcp devolve 405 (não há sessão nem
stream de eventos). Para depurar sem IDE:
bunx @modelcontextprotocol/inspector --cli \
https://api.leivigente.com.br/mcp --method tools/listFerramentas
| Ferramenta | Faz | Conta ou chave |
|---|---|---|
listar_diplomas | Siglas disponíveis, com nome, número da lei, contagem de artigos e data da última ingestão | Não |
consultar_diploma | Metadados e sumário (faixa de artigos por título, capítulo e seção) | Não |
consultar_artigo | Artigo inteiro: caput, parágrafos, incisos, alíneas, anotações, alterado_por, vizinhos | Não |
consultar_dispositivo | Um dispositivo pelo ref_key (CF.5.LXXVIII, CPC.1003.5) | Não |
versoes_dispositivo | Redações anteriores detectadas pelas ingestões | Não |
consultar_sumula | Enunciado de súmula do STF ou do STJ (vinculante: true para Súmula Vinculante) | Não |
buscar | Busca textual em português (aspas para frase exata, - para excluir) | Não |
alteracoes_recentes | Feed de inclusões, novas redações, revogações e cancelamentos detectados | Não |
extrair_citacoes | Extrai as citações de um texto (artigos, súmulas, temas, OJs, enunciados), com posição, sem verificar | Sim |
verificar_citacoes | Verifica até 100 citações estruturadas (status, texto, hierarquia) | Sim |
verificar_texto | Extrai e verifica todas as citações de um texto livre; a ferramenta para conferir respostas | Sim |
minha_conta | Plano da conta conectada, uso do mês e limites | Conta (OAuth) |
As respostas são o mesmo JSON das rotas REST correspondentes (veja Corpus e
Verificação). O servidor envia ao modelo instruções de uso: ler o artigo antes de
afirmar o que ele diz, tratar revogado: true como redação revogada, citar o ref_key.
Só verificado confirma a citação. verificado_inferido e ambiguo indicam que o diploma não estava
explícito no texto e exigem conferência. nao_suportado e diploma_desconhecido indicam que a citação
está fora do corpus, não que ela está errada.
Como usar em uma conversa
Com o conector ativo, o assistente chama as ferramentas sozinho quando a pergunta envolve lei brasileira. Pedidos que funcionam bem:
- "O que diz o art. 22 do Código Eleitoral? Leia o artigo inteiro antes de responder."
- "Confira com o Lei Vigente todas as citações desta resposta e me diga quais estão erradas ou revogadas: [cole a resposta]."
- "Qual artigo do CDC trata de propaganda enganosa? Busque e cite o texto."
- "A Súmula 7 do STJ ainda vale? E a Súmula Vinculante 11?"
Para forçar a verificação, peça explicitamente: "use verificar_texto no texto abaixo". O resultado traz
um resumo no topo e, por citação, o status e o texto oficial. nao_encontrado vem com sugestao
quando a frase ao redor determina um dispositivo; quando não há diploma explícito, ambiguo vem com
candidatos para o cliente escolher.
Limites e contagem
Cada mensagem JSON-RPC é uma requisição para efeito de limites: a inicialização do conector (initialize
tools/list) e cada chamada de ferramenta contam individualmente. Sem chave, o limite é por IP, e as chamadas do claude.ai, do ChatGPT e do app Gemini saem da infraestrutura de cada fornecedor, ou seja, de IPs compartilhados com outros usuários do conector. Com a conta conectada (OAuth) ou com chave, valem os limites do plano, contados na cota mensal como qualquer requisição REST.
Quando um limite (por minuto ou mensal) é atingido numa chamada de ferramenta, a resposta não é um HTTP 429:
a ferramenta devolve um erro (isError: true) com a mensagem do limite, para o assistente explicar o que
houve em vez de mostrar uma falha de conexão. As demais mensagens (initialize, tools/list) continuam
recebendo 429 com Retry-After.
Dados
As ferramentas recebem exatamente o que a API REST receberia (texto, ref_key, termos de busca) e
seguem as mesmas garantias: nada do conteúdo é guardado nem vai a log; veja Dados e
privacidade. O que Anthropic, OpenAI ou Google fazem com o conteúdo da conversa é regido
pelos termos de cada assistente, não por esta página.