提交qiming-mcp-proxy
This commit is contained in:
183
qiming-mcp-proxy/docs/analysis/WINDOWS_FIX_SUMMARY.md
Normal file
183
qiming-mcp-proxy/docs/analysis/WINDOWS_FIX_SUMMARY.md
Normal file
@@ -0,0 +1,183 @@
|
||||
# Windows 测试问题修复总结
|
||||
|
||||
## 测试环境
|
||||
- 版本: v0.1.37
|
||||
- 平台: Windows
|
||||
|
||||
## 发现的问题
|
||||
|
||||
### 1. ✅ 隐藏 CMD 窗口没有效果
|
||||
**问题分析**:
|
||||
- 在 `mcp-streamable-proxy/src/server_builder.rs` 中,`CREATE_NO_WINDOW` 标志设置得太早
|
||||
- 后续的 `cmd.env()` 和 `cmd.args()` 调用可能导致标志被重置或无效
|
||||
|
||||
**修复方案**:
|
||||
- 将 `CREATE_NO_WINDOW` 设置移到所有 `env()` 和 `args()` 调用之后
|
||||
- 确保在创建 `TokioChildProcess` 之前最后一步设置
|
||||
|
||||
**已修复文件**:
|
||||
- `/Users/apple/workspace/mcp-proxy/mcp-streamable-proxy/src/server_builder.rs`
|
||||
|
||||
**状态**: ✅ 已修复
|
||||
|
||||
---
|
||||
|
||||
### 2. ❓ mcp-proxy 启动不成功
|
||||
|
||||
**需要的信息**:
|
||||
1. 完整的错误日志(请提供)
|
||||
2. 使用的命令行参数
|
||||
3. 配置文件内容(如果有)
|
||||
|
||||
**可能的原因**:
|
||||
- Node.js 可执行文件路径问题
|
||||
- PATH 环境变量未正确继承
|
||||
- 子进程创建失败
|
||||
- MCP 服务配置错误
|
||||
|
||||
**诊断步骤**:
|
||||
```bash
|
||||
# 1. 检查日志文件
|
||||
cat logs/mcp-proxy.log
|
||||
|
||||
# 2. 使用详细模式运行
|
||||
mcp-proxy --verbose
|
||||
|
||||
# 3. 检查 Node.js 是否可用
|
||||
where node # Windows
|
||||
node --version
|
||||
|
||||
# 4. 检查 PATH 环境变量
|
||||
echo %PATH%
|
||||
```
|
||||
|
||||
**状态**: ⏳ 等待错误日志
|
||||
|
||||
---
|
||||
|
||||
### 3. ❓ 如果用户已经安装 Node.js 无法进入后续安装流程
|
||||
|
||||
**问题不清楚**:
|
||||
这个描述需要更多上下文。可能的理解:
|
||||
|
||||
**理解 A**: mcp-proxy 尝试安装 Node.js,但检测到已安装的 Node.js 后卡住
|
||||
- 问题: mcp-proxy 本身不包含 Node.js 安装逻辑
|
||||
- 代码中只有 PATH 继承和 npm 路径添加
|
||||
- 需要确认是否是其他工具(如 MCP 服务本身)的行为
|
||||
|
||||
**理解 B**: 某个 MCP 服务需要 Node.js,但检测逻辑有问题
|
||||
- 可能的原因: Node.js 在 PATH 中但可执行文件名不对(node.exe vs node)
|
||||
- 可能的原因: Node.js 版本不兼容
|
||||
|
||||
**理解 C**: npm 包安装过程卡住
|
||||
- 可能的原因: npm 缓存问题
|
||||
- 可能的原因: 网络连接问题
|
||||
- 可能的原因: 权限问题
|
||||
|
||||
**需要的信息**:
|
||||
1. 具体是什么"后续安装流程"?
|
||||
2. 卡在哪个步骤?有什么错误提示?
|
||||
3. 这个安装流程是 mcp-proxy 触发的还是某个 MCP 服务?
|
||||
4. Node.js 安装路径是什么?
|
||||
|
||||
**可能的修复方案**:
|
||||
如果是 Node.js 可执行文件检测问题,可以添加检测逻辑:
|
||||
|
||||
```rust
|
||||
// 检查 Node.js 是否可用
|
||||
fn is_node_available() -> bool {
|
||||
#[cfg(windows)]
|
||||
let node_cmd = "node.exe";
|
||||
#[cfg(not(windows))]
|
||||
let node_cmd = "node";
|
||||
|
||||
std::process::Command::new(node_cmd)
|
||||
.arg("--version")
|
||||
.output()
|
||||
.is_ok()
|
||||
}
|
||||
```
|
||||
|
||||
**状态**: ⏳ 等待详细描述
|
||||
|
||||
---
|
||||
|
||||
## 当前代码状态
|
||||
|
||||
### PATH 环境变量处理
|
||||
✅ 正确继承父进程 PATH
|
||||
✅ Windows 上自动添加 `%APPDATA%\npm` 到 PATH
|
||||
✅ 支持配置文件中自定义 PATH
|
||||
|
||||
### Windows CMD 窗口隐藏
|
||||
✅ `mcp-streamable-proxy`: 使用 `CREATE_NO_WINDOW` (已修复顺序)
|
||||
✅ `mcp-sse-proxy`: 使用 `CreationFlags(0x08000000)`
|
||||
✅ `mcp-proxy/client/core/command.rs`: 使用 `CreationFlags(0x08000000)`
|
||||
|
||||
---
|
||||
|
||||
## 下一步行动
|
||||
|
||||
### 立即需要
|
||||
1. **问题 2**: 提供完整的 mcp-proxy 启动错误日志
|
||||
2. **问题 3**: 详细描述"无法进入后续安装流程"的具体情况
|
||||
|
||||
### 测试验证
|
||||
1. 编译新版本并在 Windows 上测试
|
||||
2. 验证 CMD 窗口是否成功隐藏
|
||||
3. 测试各种 Node.js 安装场景:
|
||||
- 未安装 Node.js
|
||||
- 通过官方安装包安装
|
||||
- 通过 nvm-windows 安装
|
||||
- 通过 fnm 安装
|
||||
- Node.js 在自定义路径
|
||||
|
||||
### 构建测试版本
|
||||
```bash
|
||||
# 更新版本号
|
||||
# 编辑 mcp-proxy/Cargo.toml, 修改 version = "0.1.38"
|
||||
|
||||
# 构建
|
||||
cargo build --release -p mcp-proxy
|
||||
|
||||
# 生成可执行文件位置
|
||||
# target/release/mcp-proxy.exe
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 请提供以下信息
|
||||
|
||||
为了准确诊断和修复剩余的两个问题,请提供:
|
||||
|
||||
### 问题 2 (mcp-proxy 启动失败)
|
||||
```bash
|
||||
# 运行这些命令并提供输出
|
||||
mcp-proxy --version
|
||||
mcp-proxy <你的命令参数> --verbose
|
||||
|
||||
# 如果有日志文件,提供内容
|
||||
type logs\mcp-proxy.log
|
||||
```
|
||||
|
||||
### 问题 3 (Node.js 安装流程)
|
||||
请描述:
|
||||
1. 完整的操作步骤(从头到尾做了什么)
|
||||
2. 期望的行为是什么
|
||||
3. 实际发生了什么
|
||||
4. 有什么错误提示或卡住的界面
|
||||
5. 你的 Node.js 安装方式和路径
|
||||
|
||||
### 系统信息
|
||||
```powershell
|
||||
# Windows 版本
|
||||
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
|
||||
|
||||
# Node.js 信息
|
||||
where node
|
||||
node --version
|
||||
npm --version
|
||||
|
||||
# PATH 环境变量
|
||||
echo %PATH%
|
||||
```
|
||||
Reference in New Issue
Block a user