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.
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
| Herramienta | Descripción |
|---|---|
phpstan_analyze | Ejecuta PHPStan en una o más rutas y devuelve un informe legible de errores. |
phpstan_pro | Ejecuta 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 analizarlevel(opcional): anula el nivel de regla configurado (p. ej."max"o8)
Requisitos
- PHP 8.1+
- Un binario
phpstandisponible (vendor/bin/phpstandel proyecto o una instalación global)
Inicio rápido
-
Clona el repositorio (o cópialo en tu proyecto):
git clone https://github.com/larspohlmann/mcp-phpstan-server.git -
Haz ejecutable el punto de entrada:
chmod +x mcp-phpstan-server/bin/mcp-phpstan -
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.
| Variable | Clave config.json | Descripción | Predeterminado |
|---|---|---|---|
MCP_PHPSTAN_PATH | phpstanPath | Ruta al binario phpstan | vendor/bin/phpstan, luego phpstan en PATH |
MCP_PHPSTAN_CONFIG | phpstanConfig | Ruta a un phpstan.neon / phpstan.neon.dist | detección automática |
MCP_PHPSTAN_LEVEL | phpstanLevel | Nivel de regla para analizar (p. ej. max o 8) | max |
MCP_PHPSTAN_MEMORY_LIMIT | phpstanMemoryLimit | Valor 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 resultadossrc/Application: servidor MCP JSON-RPC y registro de herramientassrc/Infrastructure: ejecutor de procesos, configuración, implementaciones de herramientasbin/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
phpstanpuede significar hallazgos o fallos: el servidor analiza la salida para determinar el estado de error.