GitScrum / Docs

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çãoMCP ServerAplicação Web GitScrum
CREATEPermitidoPermitido
READPermitidoPermitido
UPDATEPermitidoPermitido
DELETEBloqueadoPermitido

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:

  1. Camada MCP. Nenhuma ferramenta DELETE existe no servidor MCP. O schema de ferramentas fisicamente não consegue expressar uma operação de exclusão.
  2. 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.
  3. 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:

  1. Em memória no processo do servidor MCP
  2. 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:

PlataformaPermissões
macOS/Linux600 (leitura/escrita apenas do proprietário)
WindowsACL 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 StatusSignificadoResposta da IAAção do Usuário
401 UnauthorizedAutenticação necessária ou token expiradoSolicita reautenticaçãoFazer login novamente
403 ForbiddenPermissões insuficientes ou restrição de planoExplica a restriçãoVerificar permissões da conta ou fazer upgrade do plano
404 Not FoundRecurso não existe ou está inacessívelInforma que o recurso não foi encontradoVerificar o ID ou slug do recurso
422 Validation ErrorDados de entrada inválidos (campos ausentes, formato incorreto)Informa erros específicos de campoCorrigir a entrada e tentar novamente
429 Rate LimitedMuitas requisições na janela de tempoInforma que o limite foi atingidoAguardar antes de tentar novamente
500 Server ErrorFalha inesperada no servidorInforma um problema temporárioTentar 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:

DivulgadoProtegido
Autenticação é necessáriaDetalhes do token ou tempos de expiração
Nível de permissão ou plano necessárioLógica de autorização interna
Recurso não encontradoSe o recurso já existiu alguma vez
Erros de validação de campoMapeamentos internos de campos ou schema do banco de dados
Erro genérico do servidorStack 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:

  1. Retorna um erro claro ao assistente de IA indicando que a API está indisponível
  2. Não faz cache de dados desatualizados nem retorna resultados obsoletos
  3. 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ávelPropósitoConsideração de Segurança
GITSCRUM_TOKENSubstituir o token armazenado por um valor direto de tokenUse apenas em ambientes CI/CD seguros. Variáveis de ambiente podem ser visíveis para outros processos.
GITSCRUMAPIURLSubstituir a URL do endpoint da APIAltere 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-server para sempre usar a versão mais recente, que inclui patches de segurança.
  • Faça logout em máquinas compartilhadas. Sempre execute auth_logout quando terminar em uma máquina que outros podem acessar.
  • Não defina GITSCRUM_TOKEN em 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 audit na á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:

  1. Descrição da vulnerabilidade
  2. Passos para reproduzir
  3. Impacto potencial
  4. 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.json tem permissões de arquivo restritas
  • [ ] GITSCRUM_TOKEN não está definido em perfis de shell
  • [ ] GITSCRUMAPIURL nã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.