1. 为什么要在 Cursor 里折腾 Remote SSH 和 MCP
如果你平时写代码的机器和跑服务的机器不是同一台,比如本地是 Mac、代码要跑在云主机或者公司内网的 Linux 上,那你大概率经历过这种来回:本地改完代码,scp传上去,再ssh登录跑一遍,报错了再回来改。Cursor 本身是 VS Code 的分支,它把 Remote SSH 这套远程开发能力继承了下来,同时又能把 AI 补全、Chat、Agent 这些能力作用在远程目录上,等于你人在本地,手却伸到了远程机器里写代码。
但光连上远程还不够。真正让开发环境部署这件事变顺的,是 MCP(Model 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_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_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_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite。
这里有个容易踩的坑: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.json,Linux 下在~/.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_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite。
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 user@your-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 Server
MCP 在 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 或 404
401 一般是 Key 错了或者 Key 没生效。去 TaoToken 控制台确认 Key 状态,如果刚创建,等几秒再试。404 通常是 baseUrl 拼错了,检查是不是多加了/v1或者结尾斜杠。TaoToken 的 baseUrl 就是https://taotoken.net/api,不要自己加路径。
如果返回的是model not found,说明你填的模型名不在支持列表里。去模型对话页面确认可用模型名,入口是https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite。
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_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite。接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面有各语言的调用示例,配 MCP Server 的时候可以直接参考。
最后提醒一句:MCP 给了 AI 执行命令的能力,部署脚本这类操作建议先在测试环境跑通,确认命令幂等再放到生产。远程开发环境部署这件事,配置一次能省很多来回,但前提是每一步都验证过,别一次性把所有配置堆上去再排查。