ast-grep-mcp

Servidor MCP que expone ast-grep (sg) como dos herramientas para búsqueda estructural de código.

Documentación

ast-grep-mcp

Servidor MCP que expone ast-grep (sg) como dos herramientas para búsqueda estructural de código.

Requisitos previos

Instala sg (CLI de ast-grep):

# via npm
npm i -g @ast-grep/cli

# via cargo
cargo install ast-grep

Verifica: sg --version

Instalación y ejecución

# from this directory
npm install
node src/index.js        # starts MCP server on stdio
# or via npx after publish:
# npx ast-grep-mcp

Herramientas

ast_search

Búsqueda estructural de código usando un patrón de ast-grep.

parámetrotiporequeridodescripción
langstringLenguaje: js, ts, py, go, rust, java, …
patternstringPatrón de ast-grep (p. ej. console.log($MSG))
dirstringnoDirectorio a buscar (predeterminado: .)

Devuelve: Arreglo JSON de { file, line, match, snippet }

Ejemplo de prompt:

Usa ast_search con lang=ts, pattern=console.log($MSG), dir=./src

ast_search_preset

Ejecuta un preset de malos olores de código con nombre.

parámetrotiporequeridodescripción
nameenumUno de los 5 presets a continuación
dirstringnoDirectorio a buscar (predeterminado: .)

Presets disponibles:

nombrequé encuentra
async-no-catchExpresiones await — verifica si falta try/catch
hooks-missing-depsuseEffect(..., []) — dependencias vacías pueden ocultar dependencias faltantes
route-no-authExpress app.METHOD(path, handler) — rutas que pueden carecer de middleware de autenticación
sql-no-paramCadenas SQL con template literals — posible riesgo de inyección
promise-no-returnCuerpos de new Promise(...) — verifica que todas las rutas resuelvan/rechacen

Configuración de Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "ast-grep": {
      "command": "node",
      "args": ["/absolute/path/to/ast-grep-mcp/src/index.js"]
    }
  }
}

Cursor mcp.json

.cursor/mcp.json en la raíz de tu proyecto:

{
  "mcpServers": {
    "ast-grep": {
      "command": "node",
      "args": ["/absolute/path/to/ast-grep-mcp/src/index.js"]
    }
  }
}

O si publicas en npm:

{
  "mcpServers": {
    "ast-grep": {
      "command": "npx",
      "args": ["ast-grep-mcp"]
    }
  }
}

Referencia rápida de patrones

$VAR          – single node (any)
$$$NODES      – multiple nodes (spread)
`template $X` – template literal containing X
foo($A, $B)   – function call with two args

Consulta la sintaxis de patrones de ast-grep para la documentación completa.