MCP PHPStan Server

Un servidor MCP que ejecuta el análisis estático de PHPStan en código PHP: analiza archivos con un nivel de reglas y límite de memoria configurables, con soporte para PHPStan Pro, directamente desde tu cliente MCP.

Documentación

MCP PHPStan Server

Un servidor de Model Context Protocol que lleva el análisis estático de PHPStan a tu flujo de trabajo de codificación con IA: analiza PHP en busca de errores y problemas de tipos, directamente desde cualquier cliente MCP.

PHP Dependencies License

Implementado en PHP puro sin dependencias de Composer. Colócalo en cualquier proyecto o ejecútalo de forma independiente: habla JSON-RPC 2.0 sobre stdio y funciona con Claude Desktop, Claude Code, Cursor y cualquier otro cliente compatible con MCP.

Herramientas

HerramientaDescripción
phpstan_analyzeEjecuta PHPStan en una o más rutas y devuelve un informe legible de errores.
phpstan_proEjecuta PHPStan con salida JSON para diagnósticos más ricos y estructurados (funciona con PHPStan Pro cuando está disponible).

Ambas herramientas aceptan:

  • paths (obligatorio): matriz de rutas absolutas o relativas al proyecto para analizar
  • level (opcional): anula el nivel de regla configurado (p. ej. "max" o 8)

Requisitos

  • PHP 8.1+
  • Un binario phpstan disponible (vendor/bin/phpstan del proyecto o una instalación global)

Inicio rápido

  1. Clona el repositorio (o cópialo en tu proyecto):

    git clone https://github.com/larspohlmann/mcp-phpstan-server.git
    
  2. Haz ejecutable el punto de entrada:

    chmod +x mcp-phpstan-server/bin/mcp-phpstan
    
  3. Regístralo en tu cliente MCP (ver más abajo).

Configuración

Configura mediante variables de entorno o config/config.json. Las variables de entorno tienen prioridad.

VariableClave config.jsonDescripciónPredeterminado
MCP_PHPSTAN_PATHphpstanPathRuta al binario phpstanvendor/bin/phpstan, luego phpstan en PATH
MCP_PHPSTAN_CONFIGphpstanConfigRuta a un phpstan.neon / phpstan.neon.distdetección automática
MCP_PHPSTAN_LEVELphpstanLevelNivel de regla para analizar (p. ej. max o 8)max
MCP_PHPSTAN_MEMORY_LIMITphpstanMemoryLimitValor para --memory-limit de PHPStan (p. ej. 1G)1G

Si no se proporciona una ruta de configuración, el servidor busca hacia arriba desde el directorio de trabajo actual phpstan.neon o phpstan.neon.dist.

Configuración del cliente

Claude Desktop / Claude Code

Añade el servidor a tu configuración de MCP:

{
  "mcpServers": {
    "phpstan": {
      "command": "/absolute/path/to/mcp-phpstan-server/bin/mcp-phpstan",
      "env": {
        "MCP_PHPSTAN_PATH": "/usr/local/bin/phpstan",
        "MCP_PHPSTAN_CONFIG": "/path/to/your/phpstan.neon",
        "MCP_PHPSTAN_LEVEL": "max",
        "MCP_PHPSTAN_MEMORY_LIMIT": "1G"
      }
    }
  }
}

Luego pide a tu asistente algo como "Ejecuta PHPStan en el directorio src y explica los errores."

Ejemplo de llamada a herramienta

{
  "name": "phpstan_analyze",
  "arguments": {
    "paths": ["src", "tests"],
    "level": "max"
  }
}

Arquitectura

El servidor sigue un diseño ligero de Domain-Driven Design:

  • src/Domain: contratos de herramientas y objetos de valor de resultados
  • src/Application: servidor MCP JSON-RPC y registro de herramientas
  • src/Infrastructure: ejecutor de procesos, configuración, implementaciones de herramientas
  • bin/mcp-phpstan: punto de entrada stdio

Implementa los métodos MCP initialize, tools/list y tools/call.

Notas

  • STDOUT transporta solo mensajes JSON-RPC; todos los registros van a STDERR.
  • Un código de salida distinto de cero de phpstan puede significar hallazgos o fallos: el servidor analiza la salida para determinar el estado de error.

Licencia

MIT