Segurança
Modelo de segurança de nível enterprise para o GitScrum MCP Server. Sem operações de exclusão, comunicação exclusivamente HTTPS, rate limiting e autenticação OAuth 2.0.
Código Aberto — O GitScrum MCP Server é código aberto sob a licença MIT. Disponível no npm e no GitHub. Servidor Model Context Protocol para GitScrum — Claude, GitHub Copilot, Cursor e qualquer cliente compatível com MCP têm acesso operacional completo à sua stack de gerenciamento de projetos.
O GitScrum MCP Server é construído sobre uma filosofia de design security-first. Cada decisão de arquitetura prioriza a segurança dos dados, acesso controlado e proteção contra operações acidentais ou maliciosas através de assistentes de IA. Este documento cobre o modelo de segurança completo.
Filosofia de Design
Assistentes de IA são ferramentas poderosas, mas introduzem uma nova categoria de risco: uma IA pode executar operações mais rápido e em maior escala do que um humano clicando em uma interface. Uma instrução mal interpretada como "limpe as tarefas antigas" poderia ter consequências catastróficas se a IA tiver acesso irrestrito.
O GitScrum MCP Server aborda isso através de defesa em profundidade — múltiplas camadas independentes de proteção que cada uma reduz o risco de forma independente. Mesmo se uma camada falhar, as outras previnem perda de dados ou acesso não autorizado.
Princípios fundamentais:
- Seguro por padrão. Operações que destroem dados são bloqueadas completamente.
- Menor privilégio. O servidor MCP só tem acesso ao que sua conta GitScrum pode acessar.
- Sem segredos em trânsito. Credenciais ficam no navegador; tokens ficam na sua máquina.
- Erros transparentes. Falhas de segurança produzem mensagens de erro claras e acionáveis sem expor detalhes internos.
Restrições de Operação
Apenas CREATE, READ, UPDATE
O MCP Server aplica um modelo de operação estrito. Apenas três tipos de operações são permitidos:
| Operação | MCP Server | Aplicação Web GitScrum |
|---|---|---|
| CREATE | Permitido | Permitido |
| READ | Permitido | Permitido |
| UPDATE | Permitido | Permitido |
| DELETE | Bloqueado | Permitido |
Esta restrição se aplica a todas as 29 ferramentas e todas as mais de 160 operações. Não existe ferramenta, ação ou combinação de parâmetros que possa excluir dados pelo servidor MCP.
Por que sem operações DELETE
Excluir dados de projetos — tarefas, sprints, user stories, registros de clientes — é uma ação irreversível com consequências potencialmente graves. Quando um assistente de IA interpreta uma instrução em linguagem natural, há sempre uma probabilidade não-nula de interpretação incorreta. A instrução "remova as tarefas antigas do backlog" pode significar arquivar, mover ou filtrar — não destruir permanentemente.
Ao bloquear DELETE na camada MCP, eliminamos toda uma classe de risco:
- Interpretação incorreta. A IA não pode excluir dados mesmo se interpretar mal a instrução.
- Injeção de prompt. Prompts maliciosos não podem disparar destruição de dados através de ferramentas MCP.
- Erros em lote. Um loop que processa múltiplos itens não pode escalar para exclusão em massa.
- Escopo acidental. "Exclua a tarefa de teste" não vai acidentalmente expandir para "excluir todas as tarefas."
Operações destrutivas requerem a aplicação web GitScrum, onde a interface exige confirmação humana explícita com contexto visual do que será excluído.
Defesa em profundidade
Operações DELETE são bloqueadas em múltiplas camadas independentes:
- Camada MCP. Nenhuma ferramenta DELETE existe no servidor MCP. O schema de ferramentas fisicamente não consegue expressar uma operação de exclusão.
- Camada API. A API do GitScrum valida as origens das requisições e bloqueia requisições DELETE de clientes MCP, mesmo que um servidor MCP modificado tentasse enviá-las.
- Camada de autenticação. O controle de acesso baseado em papéis padrão se aplica. Usuários somente leitura não podem excluir por nenhum canal.
Comunicação Exclusivamente HTTPS
Toda comunicação entre o servidor MCP e a API do GitScrum usa HTTPS:
- TLS 1.2 no mínimo. Conexões usando versões mais antigas de TLS são rejeitadas.
- Validação de certificado obrigatória. O servidor valida a cadeia de certificados SSL da API. Certificados autoassinados ou inválidos são rejeitados.
- Sem fallback para HTTP. O servidor não tenta conexões HTTP não criptografadas sob nenhuma circunstância.
Isso garante que os dados em trânsito — tarefas, detalhes de projetos, tokens de autenticação — são criptografados entre o servidor MCP na sua máquina e a API do GitScrum na nuvem.
Comunicação local
A comunicação entre o cliente de IA (Claude Desktop, VS Code, Cursor) e o servidor MCP usa stdio (entrada/saída padrão). Como ambos os processos rodam na sua máquina local, esta comunicação nunca atravessa uma rede. Não há superfície de ataque em nível de rede para a conexão cliente-servidor.
Segurança da Autenticação
OAuth 2.0 Device Authorization Grant
O servidor MCP autentica via OAuth 2.0 Device Authorization Grant (RFC 8628). Este fluxo foi escolhido porque:
- Sem credenciais no servidor MCP. Sua senha é digitada apenas no navegador.
- Sem URI de redirecionamento necessária. Servidores MCP se comunicam via stdio, não HTTP, então os fluxos tradicionais de redirecionamento OAuth não se aplicam.
- Aprovação visível pelo usuário. Você vê exatamente o que está sendo autorizado no navegador antes de aprovar.
Para um tutorial detalhado do fluxo de autenticação, veja Autenticação.
Isolamento de tokens
Tokens de autenticação existem em exatamente dois lugares:
- Em memória no processo do servidor MCP
- Em disco em
~/.gitscrum/auth.json
Tokens nunca são:
- Enviados para o provedor do modelo de IA (Anthropic, OpenAI, etc.)
- Incluídos no contexto ou histórico de conversa da IA
- Registrados no console, arquivos ou saídas de erro
- Transmitidos para qualquer serviço de terceiros
O assistente de IA sabe que a autenticação foi bem-sucedida e quais workspaces estão disponíveis, mas não tem acesso ao valor do token em si.
Permissões de armazenamento de tokens
O arquivo de token em ~/.gitscrum/auth.json é criado com permissões restritas:
| Plataforma | Permissões |
|---|---|
| macOS/Linux | 600 (leitura/escrita apenas do proprietário) |
| Windows | ACL apenas do usuário atual |
Isso impede que outros usuários na mesma máquina leiam seus tokens de autenticação.
Rate Limiting
Limites da API
A API do GitScrum aplica limites de taxa para prevenir abuso e garantir uso justo entre todos os clientes:
- Requisições que excedem o limite de taxa recebem uma resposta
429 Too Many Requests - O servidor MCP apresenta erros de rate limit ao assistente de IA com uma mensagem clara
- Os limites de taxa são resetados automaticamente após o período de cooldown
Rate limiting na autenticação
Endpoints de autenticação têm rate limiting adicional para prevenir ataques de força bruta:
- Tentativas falhas de código de dispositivo são contadas por cliente
- Falhas repetidas disparam bloqueio automático com duração crescente
- Autenticação bem-sucedida reseta o contador de falhas
Lidando com rate limits
Quando limitado por taxa, o assistente de IA recebe um erro claro indicando que o limite foi atingido. A abordagem recomendada é aguardar antes de tentar novamente. O servidor MCP não faz retry automático de requisições limitadas por taxa, dando ao assistente de IA controle total sobre a lógica de retry.
Tratamento de Erros
Códigos de erro padronizados
O servidor MCP traduz as respostas da API em mensagens de erro consistentes e informativas. Cada erro inclui um código de status, uma mensagem legível por humanos e contexto suficiente para o assistente de IA se recuperar ou informar o usuário.
| Código de Status | Significado | Resposta da IA | Ação do Usuário |
|---|---|---|---|
| 401 Unauthorized | Autenticação necessária ou token expirado | Solicita reautenticação | Fazer login novamente |
| 403 Forbidden | Permissões insuficientes ou restrição de plano | Explica a restrição | Verificar permissões da conta ou fazer upgrade do plano |
| 404 Not Found | Recurso não existe ou está inacessível | Informa que o recurso não foi encontrado | Verificar o ID ou slug do recurso |
| 422 Validation Error | Dados de entrada inválidos (campos ausentes, formato incorreto) | Informa erros específicos de campo | Corrigir a entrada e tentar novamente |
| 429 Rate Limited | Muitas requisições na janela de tempo | Informa que o limite foi atingido | Aguardar antes de tentar novamente |
| 500 Server Error | Falha inesperada no servidor | Informa um problema temporário | Tentar novamente após um momento |
Mensagens de erro seguras
As mensagens de erro são projetadas para ser úteis sem expor informações sensíveis:
| Divulgado | Protegido |
|---|---|
| Autenticação é necessária | Detalhes do token ou tempos de expiração |
| Nível de permissão ou plano necessário | Lógica de autorização interna |
| Recurso não encontrado | Se o recurso já existiu alguma vez |
| Erros de validação de campo | Mapeamentos internos de campos ou schema do banco de dados |
| Erro genérico do servidor | Stack traces, estado interno ou detalhes de infraestrutura |
Degradação elegante
Quando a API do GitScrum está inacessível (problemas de rede, manutenção), o servidor MCP:
- Retorna um erro claro ao assistente de IA indicando que a API está indisponível
- Não faz cache de dados desatualizados nem retorna resultados obsoletos
- Não faz retry automaticamente, permitindo que o usuário decida quando tentar novamente
Isso garante que você nunca atue com base em dados de projeto desatualizados sem saber.
Sem Registro de Credenciais
O servidor MCP aplica regras estritas sobre o que aparece em logs e saída:
Nunca registrado:
- Senhas (o servidor nunca tem acesso a elas)
- Tokens de autenticação (acesso ou atualização)
- Chaves de API
- Dados pessoais do usuário além do que está nas respostas da API
Registrado para depuração (quando o modo verbose está habilitado):
- Nomes e ações de ferramentas chamadas
- Caminhos de endpoints da API (sem cabeçalhos de autenticação)
- Códigos de status e mensagens de erro
- Tempo de requisição/resposta
Variáveis de Ambiente
Duas variáveis de ambiente afetam o comportamento de segurança:
| Variável | Propósito | Consideração de Segurança |
|---|---|---|
GITSCRUM_TOKEN | Substituir o token armazenado por um valor direto de token | Use apenas em ambientes CI/CD seguros. Variáveis de ambiente podem ser visíveis para outros processos. |
GITSCRUMAPIURL | Substituir a URL do endpoint da API | Altere apenas para desenvolvimento. Produção deve usar o padrão https://services.gitscrum.com. Alterar isso pode rotear dados para um servidor não confiável. |
Em uso de produção, nenhuma variável deve ser definida. A configuração padrão roteia todo o tráfego para a API oficial do GitScrum via HTTPS.
Boas Práticas para Ambientes Enterprise
Para desenvolvedores
- Mantenha o servidor MCP atualizado. Execute
npx -y @gitscrum-studio/mcp-serverpara sempre usar a versão mais recente, que inclui patches de segurança. - Faça logout em máquinas compartilhadas. Sempre execute
auth_logoutquando terminar em uma máquina que outros podem acessar. - Não defina
GITSCRUM_TOKENem perfis de shell. Se necessário para automação, use um gerenciador de segredos ou ambiente com escopo definido. - Revise as ações da IA. Antes de confirmar operações que modificam dados, revise o que o assistente de IA propõe.
Para administradores de workspace
- Use controle de acesso baseado em papéis. Atribua papéis apropriados no GitScrum. As operações MCP herdam as permissões do papel do usuário.
- Monitore o log de auditoria. Todas as operações MCP são registradas no lado do servidor no feed de atividades do GitScrum com a identidade do usuário.
- Aplique requisitos mínimos de plano. Certas ferramentas Insights PRO requerem níveis de plano apropriados.
- Revise o acesso ao workspace. Audite periodicamente quem tem acesso aos workspaces e projetos.
Para equipes de segurança
- O código-fonte é aberto. O código-fonte do servidor MCP está disponível no GitHub para revisão de segurança.
- Sem persistência de dados. O servidor MCP armazena apenas o token de autenticação localmente. Nenhum dado de projeto é cacheado ou gravado em disco.
- Sem listeners de rede. O servidor MCP se comunica via stdio, não sockets de rede. Ele não abre portas nem aceita conexões de entrada.
- Auditoria de dependências. Execute
npm auditna árvore de dependências do servidor MCP para vulnerabilidades conhecidas.
Reporte de Vulnerabilidades
Se você descobrir uma vulnerabilidade de segurança no GitScrum MCP Server, reporte de forma privada:
E-mail: security@gitscrum.com Assunto: [SECURITY] MCP Server Vulnerability
Inclua:
- Descrição da vulnerabilidade
- Passos para reproduzir
- Impacto potencial
- Suas informações de contato
Respondemos em 48 horas e trabalhamos com você para resolver o problema antes da divulgação pública.
Checklist de Segurança
Use esta checklist para verificar se seu deployment do servidor MCP está seguro:
- [ ] Usando a versão mais recente de
@gitscrum-studio/mcp-server - [ ] Node.js versão 18+ (inclui patches de segurança)
- [ ] Autenticado via fluxo OAuth no navegador (não variável de ambiente)
- [ ]
~/.gitscrum/auth.jsontem permissões de arquivo restritas - [ ]
GITSCRUM_TOKENnão está definido em perfis de shell - [ ]
GITSCRUMAPIURLnão está definido (usando endpoint de produção padrão) - [ ] Log de auditoria é revisado periodicamente no dashboard do GitScrum
- [ ] Papéis de workspace são atribuídos apropriadamente
- [ ] Servidor MCP é executado de um ambiente local confiável
Próximos Passos
- Autenticação: Fluxo detalhado de OAuth 2.0 Device Grant e gerenciamento de tokens.
- Configuração: Configuração específica por cliente e referência de variáveis de ambiente.
- Início Rápido: Instale e autentique em menos de 5 minutos.
- Visão Geral do MCP: Referência completa de ferramentas com todas as 29 ferramentas e mais de 160 operações.