PHP静态分析服务

MCP PHPStan Server是一个基于MCP协议的服务器,用于在AI编码工作流中集成PHPStan静态分析功能,帮助开发者检测PHP代码中的错误和类型问题。

  • by larspohlmann
  • PHP
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 larspohlmann/mcp-phpstan-server

使用说明

MCP PHPStan 服务器

A. 模型上下文协议 服务器带来 PHPStan的 对AI编码工作流程进行静态分析——直接从任何MCP客户端分析PHP的错误和类型错误。

实施于 纯PHP,无Composer依赖。将其放入任何项目中或独立运行——它通过stdio使用JSON-RPC 2.0,并与Claude Desktop、Claude Code、Cursor和任何其他MCP兼容客户端配合使用。

工具

工具 说明
phpstan_analyze 跑步 PHPStan的 并返回可读的错误报告。
phpstan_pro 使用JSON输出运行PHPTan,以实现更丰富、结构化的诊断(与 PHPStan 专业 如果可用)。

这两种工具都接受:

  • paths (必需的)--要分析的绝对或项目相对路径数组
  • level (可选)--覆盖配置的规则级别(例如。 "max" 或 8)

需求

  • PHP 8.1+
  • A. phpstan 二进制可用(项目 vendor/bin/phpstan 或全局安装)

快速启动

  1. 克隆存储库(或将其复制到您的项目中):

    git clone https://github.com/larspohlmann/mcp-phpstan-server.git
    
  2. 使入口点可执行:

    chmod +x mcp-phpstan-server/bin/mcp-phpstan
    
  3. 向您的MCP客户端注册(见下文)。

配置

通过环境变量进行配置 或 config/config.json。环境变量优先。

变量 config.json key 描述 默认值
MCP_PHPSTAN_PATH phpstanPath 通往 phpstan 二进制 vendor/bin/phpstan那么 phpstan 上 PATH
MCP_PHPSTAN_CONFIG phpstanConfig 通往a的道路 phpstan.neon / phpstan.neon.dist 自动发现
MCP_PHPSTAN_LEVEL phpstanLevel 要分析的规则级别(例如。 max 或 8) max
MCP_PHPSTAN_MEMORY_LIMIT phpstanMemoryLimit PHPTan的价值 --memory-limit (例如。 1G) 1G

如果没有提供配置路径,服务器将从当前工作目录向上搜索 phpstan.neon 或 phpstan.neon.dist.

客户端设置

克劳德桌面/克劳德代码

将服务器添加到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"
      }
    }
  }
}

然后问你的助理类似的问题 “在src目录上运行PHPTan并解释错误。”

示例工具调用

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

建筑学

服务器遵循轻量级的域驱动设计布局:

  • src/Domain --工具契约与结果价值对象
  • src/Application --JSON-RPC MCP服务器和工具注册表
  • src/Infrastructure --进程运行器、配置、工具实现
  • bin/mcp-phpstan -stdio入口点

它实现了MCP方法 initialize, tools/list,以及 tools/call.

备注

  • STDOUT携带 仅 JSON-RPC消息;所有日志都转到STDERR。
  • 来自的非零退出代码 phpstan 可能意味着发现和失败——服务器解析输出以确定错误状态。

许可证

麻省理工学院