Cursor 编程实践:用 Remote SSH 与 MCP 打通开发环境部署
1. 为什么要在 Cursor 里折腾 Remote SSH 和 MCP如果你平时写代码的机器和跑服务的机器不是同一台比如本地是 Mac、代码要跑在云主机或者公司内网的 Linux 上那你大概率经历过这种来回本地改完代码scp传上去再ssh登录跑一遍报错了再回来改。Cursor 本身是 VS Code 的分支它把 Remote SSH 这套远程开发能力继承了下来同时又能把 AI 补全、Chat、Agent 这些能力作用在远程目录上等于你人在本地手却伸到了远程机器里写代码。但光连上远程还不够。真正让开发环境部署这件事变顺的是 MCPModel Context Protocol。简单说MCP 是给 AI 装外挂的一套协议你可以把文件系统、数据库、命令行、部署脚本这些能力包装成 MCP Server让 Cursor 里的模型直接调用。比如你想让 AI 帮你把项目部署到远程主机它可以先读远程目录结构再执行构建命令最后把结果返回给你整个过程不用你手动复制粘贴命令。这篇就聚焦一件事在 Cursor 里用 Remote SSH 连上远程主机再通过 MCP 把部署相关的操作串起来同时把模型调用的 Key 和 API 通道统一到 TaoToken 上避免你在多个模型供应商之间来回切换配置。适合已经会用 Cursor 基础功能、想进一步把远程开发和 AI 部署打通的人。下面从配置骨架开始一步步给到可复制的代码和验证动作。2. 前置准备TaoToken 统一 Key 与 API 通道在讲 Remote SSH 之前先把模型通道这件事定下来。Cursor 支持自定义 OpenAI 兼容的 API 地址和 Key这意味着你可以把请求统一指向 TaoToken用一个 Key 管理多个模型的调用。这样做的好处是远程主机上的 MCP Server 如果需要调用模型也能复用同一套通道不用在每台机器上分别配不同厂商的 Key。TaoToken 的 API 入口是https://taotoken.net/api官网是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。你需要先去控制台创建一个 API Key这个 Key 后面会填到 Cursor 的 settings.json 里。创建 Key 的入口在控制台里路径是 API Keys 页面。拿到 Key 之后先别急着关页面因为 Cursor 的配置需要同时填 Base URL 和 Key两个都对上才能通。如果你还没建过 Key可以走这个 deep link 直接到 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite。这里有个容易踩的坑Cursor 的模型配置分两层一层是 Cursor 自己内置的模型走 Cursor 官方通道另一层是自定义 OpenAI 兼容通道。我们要改的是后者也就是在 settings.json 里加openai相关的配置。如果你把 Key 填到了错误的位置会出现模型列表能拉到但请求 401的情况后面排障章节会细说。3. 可复制配置settings.json 骨架与 Remote SSH 连接3.1 settings.json 里的 TaoToken 通道配置Cursor 的 settings.json 位置和 VS Code 一样Mac 下在~/Library/Application Support/Cursor/User/settings.jsonLinux 下在~/.config/Cursor/User/settings.json。你可以用Cmd/Ctrl Shift P打开命令面板输入Preferences: Open User Settings (JSON)直接打开。下面是一份可复制的配置骨架把模型通道指向 TaoToken{ cursor.openai.baseUrl: https://taotoken.net/api, cursor.openai.apiKey: sk-你的TaoTokenKey, cursor.openai.model: claude-3-5-sonnet, cursor.openai.customHeaders: { X-Client: cursor-remote-ssh }, remote.SSH.remotePlatform: { your-remote-host: linux }, remote.SSH.connectTimeout: 30, remote.SSH.useLocalServer: false, remote.SSH.showLoginTerminal: true }几个参数说明一下。cursor.openai.baseUrl填 TaoToken 的 API 地址注意结尾不要多加斜杠否则部分请求会拼出双斜杠导致 404。cursor.openai.apiKey填你刚创建的 Key。cursor.openai.model可以先填一个你常用的模型名具体支持哪些模型可以在模型对话页面确认入口是https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite。remote.SSH.remotePlatform这个映射很关键。如果你连的远程主机是 Linux但 Cursor 没识别出来它会按本地平台去下载对应的 VS Code Server结果就是连上了但服务起不来。手动指定linux能避免这个问题。remote.SSH.useLocalServer设为 false 是让远程主机自己起 Server适合远程机器能直连外网的场景如果你的远程机器网络受限可以改成 true 走本地转发。3.2 配置 SSH 免密登录Remote SSH 底层还是走 ssh 命令所以先把免密登录配好不然每次连接都要输密码Cursor 的远程会话会频繁断开。在本地终端执行ssh-keygen -t ed25519 -C cursor-remote ssh-copy-id -i ~/.ssh/id_ed25519.pub useryour-remote-host然后编辑本地~/.ssh/config加一段主机别名方便 Cursor 识别Host cursor-dev HostName 192.168.1.100 User deploy Port 22 IdentityFile ~/.ssh/id_ed25519 ServerAliveInterval 30 ServerAliveCountMax 3ServerAliveInterval这两行是防止长时间不操作导致连接被掐断远程开发场景下很实用。配好之后在本地终端ssh cursor-dev能直接进去就说明 SSH 层没问题了。3.3 在 Cursor 里发起 Remote SSH 连接按Cmd/Ctrl Shift P输入Remote-SSH: Connect to Host选择你刚配的cursor-dev。Cursor 会在远程主机上下载并启动 VS Code Server第一次会慢一点因为要传 server 文件。连上之后左下角会显示SSH: cursor-dev这时候你打开的任何文件夹都是远程主机上的目录。连上之后建议先做一件事在远程终端里确认 Server 进程和端口。执行ps aux | grep vscode-server ls ~/.cursor-server/bin/如果能看到 server 进程和 bin 目录说明 Remote SSH 这一层已经通了。接下来才是 MCP 的部分。4. 验证请求MCP 服务可用性与模型通道连通4.1 配置一个文件系统 MCP ServerMCP 在 Cursor 里的配置入口是Cmd/Ctrl Shift P输入MCP: Edit Config或者直接编辑~/.cursor/mcp.json。下面是一个文件系统 MCP Server 的配置示例用来让 AI 能读取远程项目目录{ mcpServers: { filesystem: { command: npx, args: [ -y, modelcontextprotocol/server-filesystem, /home/deploy/project ], env: { OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: sk-你的TaoTokenKey } } } }注意args里最后那个路径要换成你远程主机上的真实项目路径。env里把 TaoToken 的通道透传给 MCP Server这样 MCP 内部如果需要调模型也走同一条通道。4.2 验证 MCP 是否加载成功保存 mcp.json 后在 Cursor 里打开 Chat 面板Cmd/Ctrl L输入看看上下文列表里有没有出现 MCP 相关的条目。更直接的验证方式是让 AI 执行一个文件读取动作比如请列出 /home/deploy/project 下的所有文件并读取 package.json 的内容如果 MCP Server 正常加载AI 会调用 filesystem 工具返回文件列表和内容。如果没反应说明 MCP 没起来去Cmd/Ctrl Shift P输入MCP: Show Logs看日志。4.3 验证模型通道连通模型通道的验证更简单直接在 Chat 里问一句你现在用的是哪个模型请返回你的模型标识如果返回的模型名和你 settings.json 里配的一致说明请求确实走了 TaoToken 通道。如果报 401 或者 model not found就是 Key 或模型名的问题。你也可以用 curl 直接测通道curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoTokenKey \ -H Content-Type: application/json \ -d { model: claude-3-5-sonnet, messages: [{role: user, content: ping}] }返回里有choices字段就说明通道通了。这一步在远程主机上跑一遍能同时验证远程机器的网络能不能到 TaoToken。4.4 把部署动作串起来MCP 通了之后你可以让 AI 帮你做部署。比如在 Chat 里输入读取 /home/deploy/project 下的 Dockerfile 和 docker-compose.yml 然后执行 docker compose up -d --build把结果返回给我AI 会先通过 filesystem MCP 读文件再通过终端执行命令。这里要注意执行命令这类操作建议用 Cursor 的 Agent 模式并且在执行前确认命令内容避免误操作。如果你想让部署流程更规范可以把常用命令写成一个 shell 脚本让 AI 调用脚本而不是直接拼命令。5. 本篇常见错排查5.1 Remote SSH 连上了但 AI 功能不可用这种情况通常是远程主机上的 Cursor Server 没起来或者本地和远程的 Cursor 版本不匹配。先在远程终端确认~/.cursor-server/bin/下有对应版本的目录如果没有在 Cursor 里执行Remote-SSH: Kill VS Code Server on Host然后重新连接让它重新下载。另一个原因是远程主机的网络到不了 TaoToken。在远程终端跑一下前面那个 curl 命令如果超时说明远程机器出网有问题需要检查远程主机的网络配置。5.2 MCP Server 启动失败最常见的报错是npx: command not found说明远程主机没装 Node.js。在远程终端执行node -v确认没有的话装一个 LTS 版本。另一个常见问题是路径权限args里的目录如果远程用户没有读权限MCP Server 会启动后立刻退出日志里会显示 permission denied。还有一种情况是 MCP Server 起来了但 Cursor 识别不到。这时候检查 mcp.json 的 JSON 格式多一个逗号都会导致整个文件解析失败。可以用python -m json.tool ~/.cursor/mcp.json验证格式。5.3 模型请求 401 或 404401 一般是 Key 错了或者 Key 没生效。去 TaoToken 控制台确认 Key 状态如果刚创建等几秒再试。404 通常是 baseUrl 拼错了检查是不是多加了/v1或者结尾斜杠。TaoToken 的 baseUrl 就是https://taotoken.net/api不要自己加路径。如果返回的是model not found说明你填的模型名不在支持列表里。去模型对话页面确认可用模型名入口是https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite。5.4 远程终端里命令执行卡住Cursor 的远程终端有时候会因为 shell 配置问题卡住比如.bashrc里有交互式命令。可以在 settings.json 里加terminal.integrated.shellArgs.linux: [-l]或者检查远程用户的 shell 配置里有没有阻塞式命令。这个坑比较隐蔽表现是终端能打开但输入命令没反应。6. 把通道和远程开发固定成习惯走到这里你应该已经能在 Cursor 里连上远程主机、跑通 MCP、并且模型请求走的是 TaoToken 通道。接下来要做的就是把配置固定下来别每次换机器都重配一遍。我的做法是把 settings.json 里和 TaoToken 相关的几行单独抽出来放到一个 dotfiles 仓库里换机器时直接软链过去。MCP 的 mcp.json 同理但注意里面的路径要按机器改。如果你经常在多个远程主机之间切换可以给每台主机配一个 MCP Server 别名比如filesystem-dev、filesystem-prod在 Chat 里用选择对应的上下文。长期做编码和 Agent 任务的话可以考虑用 Coding Plan 把模型调用额度固定下来入口是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里面有各语言的调用示例配 MCP Server 的时候可以直接参考。最后提醒一句MCP 给了 AI 执行命令的能力部署脚本这类操作建议先在测试环境跑通确认命令幂等再放到生产。远程开发环境部署这件事配置一次能省很多来回但前提是每一步都验证过别一次性把所有配置堆上去再排查。