Token导航 LogoToken导航TokenDH.com
Laravel Debug MCP logo
安全风控未说明官方级别未说明来源级核验

Laravel Debug MCP

MCP Server

一个安全的Laravel生产环境诊断工具,通过SSH和STDIO接口提供多种诊断功能,无需授予完整的shell访问权限。

工具数

29

提示词数

0

GitHub Stars

0

资源数

0
PHP命令行工具安全

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Alemil-Group-AB

提供方

Alemil-Group-AB

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

laravel prod mcp

A. 安全生产MCP服务器 (STDIO)允许 Codex CLI 跑 *常见,阅读最多* a的生产诊断 拉瑞维尔 应用 不授予shell访问权限.

建筑

  • Codex CLI⇄ (stdio)⇄ 此MCP服务器(在本地运行)
  • 此MCP服务器⇄ (SSH)⇄ laravel-diag 远程运行器(在生产主机上运行)
  • laravel-diag 执行严格的诊断列表并返回JSON
为什么会分裂?它避免了公开暴露MCP服务器,并允许您使用SSH+强制命令+分配列表来加强访问。

______________________________________________________________________

你得到了什么(工具)

应用程序/级别

  • health --检查Laravel健康端点(/up 默认情况下)
  • artisan_versionphp artisan --version
  • artisan_aboutphp artisan about
  • artisan_migrate_statusphp artisan migrate:status
  • artisan_schedule_listphp artisan schedule:list
  • artisan_queue_failedphp artisan queue:failed
  • artisan_horizon_statusphp artisan horizon:status (如果已安装)
  • file_list --列出应用程序根目录下的文件/目录(可选递归)
  • file_read --按相对路径读取应用程序根目录下的任何文件
  • env_read --阅读Laravel .env* 来自应用程序根目录的文件(已尽最大努力编辑)

日志

  • logs_list --列出中的日志文件 storage/logs
  • logs_tail --尾部最后N行(默认为最新日志文件)
  • logs_grep --日志中的固定字符串搜索(带上限)
  • logs_last_error --启发式“显示最后一个错误查找行”

系统

  • sys_info --未修改/日期/正常运行时间/哇
  • sys_disk --df-h
  • sys_memory --free-m(或/proc回退)
  • sys_top --ps快照(CPU和内存)
  • php_version --php-v
  • php_extensions --php-m

Laravel缓存工件(安全)

  • cache_status --列表 bootstrap/cache/*.php 具有mtime+大小的文件

数据库(只读)

  • database_connections --列出配置的Laravel DB连接和默认连接
  • database_schema --检查表/列/索引/外键(带可选过滤器)
  • database_query --执行只读SQL(SELECT/SHOW/EXPLAIN/DESCRIBE)带行帽

碎玻璃突变(默认禁用)

  • artisan_optimize_clearphp artisan optimize:clear
  • artisan_config_cachephp artisan config:cache
  • artisan_queue_restartphp artisan queue:restart
  • artisan_queue_retryphp artisan queue:retry
  • artisan_pulse_restartphp artisan pulse:restart (如果已安装)

两者都是 双栅极:

  1. 当地: LARAVEL_PROD_ENABLE_MUTATIONS=1
  2. 远程: LARAVEL_DIAG_ENABLE_MUTATIONS=1

______________________________________________________________________

需求

本地

  • Node.js>=18
  • 已安装Codex CLI
  • SSH访问prod

远程(生产主机)

  • PHP CLI可用(适用于运行者)
  • 公用设施: sh, tail, grep, df, ps, curl (或至少卷曲 health)
  • 专用锁定用户(推荐)

______________________________________________________________________

安装(本地)

git clone  laravel-prod-mcp
cd laravel-prod-mcp
npm install

构建输出

此repo可以在两种模式下运行:

A) Dev/TS模式(最初推荐):

npm run dev
# (runs: tsx src/index.ts)

B) 内置JS模式(建议稳定后使用):

npm run build
ls -la dist/index.js
npm start
# (runs: node dist/index.js)
如果 dist/index.js 之后不存在 npm run build,使用TS模式(npm run dev)并指向Codex tsx src/index.ts.

______________________________________________________________________

安装(远程/生产)

1) 创建受限用户(推荐)

示例(Ubuntu/Debian):

sudo adduser --disabled-password --gecos "" codexdiag

2) 安装远程运行器

将运行器复制到服务器(或使用您的部署机制):

# from your local machine
scp scripts/remote/laravel-diag root@prod.example.com:/tmp/laravel-diag
scp scripts/remote/laravel-diag.env.example root@prod.example.com:/tmp/laravel-diag.env.example

在服务器上:

sudo install -m 0755 /tmp/laravel-diag /usr/local/bin/laravel-diag
sudo install -m 0640 /tmp/laravel-diag.env.example /etc/laravel-diag.env
sudo nano /etc/laravel-diag.env   # set LARAVEL_DIAG_APP_DIR etc

(或者运行 scripts/remote/install-remote.sh 根。)

3) 配置 /etc/laravel-diag.env (必填)

您至少必须设置:

LARAVEL_DIAG_APP_DIR=/absolute/path/to/your/app   # folder where artisan lives

例子:

LARAVEL_DIAG_APP_DIR=/home/easytoday/domains/app.easytoday.se/app
LARAVEL_DIAG_LOG_DIR=/home/easytoday/domains/app.easytoday.se/app/storage/logs
LARAVEL_DIAG_ARTISAN=/home/easytoday/domains/app.easytoday.se/app/artisan
LARAVEL_DIAG_PHP_BIN=php
LARAVEL_DIAG_HEALTH_URL=http://127.0.0.1/up
LARAVEL_DIAG_TIMEOUT_SEC=25
LARAVEL_DIAG_MAX_OUTPUT_CHARS=200000
LARAVEL_DIAG_ENABLE_MUTATIONS=0

4) 权限说明(DirectAdmin/通用主机)

SSH用户必须能够 遍历 (+x)以及(适用于工匠) 应用程序目录。

在某些DirectAdmin设置中, /home//domains 是否受组限制(例如组 access). 如果你看到 Permission denied 当检查应用程序路径时 codexdiag,将其添加到该组:

sudo usermod -aG access codexdiag
# then reconnect SSH so the new group is active

验证:

ssh codexdiag@prod.example.com 'id'
ssh codexdiag@prod.example.com 'ls -la /path/to/app/artisan'

5) SSH硬化(强烈推荐)

输入您的公钥 ~codexdiag/.ssh/authorized_keys 和使用 强制命令.

scripts/remote/authorized_keys.example.

这使得OpenSSH始终执行 /usr/local/bin/laravel-diag (并忽略任何客户端提供的命令)。

______________________________________________________________________

配置MCP服务器(本地)

创建 .env 在repo根目录中(复制自 .env.example):

cp .env.example .env
nano .env

最小值:

LARAVEL_PROD_HOST=prod.example.com
LARAVEL_PROD_USER=codexdiag
LARAVEL_PROD_SSH_KEY=/home/alex/.ssh/codexdiag_ed25519

______________________________________________________________________

将Codex CLI连接到此MCP服务器

选项A:使用 codex mcp add (推荐)

TS/dev模式(最初推荐):

codex mcp add laravelProd   --env LARAVEL_PROD_HOST=prod.example.com   --env LARAVEL_PROD_USER=codexdiag   --env LARAVEL_PROD_SSH_KEY=/home/alex/.ssh/codexdiag_ed25519   -- npx tsx /ABS/PATH/laravel-prod-mcp/src/index.ts

内置JS模式(一次 dist/index.js 存在):

codex mcp add laravelProd   --env LARAVEL_PROD_HOST=prod.example.com   --env LARAVEL_PROD_USER=codexdiag   --env LARAVEL_PROD_SSH_KEY=/home/alex/.ssh/codexdiag_ed25519   -- node /ABS/PATH/laravel-prod-mcp/dist/index.js

选项B:编辑 ~/.codex/config.toml

重要提示: enabled_tools 必须低于 [mcp_servers.laravelProd] (不低于 .env).

TS/dev模式:

[mcp_servers.laravelProd]
command = "npx"
args = ["tsx", "/ABS/PATH/laravel-prod-mcp/src/index.ts"]
startup_timeout_sec = 20
tool_timeout_sec = 60

enabled_tools = [
  "health",
  "logs_list",
  "logs_tail",
  "logs_grep",
  "logs_last_error",
  "sys_info",
  "sys_disk",
  "sys_memory",
  "sys_top",
  "php_version",
  "php_extensions",
  "cache_status",
  "file_list",
  "file_read",
  "env_read",
  "database_connections",
  "database_schema",
  "database_query",
  "artisan_version",
  "artisan_about",
  "artisan_migrate_status",
  "artisan_schedule_list",
  "artisan_queue_failed",
  "artisan_horizon_status",
]

[mcp_servers.laravelProd.env]
LARAVEL_PROD_HOST = "prod.example.com"
LARAVEL_PROD_USER = "codexdiag"
LARAVEL_PROD_SSH_KEY = "/home/alex/.ssh/codexdiag_ed25519"

内置JS模式:

[mcp_servers.laravelProd]
command = "node"
args = ["/ABS/PATH/laravel-prod-mcp/dist/index.js"]
startup_timeout_sec = 20
tool_timeout_sec = 60

enabled_tools = [
  "health",
  "logs_list",
  "logs_tail",
  "logs_grep",
  "logs_last_error",
  "sys_info",
  "sys_disk",
  "sys_memory",
  "sys_top",
  "php_version",
  "php_extensions",
  "cache_status",
  "file_list",
  "file_read",
  "env_read",
  "database_connections",
  "database_schema",
  "database_query",
  "artisan_version",
  "artisan_about",
  "artisan_migrate_status",
  "artisan_schedule_list",
  "artisan_queue_failed",
  "artisan_horizon_status",
]

[mcp_servers.laravelProd.env]
LARAVEL_PROD_HOST = "prod.example.com"
LARAVEL_PROD_USER = "codexdiag"
LARAVEL_PROD_SSH_KEY = "/home/alex/.ssh/codexdiag_ed25519"

______________________________________________________________________

操作说明

在哪里 /up 来自?

Laravel提供了一个内置的健康端点 /up 在现代骨骼中。

在prod中关闭APP_DEBUG

该工具集假设您是通过日志/诊断进行调试的,而不是通过启用APP_DEBUG。

输出大小、超时

MCP服务器和远程运行器都强制执行超时和输出上限。

______________________________________________________________________

故障排除

MCP握手失败

  • 确保MCP服务器 打印到stdout(仅JSON-RPC)。对日志使用stderr。
  • 验证入口点路径是否存在:

- TS模式: src/index.ts - 构建模式: dist/index.js 之后 npm run build

SSH连接

确认SSH以非交互方式工作:

ssh -i /path/to/key codexdiag@prod.example.com 'echo ok'

如果使用强制命令,请运行 ssh codexdiag@prod.example.com 将等待JSON输入;这是意料之中的。

Invalid app dir /权限被拒绝

  • 验证 codexdiag 可以遍历应用程序的完整路径:
  ssh codexdiag@prod.example.com 'namei -l /path/to/app'
  • 在DirectAdmin上,您可能需要:
  sudo usermod -aG access codexdiag

health 失败

  • 确认 curl 服务器上存在。
  • 确认健康URL是环回的,并且可以从服务器访问:
  curl -i http://127.0.0.1/up

Artisan命令失败

  • 确认PHP CLI可用。
  • 确认SSH用户有权读取应用程序并运行 php artisan ....
  • 确认 LARAVEL_DIAG_APP_DIR 指向正确的版本/当前符号链接。

______________________________________________________________________

安全检查表

  • 用一 专用SSH用户
  • 使用 强制命令authorized_keys
  • 保留此工具集 只读;仅在玻璃破碎的情况下启用突变
  • 保密;仍然将输出视为敏感
  • 文件读取仅限于在应用程序根目录下解析的文件(LARAVEL_DIAG_APP_DIR)
  • SQL执行仅限于只读分配语句

______________________________________________________________________

许可证

麻省理工学院

目录标签

目录标签

PHP命令行工具安全本地部署生产安全诊断工具LaravelSSH远程执行

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

29

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP