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.

PHP Dependencies License

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

FerramentaDescrição
phpstan_analyzeExecuta o PHPStan em um ou mais caminhos e retorna um relatório legível de erros.
phpstan_proExecuta 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álise
  • level (opcional) — substituir o nível de regra configurado (ex.: "max" ou 8)

Requisitos

  • PHP 8.1+
  • Um binário phpstan disponível (vendor/bin/phpstan do projeto ou uma instalação global)

Início rápido

  1. Clone o repositório (ou copie-o para o seu projeto):

    git clone https://github.com/larspohlmann/mcp-phpstan-server.git
    
  2. Torne o ponto de entrada executável:

    chmod +x mcp-phpstan-server/bin/mcp-phpstan
    
  3. 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ávelchave config.jsonDescriçãoPadrão
MCP_PHPSTAN_PATHphpstanPathCaminho para o binário phpstanvendor/bin/phpstan, depois phpstan em PATH
MCP_PHPSTAN_CONFIGphpstanConfigCaminho para um phpstan.neon / phpstan.neon.distdescoberto automaticamente
MCP_PHPSTAN_LEVELphpstanLevelNível de regra para análise (ex.: max ou 8)max
MCP_PHPSTAN_MEMORY_LIMITphpstanMemoryLimitValor 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 resultado
  • src/Application — servidor MCP JSON-RPC e registro de ferramentas
  • src/Infrastructure — executor de processos, configuração e implementações de ferramentas
  • bin/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 phpstan pode significar descobertas ou falhas — o servidor analisa a saída para determinar o estado do erro.

Licença

MIT