MCP PHPStan Server
Um servidor MCP que executa análise estática PHPStan em código PHP — analise arquivos com nível de regra e limite de memória configuráveis, com suporte para PHPStan Pro, diretamente do seu cliente MCP.
Documentação
Servidor MCP PHPStan
Um servidor Model Context Protocol que traz a análise estática do PHPStan para o seu fluxo de trabalho de codificação com IA — analise PHP em busca de bugs e erros de tipo, diretamente de qualquer cliente MCP.
Implementado em PHP puro, sem dependências do Composer. Adicione-o a qualquer projeto ou execute-o de forma independente — ele fala JSON-RPC 2.0 via stdio e funciona com Claude Desktop, Claude Code, Cursor e qualquer outro cliente compatível com MCP.
Ferramentas
| Ferramenta | Descrição |
|---|---|
phpstan_analyze | Executa o PHPStan em um ou mais caminhos e retorna um relatório legível de erros. |
phpstan_pro | Executa o PHPStan com saída JSON para diagnósticos mais ricos e estruturados (funciona com o PHPStan Pro quando disponível). |
Ambas as ferramentas aceitam:
paths(obrigatório) — matriz de caminhos absolutos ou relativos ao projeto para análiselevel(opcional) — substituir o nível de regra configurado (ex.:"max"ou8)
Requisitos
- PHP 8.1+
- Um binário
phpstandisponível (vendor/bin/phpstando projeto ou uma instalação global)
Início rápido
-
Clone o repositório (ou copie-o para o seu projeto):
git clone https://github.com/larspohlmann/mcp-phpstan-server.git -
Torne o ponto de entrada executável:
chmod +x mcp-phpstan-server/bin/mcp-phpstan -
Registre-o no seu cliente MCP (veja abaixo).
Configuração
Configure por meio de variáveis de ambiente ou config/config.json. As variáveis de ambiente têm precedência.
| Variável | chave config.json | Descrição | Padrão |
|---|---|---|---|
MCP_PHPSTAN_PATH | phpstanPath | Caminho para o binário phpstan | vendor/bin/phpstan, depois phpstan em PATH |
MCP_PHPSTAN_CONFIG | phpstanConfig | Caminho para um phpstan.neon / phpstan.neon.dist | descoberto automaticamente |
MCP_PHPSTAN_LEVEL | phpstanLevel | Nível de regra para análise (ex.: max ou 8) | max |
MCP_PHPSTAN_MEMORY_LIMIT | phpstanMemoryLimit | Valor para --memory-limit do PHPStan (ex.: 1G) | 1G |
Se nenhum caminho de configuração for fornecido, o servidor procura para cima a partir do diretório de trabalho atual por phpstan.neon ou phpstan.neon.dist.
Configuração do cliente
Claude Desktop / Claude Code
Adicione o servidor à sua configuração 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"
}
}
}
}
Em seguida, peça ao seu assistente algo como "Execute o PHPStan no diretório src e explique os erros."
Exemplo de chamada de ferramenta
{
"name": "phpstan_analyze",
"arguments": {
"paths": ["src", "tests"],
"level": "max"
}
}
Arquitetura
O servidor segue um layout leve de Domain-Driven Design:
src/Domain— contratos de ferramentas e objetos de valor de resultadosrc/Application— servidor MCP JSON-RPC e registro de ferramentassrc/Infrastructure— executor de processos, configuração e implementações de ferramentasbin/mcp-phpstan— ponto de entrada stdio
Ele implementa os métodos MCP initialize, tools/list e tools/call.
Notas
- O STDOUT transporta apenas mensagens JSON-RPC; todos os logs vão para o STDERR.
- Um código de saída diferente de zero de
phpstanpode significar descobertas ou falhas — o servidor analisa a saída para determinar o estado do erro.