Autenticação MCP
Toda requisição ao servidor MCP da Copera carrega um token bearer no header Authorization:
Authorization: Bearer <token>
O servidor MCP encaminha o token para a Copera Public API, que o valida. O servidor em si não armazena credenciais — ele é um proxy sem estado. Dois tipos de token são aceitos.
Tipos de token
| Prefixo | Tipo | Como é obtido |
|---|---|---|
cp_pat_… | Personal Access Token (PAT) | Criado manualmente nas configurações do seu workspace Copera. Você o cola na configuração do cliente. |
cp_oat_… | Token OAuth do MCP | Gerado automaticamente pelo fluxo OAuth quando um cliente conecta sem um token. |
Personal Access Tokens (cp_pat_)
Um PAT é a forma mais simples de conectar. Você o cria uma vez na Copera, concede a ele escopos e o cola na configuração do seu cliente MCP (veja Conectar). O PAT age em seu nome dentro dos escopos que você concedeu.
PATs são ideais para:
- Clientes que recebem um header
Authorizationestático. - Configurações pessoais/locais onde você controla o arquivo de configuração.
- Scripts e testes com o MCP Inspector.
Para o modelo completo de PAT, escopos e ciclo de vida, veja o guia de autenticação da API.
MCP OAuth (cp_oat_)
Clientes com suporte a OAuth (como os conectores remotos do Claude) podem autenticar sem um token colado. Quando o cliente chama o servidor pela primeira vez sem um bearer válido, o servidor retorna um 401 carregando um desafio de descoberta, e o cliente percorre o fluxo OAuth para obter um token cp_oat_… de curta duração. O usuário aprova os escopos solicitados em uma tela de consentimento da Copera, e o cliente armazena e renova o token de forma transparente.
OAuth é ideal para:
- Usuários finais que não devem manipular tokens brutos.
- Clientes com suporte de primeira classe a conectores remotos.
- Conceder apenas os escopos que um usuário consente, por conexão.
O fluxo OAuth
O servidor implementa a especificação de autorização do MCP sobre os metadados de recurso protegido do OAuth 2.0.
1. Client → MCP server: POST /mcp (no / invalid bearer)
2. MCP server → Client: 401 Unauthorized
WWW-Authenticate: Bearer
resource_metadata="https://mcp.copera.ai/.well-known/oauth-protected-resource/mcp"
scope="access_boards access_channels access_docs access_drive access_notifications"
3. Client fetches the resource-metadata document to discover the authorization server.
4. Client runs the OAuth authorization flow against Copera, user consents to scopes.
5. Client receives a cp_oat_… token and retries POST /mcp with it.
6. MCP server validates the token with the API and proxies the tool call.
Metadados de recurso protegido
O servidor publica os metadados de recurso protegido do OAuth 2.0 em dois caminhos bem conhecidos:
https://mcp.copera.ai/.well-known/oauth-protected-resourcehttps://mcp.copera.ai/.well-known/oauth-protected-resource/mcp
O documento anuncia o recurso, o servidor de autorização e os escopos suportados:
{
"resource": "https://mcp.copera.ai/mcp",
"authorization_servers": ["https://api.copera.ai"],
"scopes_supported": [
"access_boards",
"access_channels",
"access_docs",
"access_drive",
"access_notifications"
],
"bearer_methods_supported": ["header"]
}
O desafio WWW-Authenticate
Um POST /mcp não autenticado retorna 401 com um desafio compatível com a especificação para que os clientes MCP possam iniciar o fluxo automaticamente:
WWW-Authenticate: Bearer resource_metadata="https://mcp.copera.ai/.well-known/oauth-protected-resource/mcp" scope="access_boards access_channels access_docs access_drive access_notifications"
Para tokens cp_oat_…, o servidor valida o token contra o endpoint de introspecção da API antes de fazer o proxy. Um token OAuth inativo ou revogado é rejeitado com um 401. PATs (cp_pat_…) são validados a jusante pela própria Public API.
Escopos e como eles mapeiam para ferramentas
O servidor MCP suporta cinco escopos OAuth. Cada escopo desbloqueia uma família de ferramentas; um token sem o escopo exigido recebe um 403 ao chamar uma ferramenta dessa família.
| Escopo | Desbloqueia | Ferramentas |
|---|---|---|
access_boards | Boards, tabelas, linhas, comentários, exportações | list_boards, get_board, list_tables, get_table_schema, list_rows, get_row, create_row, update_row, delete_row, get_row_markdown, set_row_markdown, list_row_comments, add_row_comment, get_row_attachment_url, export_table |
access_docs | Documentos | search_docs, get_docs_tree, get_doc, get_doc_content, create_doc, set_doc_content, update_doc_metadata, delete_doc |
access_channels | Channels de chat e mensagens diretas | list_channels, send_message |
access_notifications | Notificações | list_notifications, update_notification, delete_notification |
access_drive | Arquivos e pastas do drive | get_drive_tree, search_drive, get_drive_item, get_drive_download_url, create_drive_folder |
get_workspace_info, list_workspace_members, list_workspace_teams e a ferramenta de busca entre entidades search são no nível do workspace e retornam apenas o que o token tem permissão de ver — search filtra os resultados pelas permissões do token.
Se uma ferramenta retornar 403 Forbidden, o token muito provavelmente não tem o escopo exigido. Conceda o escopo no PAT, ou consinta novamente a conexão OAuth com o escopo adicional.
Algumas ferramentas — documentos e drive em particular — são exclusivas de PAT no nível da Public API: integration keys não conseguem alcançá-las. Na dúvida, use um Personal Access Token com os escopos necessários.
Veja também
- Conectar um cliente MCP — endpoint, configuração e testes com o Inspector.
- Referência de ferramentas — cada ferramenta e o escopo que ela precisa.
- Guia de autenticação da API — o modelo de PAT compartilhado com a REST API.