MCP PHPStan 服务器(本地,无依赖)
一个用纯PHP实现的最小模型上下文协议(MCP)服务器,提供了两个工具:
phpstan_analyze运行 PHPStan 并返回可读的报告。phpstan_pro运行 PHPStan Pro 的 JSON 输出(如果可用),以获取更丰富的诊断信息。
没有Composer依赖项。设计为可复制到任何项目中。
结构(DDD)
src/Domain工具合同及结果src/ApplicationJSON-RPC MCP服务器和注册表src/Infrastructure进程运行器、配置、工具实现bin/mcp-phpstanSTDIO 入口点
配置
您可以通过环境变量进行配置,或者 config/config.json:
MCP_PHPSTAN_PATH– 到……的路径phpstan二进制(默认:vendor/bin/phpstan然后phpstan(在PATH中)MCP_PHPSTAN_CONFIG– phpstan.neon 或 phpstan.neon.dist 文件的路径(可选;会向上自动检测)MCP_PHPSTAN_LEVEL– 要传递给 phpstan 的级别(例如。max或者8) 如果在配置中未设置
如果未提供配置,服务器会从当前工作目录向上搜索以下之一: phpstan.neon, phpstan.neon.dist。
跑步
将脚本标记为可执行(仅一次):
chmod +x mcp/phpstan-server/bin/mcp-phpstan然后,配置您的MCP客户端,使用命令通过标准输入输出(stdio)启动服务器:
/absolute/path/to/mcp/phpstan-server/bin/mcp-phpstan示例:Claude Desktop 配置
{
"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"
}
}
}
}服务器通过STDIN/STDOUT使用JSON-RPC 2.0协议,并实现:
initializetools/listtools/call
工具
phpstan_analyze 翻译为中文是:“使用 PHPStan 进行分析”
输入模式:
{
"type": "object",
"properties": {
"paths": {"type": "array", "items": {"type": "string"}},
"level": {"type": ["string", "integer"], "description": "Override level"}
},
"required": ["paths"]
}phpstan_pro(可译为“PHPStan 专业版”或根据具体语境简化为“PHPStan 专业版软件”)
相同的输入模式如 phpstan_analyze但在可能的情况下直接返回JSON。
注释
- 输出到STDOUT的是严格的JSON-RPC消息。日志输出到STDERR。
- 非零退出代码来自
phpstan这可能表示发现的结果以及失败的情况;我们解析输出以确定错误状态。
