Semgrep

Análise estática de código usando Semgrep para detecção de vulnerabilidades de segurança e melhorias na qualidade do código.

Documentação

Servidor MCP Semgrep

smithery badge mcp-server-semgrep MCP server

DESENVOLVIDO POR:

POWERED BY

Sobre o Projeto

MCP Server Semgrep Logo Este projeto foi inicialmente inspirado na robustez da ferramenta Semgrep, The Replit Team e seu Agent V2, bem como na implementação de stefanskiasan/semgrep-mcp-server, mas evoluiu com mudanças arquiteturais significativas para instalação e manutenção aprimoradas e mais fáceis.

O Servidor MCP Semgrep é um servidor compatível com o Model Context Protocol que integra a poderosa ferramenta de análise estática Semgrep com assistentes de IA como o Anthropic Claude. Ele permite análise avançada de código, detecção de vulnerabilidades de segurança e melhorias de qualidade de código diretamente por meio de uma interface conversacional.

Benefícios da Integração

Para Desenvolvedores e Equipes de Desenvolvimento:

  • Análise Holística do Código-Fonte - detectando problemas em todo o projeto, não apenas em arquivos individuais
  • Detecção Proativa de Erros - identificando problemas potenciais antes que se tornem bugs críticos
  • Melhoria Contínua da Qualidade do Código - varreduras regulares e refatoração levam a melhorias graduais na base de código
  • Consistência Estilística - identificação e correção de inconsistências no código, como:
    • Camadas de z-index arbitrárias em CSS
    • Convenções de nomenclatura inconsistentes
    • Duplicação de código
    • "Números mágicos" em vez de constantes nomeadas

Para Segurança:

  • Verificação Automatizada de Código para Vulnerabilidades Conhecidas - varredura de padrões de problemas de segurança conhecidos
  • Regras de Segurança Personalizadas - criação de regras específicas do projeto
  • Educação da Equipe - ensino de práticas de programação segura por meio da detecção de problemas potenciais

Para Manutenção e Desenvolvimento do Projeto:

  • Documentação "Viva" - a IA pode explicar por que um fragmento de código é problemático e como corrigi-lo
  • Redução da Dívida Técnica - detecção e correção sistemática de áreas problemáticas
  • Revisões de Código Aprimoradas - a detecção automática de problemas comuns permite focar em questões mais complexas

Principais Recursos

  • Integração direta com o SDK oficial do MCP
  • Arquitetura simplificada com manipuladores consolidados
  • Implementação limpa em ES Modules
  • Tratamento eficiente de erros e validação de caminhos para segurança
  • Interface e documentação em inglês e polonês
  • Testes unitários abrangentes
  • Documentação extensa
  • Compatibilidade entre plataformas (Windows, macOS, Linux)
  • Detecção e gerenciamento flexíveis da instalação do Semgrep

Funções

O Servidor MCP Semgrep fornece as seguintes ferramentas:

  • scan_directory: Varredura de código-fonte para problemas potenciais
  • list_rules: Exibição de regras disponíveis e linguagens suportadas pelo Semgrep
  • analyze_results: Análise detalhada dos resultados da varredura
  • create_rule: Criação de regras Semgrep personalizadas
  • filter_results: Filtragem de resultados por vários critérios
  • export_results: Exportação de resultados em vários formatos
  • compare_results: Comparação de dois conjuntos de resultados (por exemplo, antes e depois das alterações)

Casos de Uso Comuns

  • Análise de segurança de código antes da implantação
  • Detecção de erros comuns de programação
  • Aplicação de padrões de codificação dentro de uma equipe
  • Refatoração e melhoria da qualidade do código existente
  • Identificação de inconsistências em estilos e estrutura de código (por exemplo, CSS, organização de componentes)
  • Educação de desenvolvedores sobre melhores práticas
  • Verificação da correção de correções (comparando varreduras antes/depois)

Instalação

Pré-requisitos

  • Node.js v18+
  • TypeScript (para desenvolvimento)

Opção 1: Instalar a partir do Smithery.ai (Recomendado)

A maneira mais fácil de instalar e usar o Servidor MCP Semgrep é através do Smithery.ai:

  1. Visite Servidor MCP Semgrep no Smithery.ai
  2. Siga as instruções de instalação para adicioná-lo aos seus clientes compatíveis com MCP
  3. Configure quaisquer configurações opcionais, como o token da API Semgrep e as raízes de espaço de trabalho permitidas

Este é o método recomendado para Claude Desktop e outros clientes MCP, pois lida com todas as dependências e configuração automaticamente.

Opção 2: Instalar a partir do Registro NPM

# Using npm
npm install -g mcp-server-semgrep

# Using pnpm
pnpm add -g mcp-server-semgrep

# Using yarn
yarn global add mcp-server-semgrep

O pacote também está disponível em outros registros:

Opção 3: Instalar a partir do GitHub

# Using npm
npm install -g git+https://github.com/vetcoders/mcp-server-semgrep.git

# Using pnpm
pnpm add -g git+https://github.com/vetcoders/mcp-server-semgrep.git

# Using yarn
yarn global add git+https://github.com/vetcoders/mcp-server-semgrep.git

Opção 4: Configuração de Desenvolvimento Local

  1. Clone o repositório:
git clone https://github.com/vetcoders/mcp-server-semgrep.git
cd mcp-server-semgrep
  1. Instale as dependências (suporta todos os principais gerenciadores de pacotes):
# Using pnpm (recommended)
pnpm install

# Using npm
npm install

# Using yarn
yarn install
  1. Compile o projeto:
# Using pnpm
pnpm run build

# Using npm
npm run build

# Using yarn
yarn build

Nota: O processo de instalação verificará automaticamente a disponibilidade do Semgrep. Se o Semgrep não for encontrado, você receberá instruções sobre como instalá-lo.

Contrato de Raiz do Espaço de Trabalho

Este servidor apenas lê e escreve arquivos dentro de raízes de espaço de trabalho explicitamente permitidas.

  • Por padrão, a raiz permitida é o diretório de trabalho do processo (process.cwd()).
  • Para Claude Desktop, Smithery ou qualquer lançador que não inicie o servidor dentro da raiz do seu projeto, defina MCP_SERVER_SEMGREP_ALLOWED_ROOTS para um ou mais diretórios absolutos.
  • Use o delimitador de caminho da sua plataforma para múltiplas raízes: : no macOS/Linux, ; no Windows.

Modos de Autenticação

Este servidor não implementa seu próprio gerenciamento de conta Semgrep. Ele executa o CLI semgrep instalado e depende do comportamento normal de autenticação do Semgrep.

  • Execuções locais no terminal e desenvolvimento local podem frequentemente usar uma sessão semgrep login existente da conta do sistema operacional atual.
  • Lançamentos gerenciados, como Claude Desktop, Smithery, contêineres ou CI, devem preferir um SEMGREP_APP_TOKEN explícito para comportamento determinístico.
  • SEMGREP_APP_TOKEN ainda é a opção mais segura quando você precisa de configuração portátil entre máquinas ou executores.

Opções de Instalação do Semgrep

O Semgrep pode ser instalado de várias maneiras:

  • Via gerenciadores de pacotes:

    # Using pnpm
    pnpm add -g semgrep
    
    # Using npm
    npm install -g semgrep
    
    # Using yarn
    yarn global add semgrep
    
  • Python pip:

    pip install semgrep
    
  • Homebrew (macOS):

    brew install semgrep
    
  • Linux:

    sudo apt-get install semgrep
    # or
    curl -sSL https://install.semgrep.dev | sh
    
  • Windows:

    pip install semgrep
    

Integração com Claude Desktop

Existem duas maneiras de integrar o Servidor MCP Semgrep com o Claude Desktop:

Método 1: Instalar via Smithery.ai (Recomendado)

  1. Visite Servidor MCP Semgrep no Smithery.ai
  2. Clique em "Instalar no Claude Desktop"
  3. Siga as instruções na tela

Método 2: Configuração Manual

  1. Instale o Claude Desktop
  2. Atualize o arquivo de configuração do Claude Desktop (claude_desktop_config.json) e adicione isso à sua seção de servidores.

Para lançamentos locais iniciados sob uma conta de usuário que já está autenticada com semgrep login, o CLI Semgrep pode ser capaz de reutilizar esse login. Para ambientes gerenciados por desktop ou compartilhados, ainda recomendamos definir SEMGREP_APP_TOKEN explicitamente:

{
  "mcpServers": {
    "semgrep": {
      "command": "node",
      "args": [
        "/your_path/mcp-server-semgrep/build/index.js"
      ],
      "env": {
        "SEMGREP_APP_TOKEN": "your_semgrep_app_token",
        "MCP_SERVER_SEMGREP_ALLOWED_ROOTS": "/Users/you/projects"
      }
    }
  }
}
  1. Inicie o Claude Desktop e comece a fazer perguntas sobre análise de código.

Se você quiser escanear mais de um espaço de trabalho, defina MCP_SERVER_SEMGREP_ALLOWED_ROOTS para uma lista delimitada por plataforma de caminhos absolutos.

Exemplos de Uso

Varredura de Projeto

Could you scan my source code in the /projects/my-application directory for potential security issues? That directory is already included in MCP_SERVER_SEMGREP_ALLOWED_ROOTS.

Análise de Consistência de Estilo

Analyze the z-index values in the project's CSS files and identify inconsistencies and potential layer conflicts.

Criando uma Regra Personalizada

Create a Semgrep rule that detects improper use of input sanitization functions.

Filtrando Resultados

Show me only scan results related to SQL injection vulnerabilities.

Identificando Padrões Problemáticos

Find all "magic numbers" in the code and suggest replacing them with named constants.

Criando Regras Personalizadas

Você pode criar regras personalizadas para as necessidades específicas do seu projeto. Aqui estão exemplos de regras que você pode criar:

Regra para detectar z-indices inconsistentes:

rules:
  - id: inconsistent-z-index
    pattern: z-index: $Z
    message: "Z-index $Z may not comply with the project's layering system"
    languages: [css, scss]
    severity: WARNING

Regra para detectar imports obsoletos:

rules:
  - id: deprecated-import
    pattern: import $X from 'old-library'
    message: "You're using a deprecated library. Consider using 'new-library'"
    languages: [javascript, typescript]
    severity: WARNING

Desenvolvimento

Testes

pnpm test

Estrutura do Projeto

├── src/
│   └── index.ts          # Main entry point and all handler implementations
├── scripts/
│   └── check-semgrep.js  # Semgrep detection and installation helper
├── build/                # Compiled JavaScript (after build)
└── tests/                # Unit tests

Documentação Adicional

Informações detalhadas sobre o uso da ferramenta podem ser encontradas em:

  • USAGE.md - Instruções detalhadas de uso
  • README_PL.md - Documentação em polonês
  • examples/ - Exemplos de regras Semgrep divertidas e práticas - "O Salão dos Horrores do Código"

Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.

Desenvolvido por

vetcoders

🤖 Desenvolvido com a ajuda de Claude Code e MCP Tools

Agradecimentos