2026-08-25,Codex 通过远程 QuantUX MCP 可以正常完成 MCP API Key 认证和健康检查,但 quantux_list_apps 返回空列表,quantux_create_app 返回 HTTP 405。用户确认本机 quantux.env 未修改,且浏览器可以正常访问 https://qux.ilapage.cn/。
quantux_list_apps
quantux_create_app
quantux.env
https://qux.ilapage.cn/
认证分为两层:
线上 MCP 容器于 2026-08-17 启动并成功登录,JWT 于 2026-08-24 到期。代码仅在进程启动时调用 _auto_login(),不会刷新过期 JWT。QuantUX 后端解析失败后把请求视为 guest:列表返回空,创建 App 返回误导性的 405。现有健康检查只判断 Token 字符串是否存在,因此错误显示 logged_in=true。
_auto_login()
logged_in=true
另外,当前导出 URL 把 MCP API Key 放在 query 参数中,访问日志会保留完整 URL,存在凭据泄露风险。
exp
logged_in
token_valid
token_expires_at
自动重试写操作必须严格限制为“请求尚未以有效身份执行”的认证失败场景,防止重复创建或重复更新。部署异常时回退旧镜像并重启旧容器;凭据轮换后不能回退到旧客户端配置。
更新 README 的认证生命周期、健康检查字段、导出下载认证与部署轮换步骤。
token_refresh_due
python -m py_compile quantux_client.py quantux_auth.py quantux_export.py quantux_verify.py server.py
python -m unittest discover -s tests -p 'test_*.py' -v
git diff --check
16500d867d76d704bb95524fcbea310da4eb2d14
OPC/quantux_mcp main
quantux-mcp
C:\Users\ila20\.codex\quantux.env
获得用户确认后,将按“备份当前配置 → 服务器拉取/构建 → 重启单个 MCP 容器 → 健康/创建/导出验证 → 轮换 API Key并同步客户端 → 再验证”的顺序执行。
/home/ubuntu/quantux-mcp
/home/ubuntu/quantux-mcp/backups/issue-1-20260825-152400
sha256:eae3c401f062d39f8cb453051e5d9a5c4ac7ac31a2fb13178e0b6084444cdd60
注意:当前已经运行的 Codex mcp-remote 进程仍缓存旧 Key。需要重启 Codex 或重新连接 QuantUX MCP 后,当前会话才会读取新配置;服务端本身已验证正常。
mcp-remote
状态保持待用户验收,不关闭工单。
quantux_health
ok
token_valid=true
token_refresh_due=false
结论:客户端旧 Key 缓存已消除,修复后的 QuantUX MCP 可正常使用。工单继续保持待用户验收。
No dependencies set.
The note is not visible to the blocked user.
原始问题
2026-08-25,Codex 通过远程 QuantUX MCP 可以正常完成 MCP API Key 认证和健康检查,但
quantux_list_apps返回空列表,quantux_create_app返回 HTTP 405。用户确认本机quantux.env未修改,且浏览器可以正常访问https://qux.ilapage.cn/。已确认根因
认证分为两层:
quantux.env的 Bearer API Key,当前正常。线上 MCP 容器于 2026-08-17 启动并成功登录,JWT 于 2026-08-24 到期。代码仅在进程启动时调用
_auto_login(),不会刷新过期 JWT。QuantUX 后端解析失败后把请求视为 guest:列表返回空,创建 App 返回误导性的 405。现有健康检查只判断 Token 字符串是否存在,因此错误显示logged_in=true。另外,当前导出 URL 把 MCP API Key 放在 query 参数中,访问日志会保留完整 URL,存在凭据泄露风险。
目标
实施方案
exp,不把 Token 写日志。logged_in、token_valid、token_expires_at,且不会把仅存在的过期 Token 视为有效。非目标
验收标准
logged_in=true。风险与回退
自动重试写操作必须严格限制为“请求尚未以有效身份执行”的认证失败场景,防止重复创建或重复更新。部署异常时回退旧镜像并重启旧容器;凭据轮换后不能回退到旧客户端配置。
文档影响
更新 README 的认证生命周期、健康检查字段、导出下载认证与部署轮换步骤。
实施完成:等待线上部署与凭据轮换确认
已实现
exp检查;调用工具前在 5 分钟安全提前量内自动重新登录。logged_in、token_valid、token_expires_at和token_refresh_due。验证
python -m py_compile quantux_client.py quantux_auth.py quantux_export.py quantux_verify.py server.py:通过。python -m unittest discover -s tests -p 'test_*.py' -v:7 项通过。git diff --check:通过。提交
16500d867d76d704bb95524fcbea310da4eb2d14OPC/quantux_mcp main。尚未执行的高风险步骤
quantux-mcp容器。C:\Users\ila20\.codex\quantux.env。获得用户确认后,将按“备份当前配置 → 服务器拉取/构建 → 重启单个 MCP 容器 → 健康/创建/导出验证 → 轮换 API Key并同步客户端 → 再验证”的顺序执行。
已部署,等待验收
16500d867d76d704bb95524fcbea310da4eb2d14/home/ubuntu/quantux-mcp/home/ubuntu/quantux-mcp/backups/issue-1-20260825-152400sha256:eae3c401f062d39f8cb453051e5d9a5c4ac7ac31a2fb13178e0b6084444cdd60C:\Users\ila20\.codex\quantux.env已同步更新。未在工单、日志或源码记录密钥内容。注意:当前已经运行的 Codex
mcp-remote进程仍缓存旧 Key。需要重启 Codex 或重新连接 QuantUX MCP 后,当前会话才会读取新配置;服务端本身已验证正常。状态保持待用户验收,不关闭工单。
Codex 重启后验证
mcp-remote已重新读取本机配置。quantux_health:MCP 与 QuantUX 后端均为ok,logged_in=true、token_valid=true、token_refresh_due=false。quantux_list_apps:成功返回当前账号的 11 个已有原型。结论:客户端旧 Key 缓存已消除,修复后的 QuantUX MCP 可正常使用。工单继续保持待用户验收。