使用说明
laravel调试mcp
一 可安装的CLI+生产安全MCP服务器 这让 Codex 命令行界面 通过强化的SSH远程运行器运行常见的Laravel诊断,而无需授予交互式shell访问权限。
建筑
- Codex 命令行界面⇄ 通过stdio的本地MCP服务器
- 本地MCP服务器⇄ SSH ⇄
/usr/local/bin/laravel-diag laravel-diag执行严格的诊断列表并返回JSON- SSH访问可以通过以下方式进行限制
authorized_keys强制命令
快速启动
建议的安装路径是交互式安装程序:
npx @alex-engvall/laravel-debug-mcp init
向导会询问配置文件名称、服务器主机、SSH设置用户、Laravel应用程序路径、诊断用户、SSH密钥选择、Codex配置首选项和变异策略。然后:
- 创建或重用专用本地Ed25519密钥;
- 通过SSH连接到服务器;
- 在需要时创建诊断用户;
- 安装
/usr/local/bin/laravel-diag; - 写
/etc/laravel-diag.env作为root:<diag-user>带模式0640; - 在中安装公钥
~<diag-user>/.ssh/authorized_keys强制命令; - 将本地配置文件保存在
~/.config/laravel-debug-mcp/profiles/; - 跑
codex mcp add当Codex CLI可用时; - 跑
doctor烟雾检查。
您还可以全局安装:
npm install -g @alex-engvall/laravel-debug-mcp
laravel-debug-mcp init
非交互式/CI设置
使用 --config --yes 对于从CI/CD或签入的非机密配置文件进行的可重复设置:
laravel-debug-mcp init --config ./laravel-debug-mcp.prod.json --yes
配置示例:
{
"profile": "easytoday-prod",
"host": "app.easytoday.se",
"port": 22,
"setupUser": "root",
"diagUser": "codexdiag",
"appDir": "/home/easytoday/domains/app.easytoday.se/app",
"healthUrl": "http://127.0.0.1/up",
"enableMutations": false,
"codex": {
"configure": true,
"serverName": "laravelProdEasyToday"
}
}
将SSH私钥保存在CI密钥存储中。不要将机密提交到此存储库。
CLI命令
laravel-debug-mcp init [--profile <name>] [--config <path>] [--yes] [--dry-run]
laravel-debug-mcp doctor --profile <name>
laravel-debug-mcp rotate-key --profile <name>
rotate-key 生成新的每个配置文件密钥,使用相同的强制命令引导程序安装它,更新本地配置文件和Codex MCP条目,运行 doctor,并从中删除之前的公钥 authorized_keys 经核实。
医生检查
安装后,运行:
laravel-debug-mcp doctor --profile easytoday-prod
doctor 验证本地先决条件并执行远程烟雾检查:
- Node.js版本;
- SSH二进制可用性;
- 私钥的存在和权限;
- 远程
sys.info行动; - 拉瑞维尔
health行动; artisan.version行动。
本地配置文件格式
个人资料发送至:
~/.config/laravel-debug-mcp/profiles/<profile>.json
配置文件包含主机、端口、诊断用户、密钥路径、远程命令、变异策略、输出上限、超时和Codex服务器名称。MCP服务器仍然通过以下方式读取运行时配置 LARAVEL_PROD_* 环境变量,这使得Codex和CI集成变得简单。
手动远程安装
首选完整的安装程序,但传统的帮助程序仍然可用:
sudo DIAG_USER=codexdiag scripts/remote/install-remote.sh
然后编辑 /etc/laravel-diag.env 并手动配置SSH授权密钥。完整版 init flow会自动执行此操作。
MCP服务器环境变量
直接运行MCP服务器时,至少提供:
LARAVEL_PROD_HOST=prod.example.com
LARAVEL_PROD_USER=codexdiag
LARAVEL_PROD_SSH_KEY=/home/alex/.ssh/laravel-debug-mcp/prod_ed25519
可选变量:
LARAVEL_PROD_SSH_PORT=22
LARAVEL_PROD_REMOTE_COMMAND=/usr/local/bin/laravel-diag
LARAVEL_PROD_TOOL_TIMEOUT_SEC=45
LARAVEL_PROD_MAX_OUTPUT_CHARS=200000
LARAVEL_PROD_ENABLE_MUTATIONS=0
可用诊断
应用程序/级别
healthartisan_versionartisan_aboutartisan_migrate_statusartisan_schedule_listartisan_queue_failedartisan_horizon_statusfile_listfile_readenv_read
日志
logs_listlogs_taillogs_greplogs_last_error
系统
sys_infosys_disksys_memorysys_topphp_versionphp_extensions
Laravel缓存工件
cache_status
数据库只读
database_connectionsdatabase_schemadatabase_query(SELECT,SHOW,EXPLAIN,以及DESCRIBE仅)
碎玻璃突变
默认情况下禁用突变,并在本地和远程双重门控:
- 本地MCP配置:
LARAVEL_PROD_ENABLE_MUTATIONS=1 - 远程运行器配置:
LARAVEL_DIAG_ENABLE_MUTATIONS=1
突变工具:
artisan_optimize_clearartisan_config_cacheartisan_queue_restartartisan_queue_retryartisan_pulse_restart
SSH硬化
安装程序以这种形式写入授权密钥:
command="/usr/local/bin/laravel-diag",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-ed25519 AAAA...
这使得OpenSSH只运行该密钥的诊断运行器,即使客户端要求shell或其他命令。
发展
npm install
npm run typecheck
npm run build
node dist/cli.js --help
版本控制
当前版本: 0.1.0.
在每次发布之前保持这些版本值同步:
package.jsonpackage-lock.jsonsrc/cli.tssrc/index.ts
发布验证器检查包名称、公共包状态、semver格式、GitHub发布标签、预发布/稳定发布类型、CLI版本和MCP服务器版本:
npm run release:verify
对于候选版本,请使用semver预发布版本,例如 0.1.0 并将GitHub Release作为预发布版发布。对于稳定版本,请使用简单的semver版本,例如 0.0.1 并将GitHub Release作为稳定版本发布。
发布
发布清单:
-
更新包版本和匹配的源版本。
-
运行本地验证:
npm ci npm run release:verify npm run typecheck npm run build npm pack --dry-run -
提交发布更改。
-
创建并发布一个GitHub Release,其标签完全正确
v<package.json version>例如v0.1.0.
CI工作流在拉取请求上运行,并推送到 main。它安装依赖关系,验证发布元数据,类型检查,构建,并使用以下命令检查包内容 npm pack --dry-run.
出版
发布由以下人员处理 .github/workflows/npm-publish.yml 当GitHub发布时。
发布工作流:
- 验证发布标签是否匹配
v<package.json version>; - 验证GitHub预发布是否使用semver预发布版本;
- 验证稳定的GitHub版本是否使用稳定的semver版本;
- 跑
npm run typecheck; - 检查包裹内容
npm pack --dry-run; - 使用源代码发布到npm
npm publish --access public --provenance.
GitHub预发布发布到npm next dist标签。稳定的GitHub版本发布于 latest dist标签。
工作流程要求配置npm可信发布/OIDC @alex-engvall/laravel-debug-mcp 因为它使用 id-token: write 并且不从存储库秘密中读取npm令牌。