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
DESENVOLVIDO POR:
Sobre o Projeto
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:
- Visite Servidor MCP Semgrep no Smithery.ai
- Siga as instruções de instalação para adicioná-lo aos seus clientes compatíveis com MCP
- 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
- Clone o repositório:
git clone https://github.com/vetcoders/mcp-server-semgrep.git
cd mcp-server-semgrep
- Instale as dependências (suporta todos os principais gerenciadores de pacotes):
# Using pnpm (recommended)
pnpm install
# Using npm
npm install
# Using yarn
yarn install
- 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_ROOTSpara 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 loginexistente da conta do sistema operacional atual. - Lançamentos gerenciados, como Claude Desktop, Smithery, contêineres ou CI, devem preferir um
SEMGREP_APP_TOKENexplícito para comportamento determinístico. SEMGREP_APP_TOKENainda é 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)
- Visite Servidor MCP Semgrep no Smithery.ai
- Clique em "Instalar no Claude Desktop"
- Siga as instruções na tela
Método 2: Configuração Manual
- Instale o Claude Desktop
- 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"
}
}
}
}
- 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
🤖 Desenvolvido com a ajuda de Claude Code e MCP Tools
Agradecimentos
- stefanskiasan pela inspiração original
- Anthropic pelo Claude e pelo protocolo MCP
- Semgrep pela excelente ferramenta de análise estática