Semgrep MCP Server
oficialPermite a los agentes de IA asegurar código con Semgrep.
Documentación
⚠️ El servidor MCP de Semgrep se ha trasladado de un repositorio independiente al repositorio principal semgrep ⚠️
Este repositorio ha quedado obsoleto y las futuras actualizaciones del servidor MCP de Semgrep se realizarán a través del binario oficial semgrep.
Servidor MCP de Semgrep
Un servidor del Protocolo de Contexto de Modelo (MCP) para usar Semgrep y analizar código en busca de vulnerabilidades de seguridad. ¡Protege tu vibe coding! 😅
El Protocolo de Contexto de Modelo (MCP) es una API estandarizada para que LLMs, agentes e IDEs como Cursor, VS Code, Windsurf, o cualquier cosa que soporte MCP, obtengan ayuda especializada, contexto y aprovechen el poder de las herramientas. Semgrep es una herramienta de análisis estático rápida y determinista que entiende semánticamente muchos lenguajes y viene con más de 5,000 reglas. 🛠️
[!NOTE] Este proyecto beta está en desarrollo activo. Nos encantaría recibir tus comentarios, informes de errores, solicitudes de funciones y código. ¡Únete al canal de Slack comunitario de
#mcp!
Contenido
- Servidor MCP de Semgrep
Primeros pasos
Ejecuta el paquete de Python como un comando CLI usando uv:
uvx semgrep-mcp # see --help for more options
O ejecútalo como un contenedor Docker:
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
Cursor
Ejemplo de mcp.json
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"],
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}
}
}
}
Añade una instrucción a tu .cursor/rules para usarlo automáticamente:
Always scan code generated using Semgrep for security vulnerabilities
ChatGPT
- Ve a la página de Configuración del conector (enlace directo)
- Nombra la conexión
Semgrep - Establece la URL del servidor MCP como
https://mcp.semgrep.ai/sse - Establece la Autenticación como
No authentication - Marca la casilla Confío en esta aplicación
- Haz clic en Crear
Consulta más detalles en la documentación oficial.
Servidor alojado
[!WARNING] mcp.semgrep.ai es un servidor experimental que puede fallar inesperadamente. Obtendrá nuevas funcionalidades rápidamente. 🚀
Cursor
- Cmd + Shift + J para abrir la configuración de Cursor
- Selecciona Herramientas MCP
- Haz clic en Nuevo servidor MCP.
{
"mcpServers": {
"semgrep": {
"type": "streamable-http",
"url": "https://mcp.semgrep.ai/mcp"
}
}
}
Demostración
API
Herramientas
Permite a los LLMs realizar acciones, hacer cálculos deterministas e interactuar con servicios externos.
Escanear código
security_check: Escanea código en busca de vulnerabilidades de seguridadsemgrep_scan: Escanea archivos de código en busca de vulnerabilidades de seguridad con una cadena de configuración dadasemgrep_scan_with_custom_rule: Escanea archivos de código usando una regla personalizada de Semgrep
Entender código
get_abstract_syntax_tree: Muestra el Árbol de Sintaxis Abstracta (AST) del código
Plataforma en la nube (requiere inicio de sesión y token de Semgrep)
semgrep_findings: Obtiene hallazgos de Semgrep desde la API de la Plataforma AppSec de Semgrep
Meta
supported_languages: Devuelve la lista de lenguajes que soporta Semgrepsemgrep_rule_schema: Obtiene el último esquema JSON de reglas de Semgrep
Indicaciones
Indicaciones reutilizables para estandarizar interacciones comunes con LLMs.
write_custom_semgrep_rule: Devuelve una indicación para ayudar a escribir una regla de Semgrep
Recursos
Expone datos y contenido a los LLMs
semgrep://rule/schema: Especificación de la sintaxis YAML de reglas de Semgrep usando esquema JSONsemgrep://rule/{rule_id}/yaml: Regla completa de Semgrep en formato YAML del registro de Semgrep
Uso
Este paquete de Python se publica en PyPI como semgrep-mcp y se puede instalar y ejecutar con pip, pipx, uv, poetry o cualquier gestor de paquetes de Python.
$ pipx install semgrep-mcp
$ semgrep-mcp --help
Usage: semgrep-mcp [OPTIONS]
Entry point for the MCP server
Supports both stdio and sse transports. For stdio, it will read from stdin
and write to stdout. For sse, it will start an HTTP server on port 8000.
Options:
-v, --version Show version and exit.
-t, --transport [stdio|sse] Transport protocol to use (stdio or sse)
-h, --help Show this message and exit.
Entrada/Salida estándar (stdio)
El transporte stdio permite la comunicación a través de flujos de entrada y salida estándar. Esto es particularmente útil para integraciones locales y herramientas de línea de comandos. Consulta la especificación para más detalles.
Python
semgrep-mcp
Por defecto, el paquete de Python se ejecutará en modo stdio. Debido a que usa los flujos de entrada y salida estándar, parecerá que la herramienta se cuelga sin ninguna salida, pero esto es esperado.
Docker
Este servidor se publica en el Registro de Contenedores de Github (ghcr.io/semgrep/mcp)
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
Por defecto, el contenedor Docker está en modo SSE, por lo que tendrás que incluir -t stdio después del nombre de la imagen y ejecutar con -i para correr en modo interactivo.
HTTP transmitible
HTTP transmitible permite respuestas en streaming sobre JSON RPC a través de solicitudes HTTP POST. Consulta la especificación para más detalles.
Por defecto, el servidor escucha en 127.0.0.1:8000/mcp las conexiones de los clientes. Para cambiar esto, establece las variables de entorno FASTMCP_*. El servidor debe estar en ejecución para que los clientes se conecten a él.
Python
semgrep-mcp -t streamable-http
Por defecto, el paquete de Python se ejecutará en modo stdio, por lo que tendrás que incluir -t streamable-http.
Docker
docker run -p 8000:0000 ghcr.io/semgrep/mcp
Eventos enviados por el servidor (SSE)
[!WARNING] La comunidad MCP considera este un protocolo de transporte heredado y está realmente pensado para compatibilidad con versiones anteriores. HTTP transmitible es el reemplazo recomendado.
El transporte SSE permite el streaming del servidor al cliente con Eventos Enviados por el Servidor para la comunicación cliente-servidor y servidor-cliente. Consulta la especificación para más detalles.
Por defecto, el servidor escucha en 127.0.0.1:8000/sse las conexiones de los clientes. Para cambiar esto, establece las variables de entorno FASTMCP_*. El servidor debe estar en ejecución para que los clientes se conecten a él.
Python
semgrep-mcp -t sse
Por defecto, el paquete de Python se ejecutará en modo stdio, por lo que tendrás que incluir -t sse.
Docker
docker run -p 8000:0000 ghcr.io/semgrep/mcp -t sse
Plataforma AppSec de Semgrep
Opcionalmente, para conectarte a la Plataforma AppSec de Semgrep:
- Inicia sesión o regístrate
- Genera un token desde Configuración
- Añade el token a tus variables de entorno:
-
CLI (
export SEMGREP_APP_TOKEN=<token>) -
Docker (
docker run -e SEMGREP_APP_TOKEN=<token>) -
JSON de configuración MCP
-
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}
[!TIP] Por favor, contacta para soporte si es necesario. ☎️
Integraciones
Cursor IDE
Añade el siguiente bloque JSON a tu archivo de configuración global ~/.cursor/mcp.json o específico del proyecto .cursor/mcp.json:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}

Consulta la documentación de Cursor para más información.
VS Code / Copilot
Haz clic en los botones de instalación en la parte superior de este README para la instalación más rápida.
Configuración manual
Añade el siguiente bloque JSON a tu archivo de Configuración de Usuario (JSON) en VS Code. Puedes hacerlo presionando Ctrl + Shift + P y escribiendo Preferences: Open User Settings (JSON).
{
"mcp": {
"servers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
}
Opcionalmente, puedes añadirlo a un archivo llamado .vscode/mcp.json en tu espacio de trabajo:
{
"servers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Usando Docker
{
"mcp": {
"servers": {
"semgrep": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/semgrep/mcp",
"-t",
"stdio"
]
}
}
}
}
Consulta la documentación de VS Code para más información.
Windsurf
Añade el siguiente bloque JSON a tu archivo ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Consulta la documentación de Windsurf para más información.
Claude Desktop
Aquí hay un video corto que muestra a Claude Desktop usando este servidor para escribir una regla personalizada.
Añade el siguiente bloque JSON a tu archivo claude_desktop_config.json:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Consulta la documentación de Anthropic para más información.
Claude Code
claude mcp add semgrep uvx semgrep-mcp
Consulta la documentación de Claude Code para más información.
OpenAI
Consulta la documentación oficial:
SDK de Agentes
async with MCPServerStdio(
params={
"command": "uvx",
"args": ["semgrep-mcp"],
}
) as server:
tools = await server.list_tools()
Consulta la documentación del SDK de Agentes de OpenAI para más información.
Clientes personalizados
Ejemplo de cliente SSE en Python
Mira un ejemplo completo en examples/sse_client.py
from mcp.client.session import ClientSession
from mcp.client.sse import sse_client
async def main():
async with sse_client("http://localhost:8000/sse") as (read_stream, write_stream):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
results = await session.call_tool(
"semgrep_scan",
{
"code_files": [
{
"path": "hello_world.py",
"content": "def hello(): print('Hello, World!')",
}
]
},
)
print(results)
[!TIP] Algunas librerías cliente quieren la
URL: http://localhost:8000/sse y otras solo quieren laHOST:localhost:8000. Prueba laURLen un navegador web para confirmar que el servidor está funcionando y no hay problemas de red.
Consulta la documentación oficial del SDK para más información.
Contribuir, comunidad y ejecución desde el código fuente
[!NOTE] ¡Nos encantan tus comentarios, informes de errores, solicitudes de funciones y código. Únete al canal de Slack comunitario de
#mcp!
Consulta CONTRIBUTING.md para más información y detalles sobre cómo ejecutar el servidor MCP desde el código fuente.
Herramientas similares 🔍
- semgrep-vscode - Extensión oficial de VS Code
- semgrep-intellij - Plugin para IntelliJ
Proyectos comunitarios 🌟
- semgrep-rules - La colección oficial de reglas de Semgrep
- mcp-server-semgrep - Inspiración original escrita por Szowesgad y stefanskiasan
Registros de servidores MCP
Hecho con ❤️ por el Equipo de Semgrep