Skip to main content
Glama
CURSOR_INTEGRATION_FIX.md5.81 kB
# Cursor MCP 集成修复文档 ## 问题描述 在尝试将 remote-terminal-mcp 服务器集成到 Cursor 编辑器时,遇到了以下问题: - Cursor 中显示 `remote-terminal` 状态为红色 🔴 - 显示 `0 tools enabled` - MCP Logs 中出现 `No server info found` 错误 ## 根本原因分析 通过系统性调试,发现了三个关键问题: ### 1. SSH Manager 方法兼容性问题 - **问题**: `mcp_server.py` 中调用了不存在的方法如 `list_tools()`, `execute_tool()` - **根因**: SSH Manager 实际方法为 `list_servers()`, `execute_command()` 等 - **影响**: 导致 AttributeError 崩溃 ### 2. MCP 协议版本不匹配 - **问题**: Cursor 请求协议版本 `2025-03-26`,服务器返回 `2024-11-05` - **根因**: 硬编码的协议版本与 Cursor 期望不符 - **影响**: 协议握手失败 ### 3. 通知处理错误 - **问题**: `notifications/initialized` 被错误地返回错误响应 - **根因**: 通知应该不返回响应,但服务器将其作为未知方法处理 - **影响**: 干扰 MCP 协议通信 ## 解决方案 ### 1. 修复 SSH Manager 方法调用 **修改前**: ```python # 错误的方法调用 manager.list_tools() manager.execute_tool() ``` **修改后**: ```python # 使用实际存在的方法 manager.list_servers() manager.execute_command(server_name, command) manager.simple_connect(server_name) manager.get_server_status(server_name) ``` ### 2. 实现动态协议版本匹配 **修改前**: ```python "protocolVersion": "2024-11-05" # 硬编码版本 ``` **修改后**: ```python # 动态使用客户端请求的版本 client_protocol_version = request.get('params', {}).get('protocolVersion', '2024-11-05') "protocolVersion": client_protocol_version ``` ### 3. 正确处理通知 **修改前**: ```python # 将通知作为错误处理 else: return {"error": {"code": -1, "message": f"未知方法: {method}"}} ``` **修改后**: ```python elif method == 'notifications/initialized': logger.info("处理notifications/initialized通知") return None # 通知不需要响应 ``` ### 4. 优化大数据响应处理 为避免 SSH Manager 返回的大量服务器配置数据导致通信阻塞: ```python # 只返回关键信息,避免大数据量 simple_servers = [] for server in servers: simple_servers.append({ 'name': server.get('name', ''), 'description': server.get('description', ''), 'connected': server.get('connected', False), 'type': server.get('type', '') }) ``` ## 测试验证 ### 1. 单元测试 创建了多个测试脚本验证修复效果: - `test_cursor_compatible_v2.py`: 流式读取兼容性测试 - `test_cursor_real_protocol.py`: 完整 Cursor 协议模拟测试 ### 2. 协议测试结果 ``` 🚀 测试真实的Cursor MCP协议... === 1. Cursor初始化请求 === ✅ 初始化成功 服务器: remote-terminal-mcp v1.0.0-debug 协议版本: 2025-03-26 === 2. Cursor初始化完成通知 === ✅ 通知处理成功 === 3. Cursor工具列表请求 === ✅ 获取到 5 个工具 ``` ### 3. Cursor 集成测试 - ✅ Cursor 中显示绿色状态 🟢 - ✅ 显示 `5 tools enabled` - ✅ 所有工具正常可用 ## 调试工具 ### mcp_server_debug.py 创建了带详细日志的调试版本,特性包括: - 详细的请求/响应日志记录 - 文件和控制台双重日志输出 - 完整的错误堆栈跟踪 - 协议版本信息记录 ### 日志分析 通过日志文件 `/tmp/mcp_server_debug.log` 可以详细追踪: - 每个请求的处理过程 - 协议版本协商过程 - 工具调用的参数和结果 - 错误发生的具体位置 ## 文件结构 ``` python/ ├── mcp_server.py # 主要 MCP 服务器(修复版) ├── mcp_server_debug.py # 调试版本(带详细日志) └── ssh_manager.py # SSH 管理器(未修改) tests/ ├── test_cursor_compatible_v2.py # 兼容性测试 └── test_cursor_real_protocol.py # 协议测试 docs/ ├── NPM_DEBUGGING_LOG.md # NPM 调试记录 └── CURSOR_INTEGRATION_FIX.md # 本文档 ``` ## 使用方法 ### 1. 在 Cursor 中配置 修改 `~/.cursor/mcp.json`: ```json { "mcpServers": { "remote-terminal": { "command": "python3", "args": [ "/Users/你的用户名/Code/remote-terminal-mcp/python/mcp_server.py" ], "env": { "FORCE_COLOR": "true" } } } } ``` ### 2. 调试模式 如需调试,可使用调试版本: ```json "args": [ "/Users/你的用户名/Code/remote-terminal-mcp/python/mcp_server_debug.py" ] ``` ### 3. 验证安装 重启 Cursor 后,在 Tools & Integrations 中应该看到: - `remote-terminal` 显示绿色状态 🟢 - 显示 `5 tools enabled` ## 技术要点 ### MCP 协议版本兼容性 - Cursor 使用较新的协议版本 `2025-03-26` - 服务器应该动态适配客户端版本 - 版本不匹配会导致整个连接失败 ### 通知 vs 请求的区别 - 请求 (Request): 需要返回响应 - 通知 (Notification): 不需要返回响应 - 错误处理通知会干扰协议通信 ### 大数据响应优化 - SSH Manager 返回的完整服务器配置数据量巨大 - 需要提取关键信息避免通信阻塞 - 使用流式读取处理大响应 ## 后续维护 1. **定期测试**: 使用提供的测试脚本验证功能 2. **日志监控**: 定期查看调试日志发现潜在问题 3. **协议更新**: 关注 MCP 协议版本更新 4. **错误处理**: 继续完善边界条件处理 ## 贡献者 此次修复通过系统性调试方法完成,展示了: - 问题分解与根因分析 - 协议兼容性调试 - 结构化测试验证 - 完整的文档记录 --- *最后更新: 2025-06-12* *状态: ✅ 修复完成,Cursor 集成正常工作*

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/maricoxu/remote-terminal-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server