> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuração do MCP

> Como adicionar, configurar, autenticar e solucionar problemas de servidores MCP no Devin CLI, incluindo os transportes stdio, Streamable HTTP e SSE.

<h2 id="adding-mcp-servers">
  Como adicionar servidores MCP
</h2>

<h3 id="via-command-line">
  Pela linha de comando
</h3>

A maneira mais rápida de adicionar um servidor MCP:

```bash theme={null}
# servidor stdio — apenas passe o comando após --
devin mcp add <name> -- <command> [args...]

# servidor HTTP — passe a URL como argumento posicional
devin mcp add <name> <URL>

# servidor HTTP — ou use a flag --url
devin mcp add <name> --url <URL>
```

O tipo de transporte é inferido automaticamente: uma URL implica HTTP (Streamable HTTP), e argumentos no final (ou `--command`) implicam stdio.

<Note>Servidores MCP remotos usam Streamable HTTP por padrão. Se o servidor responder com um erro HTTP 4xx, como 404 ou 405, a CLI recorre a SSE na mesma URL. Erros de autenticação (um 401 ou um 403 por escopo insuficiente com um desafio `WWW-Authenticate`) não acionam o fallback — são informados diretamente para que você possa se autenticar. Defina `"transport": "sse"` explicitamente, se necessário — veja [fallback legado para SSE](#legacy-sse-fallback) abaixo.</Note>

Por padrão, os servidores são salvos no escopo **local** (`.devin/mcp_config.local.json`, ignorado pelo git). Use `-s`/`--scope` para alterar:

```bash theme={null}
devin mcp add -s project <name> <URL>   # compartilhado via .devin/mcp_config.json
devin mcp add -s user <name> <URL>      # global (~/.config/devin/mcp_config.json; %APPDATA%\devin\mcp_config.json no Windows)
```

Você também pode gerenciar servidores pela linha de comando:

```bash theme={null}
devin mcp list              # List all configured servers
devin mcp get <name>        # Show details for a specific server
devin mcp remove <name>     # Remove a configured server
devin mcp login <name>      # Authenticate with a server via OAuth
devin mcp logout <name>     # Remove stored OAuth credentials
devin mcp enable <name>     # Ativar um servidor desativado
devin mcp disable <name>    # Desativar um servidor sem removê-lo
```

<h3 id="via-config-file">
  Por arquivo de configuração
</h3>

Adicione servidores diretamente à seção `mcpServers` do arquivo de configuração MCP:

<Note>
  **A localização do arquivo de configuração MCP mudou na v3000.3 (versão Local 3.6).** As versões mais antigas (anteriores à v3000.3) armazenam servidores MCP na chave `mcpServers` dos arquivos de configuração principais (`~/.config/devin/config.json`, `.devin/config.json`, `.devin/config.local.json`). As versões mais recentes os armazenam em arquivos específicos nos mesmos locais: `~/.config/devin/mcp_config.json` (`%APPDATA%\devin\mcp_config.json` no Windows), `.devin/mcp_config.json` e `.devin/mcp_config.local.json`. Todas as entradas de `mcpServers` encontradas nos arquivos de configuração principais são migradas automaticamente para os arquivos específicos durante a inicialização.
</Note>

<Tabs>
  <Tab title="Configuração do projeto">
    ```json theme={null}
    // .devin/mcp_config.json
    {
      "mcpServers": {
        "server-name": {
          "command": "npx",
          "args": ["-y", "@company/mcp-server"],
          "env": {
            "API_KEY": "your-key"
          }
        }
      }
    }
    ```

    <Note>Os servidores configurados no projeto são compartilhados com sua equipe por meio do controle de versão.</Note>
  </Tab>

  <Tab title="Configuração do usuário">
    ```json theme={null}
    // ~/.config/devin/mcp_config.json
    {
      "mcpServers": {
        "my-server": {
          "command": "node",
          "args": ["/path/to/my-server.js"],
          "env": {}
        }
      }
    }
    ```

    <Note>Os servidores configurados no nível do usuário se aplicam a todos os seus projetos.</Note>
  </Tab>

  <Tab title="Override local">
    ```json theme={null}
    // .devin/mcp_config.local.json
    {
      "mcpServers": {
        "server-name": {
          "command": "npx",
          "args": ["-y", "@company/mcp-server"],
          "env": {
            "API_KEY": "my-personal-key"
          }
        }
      }
    }
    ```

    <Note>As configurações locais são ignoradas pelo Git — use-as para Chaves de API pessoais.</Note>
  </Tab>
</Tabs>

***

<h2 id="server-configuration-options">
  Opções de configuração de servidor
</h2>

Os servidores MCP podem ser configurados de duas formas: como um **comando local** (transporte stdio) ou como um **servidor remoto** (transporte HTTP).

<h3 id="local-command-stdio">
  Comando local (stdio)
</h3>

| Campo | Tipo | Obrigatório | Descrição |
| - | - | - | - |
| `command` | string | Sim | O executável que será executado |
| `args` | string\[] | Não | Argumentos de linha de comando |
| `env` | object | Não | Variáveis de ambiente a definir |
| `disabled` | boolean | Não | Defina como `true` para pular este servidor (consulte [Ativando e desativando servidores](#enabling-and-disabling-servers)) |

<h3 id="remote-server-streamable-http">
  Servidor remoto (Streamable HTTP)
</h3>

| Campo | Tipo | Obrigatório | Descrição |
| - | - | - | - |
| `url` | string | Sim | A URL do endpoint do servidor MCP |
| `transport` | string | Não | `"http"` (Streamable HTTP, padrão para servidores baseados em URL) ou `"sse"` (SSE legado). Quando definido como `"http"` ou omitido, a CLI tenta primeiro Streamable HTTP e recorre ao SSE em caso de erros 4xx não relacionados à autenticação, como 404 ou 405 ([conforme a especificação](https://spec.modelcontextprotocol.io/specification/2025-03-26/basic/transports/#backwards-compatibility)); respostas 401 e 403 de escopo insuficiente com um desafio `WWW-Authenticate` são informadas diretamente para que você possa se autenticar. Defina `"sse"` explicitamente se o endpoint SSE do servidor estiver em um caminho diferente. |
| `headers` | object | Não | Cabeçalhos HTTP personalizados para incluir nas requisições |
| `oauthClientId` | string | Não | ID do cliente OAuth pré-registrado, para servidores que não oferecem suporte ao registro dinâmico de clientes (DCR), por exemplo, GitHub. Consulte a seção "Clientes OAuth pré-registrados" abaixo. |
| `oauthClientSecret` | string | Não | Segredo do cliente OAuth, para clientes confidenciais. Use em conjunto com `oauthClientId`. |
| `oauthResource` | string | Não | Override do parâmetro `resource` da RFC 8707 enviado em requisições OAuth (padrão: a URL do servidor MCP). Defina como uma string vazia (`""`) para omitir o parâmetro por completo, para provedores que o rejeitam. Consulte [override do recurso OAuth](#oauth-resource-override). |
| `disabled` | boolean | Não | Defina como `true` para pular este servidor (consulte [Ativando e desativando servidores](#enabling-and-disabling-servers)) |

<h3 id="examples">
  Exemplos
</h3>

<AccordionGroup>
  <Accordion title="GitHub (stdio)">
    ```json theme={null}
    {
      "mcpServers": {
        "github": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"],
          "env": {
            "GITHUB_TOKEN": "ghp_..."
          }
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="Notion (HTTP com OAuth)">
    ```json theme={null}
    {
      "mcpServers": {
        "notion": {
          "url": "https://mcp.notion.com/mcp",
          "transport": "http"
        }
      }
    }
    ```

    <Note>Depois de adicionar um servidor com OAuth, execute `devin mcp login notion` para se autenticar. Consulte [Autenticação](#authentication) abaixo.</Note>
  </Accordion>

  <Accordion title="Linear (HTTP com OAuth)">
    ```json theme={null}
    {
      "mcpServers": {
        "linear": {
          "url": "https://mcp.linear.app/mcp",
          "transport": "http"
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="Atlassian / Jira (HTTP com OAuth)">
    ```json theme={null}
    {
      "mcpServers": {
        "atlassian": {
          "url": "https://mcp.atlassian.com/v1/mcp",
          "transport": "http"
        }
      }
    }
    ```

    <Note>Depois de adicionar, execute `devin mcp login atlassian` para se autenticar. Cada cliente MCP (Windsurf, Claude Code, Devin CLI) mantém sua própria sessão OAuth, então você precisa fazer login separadamente, mesmo que já tenha se autenticado em outra ferramenta.</Note>
  </Accordion>

  <Accordion title="Servidor personalizado (stdio)">
    ```json theme={null}
    {
      "mcpServers": {
        "my-tools": {
          "command": "python",
          "args": ["./scripts/mcp-server.py"],
          "env": {
            "DB_URL": "postgres://localhost/mydb"
          }
        }
      }
    }
    ```
  </Accordion>
</AccordionGroup>

***

<h2 id="authentication">
  Autenticação
</h2>

Alguns servidores MCP remotos exigem autenticação OAuth. Depois de adicionar um servidor com autenticação OAuth à sua configuração, autentique-se usando o comando `login`:

```bash theme={null}
devin mcp login <server-name>
```

Por exemplo:

```bash theme={null}
devin mcp login notion    # Autenticar com o Notion
devin mcp login linear    # Autenticar com o Linear
```

Isso abre uma janela do navegador na qual você pode autorizar o acesso. Os tokens OAuth são armazenados localmente e atualizados automaticamente.

Se quiser, você pode solicitar escopos específicos do OAuth:

```bash theme={null}
devin mcp login notion --scopes read,write
```

Para remover credenciais OAuth armazenadas para um servidor:

```bash theme={null}
devin mcp logout <server-name>
```

<Note>
  Se o servidor oferecer suporte a OAuth, você também receberá automaticamente uma solicitação para se autenticar quando o servidor for usado pela primeira vez.
</Note>

<h3 id="re-authenticating">
  Autenticação novamente
</h3>

As credenciais OAuth armazenadas não duram para sempre: elas expiram, e um administrador pode revogá-las no provedor. Quando isso acontece, o servidor informa o estado **auth-required** em vez de se conectar, e suas ferramentas (e os [prompts](/pt-BR/cli/extensibility/mcp/overview#prompts-as-slash-commands)) deixam de ficar disponíveis até que você faça login novamente.

Para autenticar-se novamente, limpe as credenciais armazenadas e execute o fluxo no navegador outra vez:

```bash theme={null}
devin mcp logout <server-name>
devin mcp login <server-name>
```

`logout` exclui os tokens persistidos desse servidor; `login` executa novamente o fluxo do OAuth e armazena tokens novos. Faça o mesmo após alterar `oauthClientId`, `oauthClientSecret` ou `oauthResource` — as credenciais emitidas com as configurações anteriores não são reutilizadas.

<Note>
  As integrações com o Editor que controlam o Devin CLI via ACP exibem o mesmo estado de autenticação necessária, com uma ação para autenticar-se novamente que limpa as credenciais armazenadas e reabre o fluxo no navegador — equivalente à combinação `logout` + `login` acima.
</Note>

<h3 id="pre-registered-oauth-clients">
  Clientes OAuth pré-registrados
</h3>

A maioria dos servidores MCP baseados em OAuth oferece suporte ao [registro dinâmico de clientes](https://datatracker.ietf.org/doc/html/rfc7591) (DCR), então o Devin CLI se registra automaticamente e você não precisa fornecer nenhuma credencial de cliente.

Alguns provedores (por exemplo, GitHub) não oferecem suporte a DCR e, em vez disso, exigem um cliente OAuth **pré-registrado**. Nesses casos, informe o ID do cliente — e o segredo do cliente OAuth, se for um cliente confidencial — por meio de `oauthClientId` / `oauthClientSecret`:

```json theme={null}
{
  "mcpServers": {
    "my-server": {
      "url": "https://mcp.example.com/mcp",
      "transport": "http",
      "oauthClientId": "Iv1.abc123def456",
      "oauthClientSecret": "${env:MY_MCP_CLIENT_SECRET}"
    }
  }
}
```

Quando `oauthClientId` é definido, o Devin CLI não faz o registro dinâmico do cliente e usa o cliente pré-registrado por você durante o fluxo do OAuth. Execute `devin mcp login <name>` (ou acione o primeiro uso) para se autenticar normalmente.

Você também pode defini-los pela linha de comando ao adicionar um servidor ou fazer login nele:

```bash theme={null}
devin mcp add my-server <URL> --oauth-client-id <ID> --oauth-client-secret <SECRET>
devin mcp login my-server --oauth-client-id <ID> --oauth-client-secret <SECRET>
```

<Note>
  `oauthClientId` / `oauthClientSecret` são credenciais de cliente OAuth usadas durante o fluxo de autorização. **Não** são credenciais genéricas para cada requisição — se um servidor espera um token estático, use `headers` (HTTP) ou `env` (stdio).
</Note>

<Warning>
  Não faça commit de um segredo do cliente OAuth em uma configuração compartilhada. Referencie-o a partir de uma variável de ambiente (`${env:VAR}`), leia-o de um arquivo (`${file:/path}`) ou coloque-o em `.devin/mcp_config.local.json` (ignorado pelo Git). Consulte a seção "Gerenciando segredos" abaixo.
</Warning>

<h3 id="oauth-resource-override">
  Override do recurso OAuth
</h3>

Durante a autorização OAuth e a troca de tokens, o Devin CLI envia um parâmetro `resource` da [RFC 8707](https://datatracker.ietf.org/doc/html/rfc8707) para que o servidor de autorização possa emitir tokens restritos à audiência. Por padrão, o valor é a URL do servidor MCP. Para substituí-lo, use `oauthResource`:

```json theme={null}
{
  "mcpServers": {
    "my-server": {
      "url": "https://my-server.example.com/mcp",
      "transport": "http",
      "oauthResource": ""
    }
  }
}
```

O campo tem três comportamentos:

* **Não definido** (padrão): envia `resource` com a URL do servidor MCP.
* **Valor não vazio**: substitui o padrão pelo valor especificado (por exemplo, um URI de ID de app específico).
* **String vazia (`""`)**: omite totalmente o parâmetro `resource` tanto da URL de autorização quanto da troca de token.

Você também pode defini-lo pela linha de comando ao adicionar ou fazer login em um servidor:

```bash theme={null}
devin mcp add my-server <URL> --oauth-resource ""
devin mcp login my-server --oauth-resource ""
```

Assim como outros campos do OAuth, `oauthResource` oferece suporte à expansão de `${env:VAR}` e `${file:/path}`.

***

<h2 id="enabling-and-disabling-servers">
  Ativando e desativando servidores
</h2>

Você pode desativar temporariamente um servidor MCP sem remover sua configuração. Um servidor desativado é ignorado durante a descoberta de ferramentas — suas ferramentas não aparecerão, e o processo do servidor não será iniciado.

```bash theme={null}
devin mcp disable <name>    # Desativar um servidor
devin mcp enable <name>     # Reativá-lo
```

Isso define a flag `"disabled": true` na entrada do servidor no arquivo de configuração. Use `-s`/`--scope` para selecionar um escopo específico:

```bash theme={null}
devin mcp disable -s project my-server
devin mcp enable -s user my-server
```

Também é possível definir a flag diretamente no arquivo de configuração:

```json theme={null}
{
  "mcpServers": {
    "my-server": {
      "command": "npx",
      "args": ["-y", "@company/mcp-server"],
      "disabled": true
    }
  }
}
```

<Note>Desabilitar é útil quando você quer manter a configuração de um servidor (incluindo variáveis de ambiente e credenciais OAuth), mas deixar de usá-lo temporariamente — por exemplo, para reduzir o tempo de inicialização ou isolar um problema.</Note>

***

<h2 id="managing-secrets">
  Gerenciando segredos
</h2>

<Warning>
  Nunca faça commit de Chaves de API ou segredos no controle de versão. Use `.devin/mcp_config.local.json` para armazenar valores sensíveis.
</Warning>

Para projetos em equipe, o padrão recomendado é:

1. Defina o servidor em `.devin/mcp_config.json` com marcadores de posição ou sem variáveis de ambiente
2. Cada membro da equipe adiciona suas chaves pessoais em `.devin/mcp_config.local.json`

O arquivo de configuração local é automaticamente excluído do Git.

***

<h2 id="mcp-permissions">
  Permissões do MCP
</h2>

Você pode aprovar previamente, negar ou exigir confirmação para ferramentas específicas do MCP na sua configuração de permissões:

```json theme={null}
{
  "permissions": {
    "allow": [
      "mcp__github__list_issues",
      "mcp__github__create_issue"
    ],
    "deny": [
      "mcp__github__delete_repo"
    ],
    "ask": [
      "mcp__linear__*"
    ]
  }
}
```

**Padrões de correspondência de permissão:**

| Padrão | Corresponde a |
| - | - |
| `mcp__server__tool` | Uma ferramenta específica em um servidor específico |
| `mcp__server__*` | Todas as ferramentas em um servidor específico |
| `mcp__*` | Todas as ferramentas MCP em todos os servidores |

***

<h2 id="prompts">
  Prompts
</h2>

Os prompts não exigem configuração própria: qualquer servidor conectado que declare o recurso MCP `prompts` adiciona automaticamente comandos de barra `/mcp__<server>__<prompt>`. Como o nome do comando inclui o nome do servidor, renomear um servidor em `mcpServers` também renomeia seus comandos de prompt. Consulte [Visão geral do MCP — Prompts como comandos de barra](/pt-BR/cli/extensibility/mcp/overview#prompts-as-slash-commands).

***

<h2 id="organization-restrictions">
  Restrições da organização
</h2>

Se você faz parte de uma equipe Enterprise, seu administrador pode restringir a quais servidores MCP você pode se conectar. Um servidor que você configurou pode ser bloqueado se o MCP estiver desativado para a sua equipe ou se ele não estiver na lista de permissões da equipe nem em um **registro de MCP** aplicado — nesse caso, ele não se conectará e suas ferramentas não ficarão disponíveis. Consulte [Configurações da equipe — registro de MCP](/pt-BR/cli/enterprise/team-settings#mcp-registry) para mais detalhes.

***

<h2 id="troubleshooting">
  Solução de problemas
</h2>

<AccordionGroup>
  <Accordion title="Autenticação necessária / erros de OAuth com servidores remotos">
    Se você vir erros como `Auth required` ou `AuthRequired` ao se conectar a um servidor MCP remoto, isso significa que o servidor exige autenticação OAuth.

    Execute:

    ```bash theme={null}
    devin mcp login <server-name>
    ```

    Cada cliente MCP se autentica de forma independente. Mesmo que você já tenha se autenticado no Windsurf ou no Claude Code, é preciso executar `devin mcp login` separadamente no Devin CLI.

    Para verificar seu status de autenticação, tente remover e adicionar as credenciais novamente:

    ```bash theme={null}
    devin mcp logout <server-name>
    devin mcp login <server-name>
    ```
  </Accordion>

  <Accordion title="O servidor não inicia">
    Verifique se o comando funciona fora do Devin CLI:

    ```bash theme={null}
    npx -y @modelcontextprotocol/server-github
    ```

    Confira se todas as variáveis de ambiente obrigatórias estão definidas.
  </Accordion>

  <Accordion title="Ferramentas não aparecem">
    Peça ao agente para listar os servidores MCP e as ferramentas. O servidor pode precisar de alguns instantes para inicializar.
  </Accordion>

  <Accordion title="Permissão negada">
    Verifique a configuração das suas permissões. Por padrão, as ferramentas MCP pedem aprovação. Adicione-as a `permissions.allow` para aprová-las automaticamente.
  </Accordion>

  <Accordion title="Erros de OAuth devido ao parâmetro resource">
    Alguns servidores de autorização rejeitam requisições OAuth que incluem o parâmetro `resource` da RFC 8707. Defina `oauthResource` como uma string vazia para omitir o parâmetro:

    ```json theme={null}
    {
      "mcpServers": {
        "my-server": {
          "url": "https://my-server.example.com/mcp",
          "oauthResource": ""
        }
      }
    }
    ```

    Em seguida, autentique-se novamente:

    ```bash theme={null}
    devin mcp logout my-server
    devin mcp login my-server
    ```

    Consulte [override do recurso OAuth](#oauth-resource-override) para ver o conjunto completo de comportamentos de `oauthResource`.
  </Accordion>

  <Accordion title="fallback legado para SSE">
    Ao se conectar a um servidor HTTP, o Devin CLI tenta primeiro **Streamable HTTP**. Se o servidor responder com um erro HTTP 4xx não relacionado à autenticação (por exemplo, 404 ou 405), ele recorre automaticamente a **SSE legado** na **mesma URL configurada**. Isso segue a [orientação de retrocompatibilidade da spec do MCP](https://spec.modelcontextprotocol.io/specification/2025-03-26/basic/transports/#backwards-compatibility).

    O fallback só é acionado em respostas 4xx não relacionadas à autenticação. Erros de conexão, timeouts e respostas 5xx são reportados diretamente, sem tentativa de SSE. Respostas que exigem autenticação — um 401, ou um 403 por escopo insuficiente, acompanhados de um desafio `WWW-Authenticate` — também são reportadas diretamente, para que você possa executar `devin mcp login <server-name>` (ou conceder o escopo necessário) em vez de ver uma tentativa de SSE. Consulte [Autenticação necessária / erros de OAuth com servidores remotos](#troubleshooting).

    Se o endpoint de SSE do seu servidor estiver em um caminho diferente (por exemplo, `/sse` em vez de `/mcp`), defina `"transport": "sse"` com a URL de SSE para se conectar diretamente, sem tentar Streamable HTTP antes.

    Se ambos os transportes falharem, a mensagem de erro incluirá detalhes das duas tentativas para ajudar na solução de problemas.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.