Semgrep
Análisis estático de código usando Semgrep para detección de vulnerabilidades de seguridad y mejoras en la calidad del código.
Documentación
Servidor MCP Semgrep
DESARROLLADO POR:
Acerca del Proyecto
Este proyecto fue inicialmente inspirado por la robustez de la herramienta Semgrep, The Replit Team y su Agent V2, así como la implementación de stefanskiasan/semgrep-mcp-server, pero ha evolucionado con cambios arquitectónicos significativos para una instalación y mantenimiento mejorados y más sencillos.
MCP Server Semgrep es un servidor compatible con el Model Context Protocol que integra la potente herramienta de análisis estático Semgrep con asistentes de IA como Anthropic Claude. Permite análisis avanzado de código, detección de vulnerabilidades de seguridad y mejoras de calidad del código directamente a través de una interfaz conversacional.
Beneficios de la Integración
Para Desarrolladores y Equipos de Desarrollo:
- Análisis Holístico del Código Fuente - detección de problemas en todo el proyecto, no solo en archivos individuales
- Detección Proactiva de Errores - identificación de problemas potenciales antes de que se conviertan en errores críticos
- Mejora Continua de la Calidad del Código - escaneos y refactorizaciones regulares conducen a mejoras graduales en la base de código
- Consistencia Estilística - identificación y corrección de inconsistencias en el código, como:
- Capas arbitrarias de z-index en CSS
- Convenciones de nomenclatura inconsistentes
- Duplicación de código
- "Números mágicos" en lugar de constantes nombradas
Para Seguridad:
- Verificación Automatizada de Código para Vulnerabilidades Conocidas - escaneo de patrones de problemas de seguridad conocidos
- Reglas de Seguridad Personalizadas - creación de reglas específicas para el proyecto
- Educación del Equipo - enseñanza de prácticas de programación segura mediante la detección de problemas potenciales
Para el Mantenimiento y Desarrollo del Proyecto:
- Documentación "Viva" - la IA puede explicar por qué un fragmento de código es problemático y cómo corregirlo
- Reducción de Deuda Técnica - detección y corrección sistemática de áreas problemáticas
- Mejora de las Revisiones de Código - la detección automática de problemas comunes permite centrarse en asuntos más complejos
Características Clave
- Integración directa con el SDK oficial de MCP
- Arquitectura simplificada con manejadores consolidados
- Implementación limpia de módulos ES
- Manejo eficiente de errores y validación de rutas para seguridad
- Interfaz y documentación en inglés y polaco
- Pruebas unitarias integrales
- Documentación extensa
- Compatibilidad multiplataforma (Windows, macOS, Linux)
- Detección y gestión flexible de la instalación de Semgrep
Funciones
El Servidor MCP Semgrep proporciona las siguientes herramientas:
- scan_directory: Escaneo de código fuente para detectar problemas potenciales
- list_rules: Visualización de reglas disponibles y lenguajes soportados por Semgrep
- analyze_results: Análisis detallado de los resultados del escaneo
- create_rule: Creación de reglas personalizadas de Semgrep
- filter_results: Filtrado de resultados por varios criterios
- export_results: Exportación de resultados en varios formatos
- compare_results: Comparación de dos conjuntos de resultados (por ejemplo, antes y después de los cambios)
Casos de Uso Comunes
- Análisis de seguridad del código antes del despliegue
- Detección de errores comunes de programación
- Aplicación de estándares de codificación dentro de un equipo
- Refactorización y mejora de la calidad del código existente
- Identificación de inconsistencias en estilos y estructura del código (por ejemplo, CSS, organización de componentes)
- Educación de desarrolladores sobre mejores prácticas
- Verificación de la corrección de arreglos (comparando escaneos antes/después)
Instalación
Requisitos Previos
- Node.js v18+
- TypeScript (para desarrollo)
Opción 1: Instalar desde Smithery.ai (Recomendado)
La forma más fácil de instalar y usar MCP Server Semgrep es a través de Smithery.ai:
- Visite MCP Server Semgrep en Smithery.ai
- Siga las instrucciones de instalación para agregarlo a sus clientes compatibles con MCP
- Configure cualquier ajuste opcional como el token de API de Semgrep y las raíces de espacio de trabajo permitidas
Este es el método recomendado para Claude Desktop y otros clientes MCP, ya que maneja todas las dependencias y configuración automáticamente.
Opción 2: Instalar desde el 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
El paquete también está disponible en otros registros:
Opción 3: Instalar desde 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
Opción 4: Configuración de Desarrollo Local
- Clone el repositorio:
git clone https://github.com/vetcoders/mcp-server-semgrep.git
cd mcp-server-semgrep
- Instale las dependencias (soporta todos los administradores de paquetes principales):
# Using pnpm (recommended)
pnpm install
# Using npm
npm install
# Using yarn
yarn install
- Construya el proyecto:
# Using pnpm
pnpm run build
# Using npm
npm run build
# Using yarn
yarn build
Nota: El proceso de instalación verificará automáticamente la disponibilidad de Semgrep. Si Semgrep no se encuentra, recibirá instrucciones sobre cómo instalarlo.
Contrato de Raíz del Espacio de Trabajo
Este servidor solo lee y escribe archivos dentro de las raíces de espacio de trabajo explícitamente permitidas.
- Por defecto, la raíz permitida es el directorio de trabajo del proceso (
process.cwd()). - Para Claude Desktop, Smithery, o cualquier lanzador que no inicie el servidor dentro de la raíz de su proyecto, establezca
MCP_SERVER_SEMGREP_ALLOWED_ROOTSa uno o más directorios absolutos. - Use el delimitador de ruta de su plataforma para múltiples raíces:
:en macOS/Linux,;en Windows.
Modos de Autenticación
Este servidor no implementa su propio manejo de cuentas de Semgrep. Ejecuta la CLI de semgrep instalada y depende del comportamiento normal de autenticación de Semgrep.
- Las ejecuciones locales en terminal y desarrollo local a menudo pueden usar una sesión existente de
semgrep loginde la cuenta del sistema operativo actual. - Los lanzamientos gestionados como Claude Desktop, Smithery, contenedores o CI deben preferir un
SEMGREP_APP_TOKENexplícito para un comportamiento determinista. SEMGREP_APP_TOKENsigue siendo la opción más segura cuando necesita configuración portátil entre máquinas o ejecutores.
Opciones de Instalación de Semgrep
Semgrep se puede instalar de varias maneras:
-
A través de administradores de paquetes:
# 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
Integración con Claude Desktop
Hay dos formas de integrar MCP Server Semgrep con Claude Desktop:
Método 1: Instalar a través de Smithery.ai (Recomendado)
- Visite MCP Server Semgrep en Smithery.ai
- Haga clic en "Instalar en Claude Desktop"
- Siga las instrucciones en pantalla
Método 2: Configuración Manual
- Instale Claude Desktop
- Actualice el archivo de configuración de Claude Desktop (
claude_desktop_config.json) y agregue esto a su sección de servidores.
Para lanzamientos locales iniciados bajo una cuenta de usuario que ya está autenticada con semgrep login, la CLI de Semgrep puede reutilizar ese inicio de sesión. Para entornos gestionados por escritorio o compartidos, recomendamos establecer SEMGREP_APP_TOKEN explícitamente:
{
"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"
}
}
}
}
- Lance Claude Desktop y comience a hacer preguntas sobre análisis de código.
Si desea escanear más de un espacio de trabajo, establezca MCP_SERVER_SEMGREP_ALLOWED_ROOTS a una lista delimitada por plataforma de rutas absolutas.
Ejemplos de Uso
Escaneo de Proyectos
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álisis de Consistencia de Estilo
Analyze the z-index values in the project's CSS files and identify inconsistencies and potential layer conflicts.
Creación de una Regla Personalizada
Create a Semgrep rule that detects improper use of input sanitization functions.
Filtrado de Resultados
Show me only scan results related to SQL injection vulnerabilities.
Identificación de Patrones Problemáticos
Find all "magic numbers" in the code and suggest replacing them with named constants.
Creación de Reglas Personalizadas
Puede crear reglas personalizadas para las necesidades específicas de su proyecto. Aquí hay ejemplos de reglas que puede crear:
Regla 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
Regla para detectar importaciones obsoletas:
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
Desarrollo
Pruebas
pnpm test
Estructura del Proyecto
├── 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
Documentación Adicional
Información detallada sobre el uso de la herramienta se puede encontrar en:
- USAGE.md - Instrucciones detalladas de uso
- README_PL.md - Documentación en polaco
- examples/ - Ejemplos de reglas de Semgrep divertidas y prácticas - "El Salón de los Horrores del Código"
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.
Desarrollado por
🤖 Desarrollado con la ayuda de Claude Code y MCP Tools
Agradecimientos
- stefanskiasan por la inspiración original
- Anthropic por Claude y el protocolo MCP
- Semgrep por su excelente herramienta de análisis estático