PHP重构MCP
一个模型上下文协议(MCP)服务器,提供由 nikic/PHP解析器.
特性
- 🔧 提取方法:将代码块提取到单独的方法中
- 📦 提取变量:将表达式提取到命名变量中
- 🔄 引入变量:从所选表达式中引入一个新变量(首选大文件)
- ✏️ 重命名变量:跨作用域安全重命名变量
- 🌳 解析/转储AST:解析PHP代码并检查抽象语法树
- 🚀 PHP 8.1+:采用现代PHP功能构建
- 📜 PHP 7.1+解析:可以解析和重构PHP 7.1+代码
- 🔌 MCP协议:与MCP客户端无缝集成
需求
- PHP 8.1或更高版本
- 作曲家
安装
composer install用法
与MCP客户端集成
克劳德桌面
将此配置添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"php-refactor": {
"command": "php",
"args": ["/absolute/path/to/php-refactor-mcp/bin/php-refactor-mcp"]
}
}
}替换 /absolute/path/to/php-refactor-mcp 带有克隆此存储库的实际路径。
添加配置后,重新启动Claude Desktop。PHP重构工具将在您的对话中提供。
PHPStorm/IntelliJ创意
PHPStorm通过AI Assistant插件支持MCP:
- 安装 AI助手 设置中的插件→ 插件
- 前往设置→ 工具→ AI助手→ 模型上下文协议
- 点击 + 添加新的MCP服务器
- 配置:
- 名字:PHP重构MCP - 命令: php - 参数: /absolute/path/to/php-refactor-mcp/bin/php-refactor-mcp
- 点击 好的 并重新启动PHPStorm
重构工具将通过AI助手提供。
其他MCP客户端
对于其他MCP兼容客户端,请使用以下服务器配置:
- 命令:
php - 参数:
["/path/to/php-refactor-mcp/bin/php-refactor-mcp"] - 运输标准: stdio
手动启动服务器
服务器使用stdio传输进行通信:
php bin/php-refactor-mcp可用工具
parse_php
解析PHP文件并返回抽象语法树(AST)。
参数:
file(string):要解析的PHP文件的路径
例子:
{
"file": "/path/to/file.php"
}提取方法
将一段代码提取到一个单独的方法中。
参数:
file(string):PHP文件的路径selectionRange(字符串):范围格式为“startLine:startColumn endLine:endColumn”或“startLine endLine”methodName(string):新方法的名称
例子:
{
"file": "/path/to/file.php",
"selectionRange": "10:5-15:10",
"methodName": "extractedMethod"
}可提取变量
将表达式提取到命名变量中。
参数:
file(string):PHP文件的路径selectionRange(string):范围格式为“行:列”或“行”variableName(string):新变量的名称(带或不带$前缀)
例子:
{
"file": "/path/to/file.php",
"selectionRange": "10:15",
"variableName": "myVar"
}导入变量
从所选表达式中引入一个新变量(首选用于大型PHP文件重构)。
参数:
file(string):PHP文件的路径selectionRange(字符串):范围格式为“startLine:startColumn endLine:endColumn”、“line:column”或“line”variableName(string):新变量的名称(带或不带$前缀)
例子:
{
"file": "/path/to/file.php",
"selectionRange": "10:15-10:30",
"variableName": "myVar"
}重命名变量
重命名整个范围内的变量。
参数:
file(string):PHP文件的路径selectionRange(string):使用变量的范围格式为“行:列”或“行”oldName(string):当前变量名(带或不带$前缀)newName(string):新变量名(带或不带$前缀)
例子:
{
"file": "/path/to/file.php",
"selectionRange": "10:5",
"oldName": "oldVar",
"newName": "newVar"
}发展
有关贡献、设置开发环境、运行测试和代码质量工具的信息,请参阅 贡献.md.
许可证
MIT许可证。看 许可证 了解详情。
贡献
欢迎投稿!请看 贡献.md 了解如何为这个项目做出贡献的详细信息。
作者
加布里埃尔·索摩查- gabriel@somoza.me
