返回社区
分享

如何修复新版本MCP不运行的问题

wcyjsxc 2026-06-17 15:07 浏览 67 点赞 0 评论 0
原因基本锁定了:不是端口问题,是编码问题 + 可能插件重复加载。 日志关键报错: 'ascii' codec can't decode byte 0xca 'utf8' codec can't decode byte 0xd3 这说明对方电脑的 Abaqus / Windows 环境里有中文路径、中文用户名、中文系统编码或中文状态文本,MCP v5 的 Socket Bridge 在处理 ping/status 时按 ascii/utf8 解码,结果遇到 GBK/ANSI 中文字节直接炸了。 另外这句也很关键: registered Abaqus MCP GUI menu registered Abaqus MCP GUI menu registered Abaqus MCP GUI menu 说明可能同一个插件被加载了多次。 你让 Codex 这样修: 请修复 Abaqus MCP v5 socket bridge 在中文 Windows / Abaqus 环境下连接失败的问题。 日志报错包括: 1. 'ascii' codec can't decode byte 0xca 2. 'utf8' codec can't decode byte 0xd3 3. compat status write failed 4. socket closed before a complete message was received 判断原因: Abaqus 2021+ 在中文 Windows 环境中,路径、状态文本、日志或 GUI 返回内容可能是 GBK/mbcs 编码,但当前 socket bridge 使用 ascii 或 utf8 强制解码,导致 ping/status 请求失败。 修复要求: 1. 所有 socket 接收内容统一使用安全解码: - 优先 utf-8 - 失败后 fallback 到 mbcs - 再失败 fallback 到 gbk - 最后使用 errors='replace' 2. 所有 socket 返回 JSON 时,必须: - json.dumps(..., ensure_ascii=True) - 返回内容只用 ASCII 安全字符 - 禁止直接返回中文异常对象 - 禁止直接把 bytes 当 str 拼接 3. 兼容 Python2 / Abaqus旧环境: - 不使用 Python3-only 写法 - 不直接使用 TimeoutError,必须兼容 socket.timeout - str/unicode/bytes 处理必须兼容 4. compat status 写入失败时不能让 socket bridge 崩溃: - 捕获异常 - 写入失败只记录日志 - 不影响 bridge 继续监听 127.0.0.1:48152 5. ping 方法必须返回最简单 ASCII JSON: {"ok": true, "message": "pong"} 6. status 方法也必须返回 ASCII JSON,不要返回中文。 7. 检查插件是否重复注册菜单: - 如果菜单已经注册,不要重复注册 - 避免 registered Abaqus MCP GUI menu 重复出现多次 8. 给出修改后的完整文件,并说明修改位置。 目标: 在中文 Windows、中文路径、Abaqus 2021/2022/2023/2024/2025 环境下,Start Socket Bridge 后,GUI 可以正常 ping 127.0.0.1:48152,不再出现 ascii/utf8 decode error。 临时解决法: 1. 用户电脑路径尽量不要有中文 2. 插件目录不要放中文路径 3. Abaqus工作目录不要有中文 4. 先删除重复插件副本,只保留一份最新版 5. 重启 Abaqus 6. 再点 Plug-ins > Abaqus MCP > Start Socket Bridge 一句话:Bridge启动了,但一收到 ping 就因为中文编码炸了;再加上插件可能重复加载。修 socket bridge 的编码兼容即可。

评论

暂无评论。

登录后评论