# Servidor MCP

> O Mariner inclui um servidor MCP local para que Claude Code, Cursor, Windsurf ou VS Code leiam suas coleções, resolvam ambientes e executem requisições — com os mesmos dados locais e sem nenhuma API key sair do seu Mac.

## Ligar

1. Abra <kbd>⌘,</kbd> → **MCP** e ligue **Enable MCP server**. A linha de status diz *Listening on 127.0.0.1:7654* (troque a porta ali se a 7654 estiver ocupada; portas até 1024 são recusadas).
2. Em **Clients**, escreva um nome — `Claude Code`, `Cursor` — e toque em **Add client**. O Mariner mostra um token **uma única vez**; copie agora.
3. Em **Reachable workspaces**, marque os workspaces que o agente pode ver. Nada é alcançável até você marcar, e os workspaces não marcados nem aparecem na lista, então um agente nunca fica sabendo que existem.
4. Toque em **Self-test** para confirmar que o servidor responde. A lista **Activity** no fim mostra as últimas chamadas, por nome de cliente e ferramenta.

O servidor escuta só no endereço de loopback e para quando o Mariner é fechado. Toda requisição precisa levar o token como header bearer; sem ele, o servidor responde 401.

<figure class="shot">
<img src="/docs/pt-br/mcp.webp" alt="Ajustes → MCP: o servidor ligado e escutando em 127.0.0.1:7654, e o autoteste informando 25 tools disponíveis" width="1600" height="1000" loading="lazy">
<figcaption>AJUSTES → MCP · só loopback, e o autoteste prova que responde</figcaption>
</figure>

## Conectar um cliente

**Claude Code**

```bash
claude mcp add --transport http mariner http://127.0.0.1:7654/mcp --header "Authorization: Bearer <TOKEN>"
```

**Cursor, Windsurf, VS Code** — adicione ao `mcp.json`:

```json
{
  "mcpServers": {
    "mariner": {
      "url": "http://127.0.0.1:7654/mcp",
      "headers": { "Authorization": "Bearer <TOKEN>" }
    }
  }
}
```

Os dois trechos também estão nos Ajustes com um botão **Copy**. O Claude Desktop não tem transporte HTTP próprio — aponte-o para a mesma URL pela ponte `mcp-remote`.

## O que um agente pode fazer

Ler e executar:

| Ferramenta | Propósito |
|---|---|
| `list_workspaces` | Os workspaces que você marcou |
| `list_collections` | Coleções e as requisições dentro delas |
| `get_request` | Configuração completa de uma requisição — credenciais censuradas |
| `send_request` | Executa uma requisição com o ambiente ativo; as regras de captura valem |
| `run_collection` | Executa uma coleção em ordem (até 50 requisições) e informa passa/falha |

Ambientes:

| Ferramenta | Propósito |
|---|---|
| `list_environments` | Ambientes e variáveis, segredos mascarados, o ativo marcado |
| `set_variable` · `add_variable` · `rename_variable` · `remove_variable` | Edita variáveis **não secretas**; cada chamada devolve o que substituiu |
| `audit_environments` | Cruza os ambientes entre si e contra as requisições: chaves faltando, variáveis sem uso, `{{refs}}` sem definição, valores com cara de credencial |
| `clone_environment` | Copia um ambiente, com os espaços secretos vazios |
| `set_active_environment` | Troca o ambiente ativo do workspace aberto |

Bodies e contratos:

| Ferramenta | Propósito |
|---|---|
| `list_body_variants` · `set_body_variant` · `activate_body_variant` | Os payloads com nome que uma requisição guarda («Default», «missing email», «422»). Cada escrita devolve o que substituiu; nunca se apaga nada |
| `get_contract` · `set_contract` | Ler o [contrato](/pt-br/docs/contracts) que uma requisição promete, ou guardar um — com `derive_from_response: true` envia uma vez e o deriva |
| `check_contract` | Enviar e conferir contra o contrato. `variants: "all"` testa cada payload salvo por vez e deixa ativo o que estava |
| `check_collection_contracts` | «Essa API mudou?» para uma coleção inteira; as requisições sem contrato são informadas como não verificadas |

Criar:

| Ferramenta | Propósito |
|---|---|
| `create_collection` · `add_requests` | Coleções e requisições novas; as existentes são informadas, nunca sobrescritas |
| `create_environment` | Um ambiente de workspace novo com variáveis não secretas |
| `import_openapi` · `import_curl` | Os mesmos importadores que você usa pelo menu File |

Deliberadamente **não há ferramenta que altere ou apague** uma coleção ou uma requisição. Um agente pode adicionar e executar; remodelar o que você construiu continua sendo trabalho humano.

## Os segredos ficam em casa

- As variáveis marcadas como secretas voltam como *set* ou *empty*, nunca com o valor.
- Headers, valores de query e campos JSON do body cuja chave parece uma credencial voltam como `<redacted>`.
- Um agente não pode escrever um segredo: as ferramentas recusam valores com cara de credencial e pedem um espaço vazio que você preenche.
- Os bodies de resposta entregues ao agente são cortados em 32.000 caracteres.

## Para os agentes que leem isto

Esta documentação também é legível por máquinas: [`/llms.txt`](/llms.txt) é um índice de links, [`/llms-full.txt`](/llms-full.txt) traz todas as páginas em um arquivo só, e qualquer página é Markdown puro ao acrescentar `.md` na URL — esta é [`/pt-br/docs/mcp.md`](/pt-br/docs/mcp.md). Aponte seu agente para o índice e ele lê a lista de ferramentas e os passos de conexão sem raspar HTML.

<aside class="callout" data-label="PRO">
O servidor MCP faz parte do <a href="/pt-br/docs/free-and-pro">Mariner Pro</a>, mês grátis incluído: sem assinatura, o interruptor explica isso em vez de abrir a porta. O portão fica em <code>start()</code> — todas as vias de entrada caem nele, não só o interruptor dos ajustes — e um servidor que já está rodando para quando uma assinatura expira.
</aside>

---
Source: https://marinerhttp.dev/pt-br/docs/mcp · Mariner docs
