Model Context Protocol
O Model Context Protocol (MCP) é um protocolo aberto que permite a modelos chamar com segurança ferramentas expostas por processos ou serviços externos — por exemplo, ler issues do GitHub, consultar bancos de dados ou operar o sistema de arquivos local. O Jarvis Code CLI atua como cliente MCP para conectar essas ferramentas externas e as expõe ao agente ao lado das ferramentas integradas (Read, Bash, Grep etc.), sem diferença de comportamento.
Métodos de conexão
O Jarvis Code CLI suporta três métodos de conexão a servidores MCP:
- stdio: o CLI inicia o servidor MCP local como processo filho e se comunica por entrada e saída padrão. Adequado para ferramentas de linha de comando locais.
- HTTP: o CLI se conecta a um endpoint HTTP já em execução. Adequado para serviços remotos ou processos que precisam rodar continuamente.
- SSE: o CLI se conecta a um endpoint legado HTTP+SSE (Server-Sent Events, um mecanismo de streaming sobre HTTP). Prefira HTTP para servidores MCP novos, mas use
transport: "sse"quando um serviço ainda expõe apenas o transporte SSE mais antigo.
Configuração
A configuração de servidores MCP é escrita em mcp.json, em dois níveis:
- Nível de usuário:
~/.jarvis-code/mcp.json(ou$JARVIS_CODE_HOME/mcp.json), compartilhado entre projetos - Nível de projeto:
.jarvis-code/mcp.jsonno diretório de trabalho, válido apenas para o repositório atual
Entradas com o mesmo nome: a entrada de nível de projeto tem precedência e sobrescreve a de nível de usuário.
Execute /mcp-config na TUI para adicionar, editar ou apagar servidores interativamente, sem editar o arquivo JSON à mão. Execute /mcp para ver o status de conexão de todos os servidores atuais.
Apagar um servidor da configuração não interrompe sessões abertas: ele continua listado em /mcp como removed, suas ferramentas continuam visíveis ali, e chamadas a elas falham com um aviso de remoção, enquanto sessões novas não registram as ferramentas. Do mesmo modo, um servidor adicionado no meio da sessão — editando mcp.json ou instalando um plugin — não é registrado em sessões já abertas; ele entra apenas nas sessões criadas depois.
Quando o Jarvis Code encontra servidores MCP de nível de projeto em uma pasta não confiável, ele mostra o transporte e o alvo de inicialização de cada servidor no prompt de confiança do workspace. O prompt vem com Don't trust como padrão; mova para Trust this folder e confirme apenas depois de revisar o comando e os argumentos listados ou a URL remota. Confiar na pasta habilita os servidores MCP de nível de projeto naquele workspace.
Estrutura do mcp.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
},
"linear": {
"url": "https://mcp.linear.app/mcp"
},
"legacy-events": {
"transport": "sse",
"url": "https://mcp.example.com/sse"
}
}
}Entradas com um campo command são servidores stdio; entradas com um campo url e sem transport são servidores HTTP. Para servidores SSE legados, defina transport como "sse" explicitamente.
Campos opcionais:
| Campo | Tipo | Aplica-se a | Descrição |
|---|---|---|---|
env | Record<string, string> | stdio | Variáveis de ambiente injetadas no processo filho |
cwd | string | stdio | Diretório de trabalho do processo filho |
headers | Record<string, string> | HTTP, SSE | Cabeçalhos estáticos acrescentados a cada requisição |
bearerTokenEnvVar | string | HTTP, SSE | Nome de uma variável de ambiente que contém um bearer token |
enabled | boolean | Todos | Defina como false para desabilitar este servidor |
startupTimeoutMs | number | Todos | Tempo limite de conexão, de 1 a 2147483647 milissegundos; padrão 30000 |
toolTimeoutMs | number | Todos | Tempo limite de 1 a 2147483647 milissegundos para uma única chamada de ferramenta |
enabledTools | string[] | Todos | Lista de ferramentas permitidas |
disabledTools | string[] | Todos | Lista de ferramentas bloqueadas |
Você não precisa definir o tempo limite de conexão nem o de chamada de ferramenta por servidor: [mcp] startup_timeout_ms e [mcp] tool_timeout_ms no config.toml, ou as variáveis de ambiente JARVIS_MCP_STARTUP_TIMEOUT_MS e JARVIS_MCP_TOOL_TIMEOUT_MS, alteram os padrões globais. A precedência é: campo por servidor > variável de ambiente > config.toml > padrão embutido. Veja Arquivos de configuração.
Servidores HTTP e SSE aceitam credenciais estáticas por headers ou bearerTokenEnvVar. Quando OAuth é necessário, execute /mcp-config login <server-name> para concluir a autorização pelo navegador.
Plugins também podem declarar servidores MCP no manifesto. Servidores declarados por um plugin vêm habilitados por padrão e podem ser desabilitados ou reabilitados em /plugins: desabilitar ou remover interrompe as ferramentas em sessões abertas — as chamadas falham com um aviso de remoção — e adicionar ou habilitar um servidor o conecta imediatamente nas sessões abertas. Veja Plugins para os detalhes.
Nota
Entradas stdio em um .jarvis-code/mcp.json de nível de projeto executam comandos locais quando uma sessão começa. Habilite-as apenas em repositórios nos quais você confia.
Nomeação de ferramentas e permissões
Ferramentas MCP são nomeadas no formato mcp__<server>__<tool>, por exemplo mcp__github__create_issue. Regras de permissão aceitam os curingas * e **; por exemplo, mcp__github__* casa com todas as ferramentas daquele servidor. Parâmetros de ferramenta MCP não entram na correspondência de permissão.
Chamadas que não casam com nenhuma regra de permissão disparam um pedido de aprovação. Escolher "Approve for this session" no diálogo de aprovação libera automaticamente as chamadas seguintes do mesmo tipo dentro da sessão atual.
Você também pode pré-configurar regras permanentes em [[permission.rules]] no config.toml:
[[permission.rules]]
decision = "allow"
pattern = "mcp__github__*"
[[permission.rules]]
decision = "deny"
pattern = "mcp__filesystem__write_file"Para a sintaxe completa de regras de permissão, veja Arquivos de configuração.
Segurança
Ao conectar servidores MCP externos, tenha em mente:
- Conecte-se apenas a servidores de origens confiáveis
- Verifique se os nomes e parâmetros de ferramenta parecem razoáveis nos pedidos de aprovação
- Mantenha aprovação manual para ferramentas de alto risco (escrita em arquivos, execução de comandos etc.); evite usar curingas
mcp__*para liberar todas as ferramentas de uma vez
Nota
No YOLO mode (modo YOLO), chamadas de ferramenta MCP são aprovadas automaticamente. Use esse modo apenas quando você confia plenamente nos servidores MCP conectados.
Próximos passos
- Plugins — declare servidores MCP no manifesto de um plugin para empacotá-los e distribuí-los juntos
- Arquivos de configuração — referência completa de campos das regras de permissão