MCP 服务
XTerminal 提供本地 MCP(Model Context Protocol)服务,让 Codex、Claude Code 等客户端通过 Streamable HTTP 使用 XTerminal 中经过授权的连接、远程文件和工作区能力。
MCP 会把外部客户端请求带回 XTerminal。SSH 命令、SFTP 文件操作和工作区写入是否需要确认,分别由 XTerminal 中的访问范围、执行策略和客户端权限控制。

截图展示的是当前设置页的“工具”标签:服务处于停止状态,监听地址为本机回环地址,工具按工作区、SSH、远程文件和文件传输分组显示。背景连接和数值属于本地演示环境。
MCP 客户端可以操作远程服务器或本地文件。首次配置时建议保留“每次确认”、只暴露指定服务器和指定本地目录,并且只给可信客户端签发令牌。
能力范围
MCP 设置中的 工具 标签按功能分组管理。当前工具包括:
| 分组 | 能力 |
|---|---|
| 工作区 | 浏览连接、分组、快速命令、笔记和分类;创建或修改这些工作区数据 |
| SSH 操作 | 列出已暴露的 SSH 服务器,执行普通 SSH 命令或 sudo 命令 |
| 远程文件 | 列出目录、检查路径、读取远程文本、写入远程文本 |
| 文件传输 | 上传、下载、查看传输状态和取消传输 |
工具开关对所有 MCP 客户端生效。至少要保留一个工具;关闭工具后,已连接的客户端需要重新连接才能刷新工具定义。
MCP 不会通过工具返回已保存的私钥或密码。连接保存操作只有在用户明确提供密码时才会接受密码字段,其他情况下不会让客户端读取现有凭据。
开启服务
- 打开 设置 > AI 助手 > MCP 服务。
- 打开 启用 MCP 服务。
- 检查服务地址和监听端口。
- 在 工具、访问范围 和 执行策略 中完成限制。
- 在 客户端 标签中为 Codex 或 Claude Code 创建访问令牌。
默认地址是 127.0.0.1,默认端口是 12335,服务端点格式为:
http://127.0.0.1:12335/mcp
端口必须在 1024 到 65535 之间。修改端口后点击 应用;如果端口已经被其他程序占用,MCP 会启动失败,不会自动切换到另一个端口。
监听地址
默认只监听本机回环地址,适合 Codex 和 Claude Code 与 XTerminal 在同一台设备上的场景。
如果需要让 WSL 或其他受控环境访问,可以将地址改为 0.0.0.0 或当前环境可达的地址。这样会扩大服务暴露面,必须同时限制客户端令牌、SSH 服务器和本地目录,并由网络层阻止不可信来源访问端口。
监听地址不是远程服务地址。MCP 客户端连接的是运行 XTerminal 的设备,远程命令仍然通过 XTerminal 中配置的 SSH 连接执行。
访问范围
SSH 服务器
在 访问范围 > 允许访问的 SSH 服务器 中选择:
| 选项 | 行为 |
|---|---|
| 全部服务器 | 暴露当前 XTerminal 中全部 SSH 连接 |
| 指定服务器 | 只暴露选中的 SSH 连接 |
建议使用 指定服务器。MCP 客户端必须先使用 xterminal_ssh_list_servers 获取已暴露的服务器,再使用返回的服务器 ID 发起命令或文件操作。
本地目录
在 访问范围 > 允许访问的本地目录 中选择:
| 选项 | 行为 |
|---|---|
| 全部本地目录 | 允许上传源文件和下载目标位于任意本地目录 |
| 指定目录 | 只允许位于所选目录内的本地路径 |
指定目录会按实际路径边界检查,不能通过 .. 或符号链接绕过允许范围。上传源文件和下载目标都受这项设置限制。

访问范围页同时控制 SSH 服务器和本地目录,未选择的范围不会因为工具开关开启而自动暴露。
执行策略
SSH 与 SFTP 操作
命令执行策略控制普通 SSH 命令和远程文件操作:
| 选项 | 行为 |
|---|---|
| 每次确认 | 每个操作都在 XTerminal 中显示目标、命令或路径,确认后才执行 |
| 直接执行 | 跳过 XTerminal 确认并立即执行 |
“直接执行”只适用于明确可信的客户端。它不会扩大服务器或本地目录访问范围,但会取消人工确认这一层保护。
确认窗口会显示请求客户端、目标服务器、操作类型、命令、工作目录和文件路径。覆盖文件时会显示覆盖警告。请求超过等待时间或窗口关闭后会被拒绝。
sudo 操作
sudo 执行策略独立于普通命令:
| 选项 | 行为 |
|---|---|
| 禁用 | 不允许 MCP 使用 sudo 工具 |
| 每次确认 | 每次 sudo 请求都需要确认 |
| 直接执行 | 允许符合权限条件的请求跳过确认 |
启用 sudo 后还要选择凭据方式:
- 每次输入 sudo 密码:在确认窗口中临时输入,仅用于本次执行。
- 复用 SSH 登录密码:明确允许 XTerminal 使用已保存的 SSH 登录密码完成 sudo。
MCP 客户端不应在命令参数中传递 sudo 密码。执行 xterminal_ssh_sudo_exec 时也不需要在命令前手动写 sudo,XTerminal 会在授权后处理提权。
令牌还必须单独开启 允许 sudo,因此“全局 sudo 策略”和“客户端令牌权限”都允许时,客户端才可能使用 sudo。

工作区管理
工作区管理策略控制 MCP 对连接、分组、快速命令和笔记的读取与写入:
| 选项 | 行为 |
|---|---|
| 禁用 | 不允许 MCP 读取或修改工作区 |
| 写入时确认 | 读取目录或目录信息按策略执行,创建和修改数据前显示预览并确认 |
| 直接保存 | 跳过工作区写入确认 |
客户端令牌还必须开启 允许工作区管理。工作区确认窗口会按“连接设置”“笔记分类”“保存字段”分组展示内容,并隐藏密码值;较长的笔记内容会截断预览,只显示内容长度。
云端保存仍然受登录状态和 Pro 权限检查,不会因为启用 MCP 而绕过账号限制。
配置客户端
创建令牌
- 确认 MCP 状态为 运行中。
- 打开 客户端 标签。
- 点击 添加 Codex 或 添加 Claude Code。
- 复制弹窗中生成的配置或命令。
- 将配置保存到对应客户端后,点击 我已保存配置。
创建入口只显示客户端类型和权限管理按钮,不会在页面中再次显示完整令牌;下面的裁剪图没有包含任何令牌值。

令牌只在创建弹窗中显示一次。令牌以 Bearer 令牌形式发送,不能提交到代码仓库、聊天记录或截图中。客户端列表只保存令牌摘要和权限状态,不显示完整令牌。
Codex
界面会生成类似下面的配置。实际端点和令牌请使用弹窗内容:
[mcp_servers.xterminal]
url = "http://127.0.0.1:12335/mcp"
http_headers = { Authorization = "Bearer <MCP_TOKEN>" }
default_tools_approval_mode = "prompt"
tool_timeout_sec = 120
Claude Code
界面会生成类似下面的命令:
claude mcp add --transport http --scope user --header "Authorization: Bearer <MCP_TOKEN>" xterminal http://127.0.0.1:12335/mcp
不要手动把真实令牌替换到文档、脚本示例或公共终端记录中。配置完成后,如果在 XTerminal 中关闭了某个工具,重新连接客户端让工具列表更新。
令牌权限
客户端列表中可以分别切换:
- 允许 sudo:允许该令牌使用 sudo 工具,但仍受 sudo 执行策略和目标服务器范围限制。
- 允许工作区管理:允许该令牌使用工作区读取或写入工具,但仍受工作区管理策略限制。
撤销令牌会立即终止该客户端后续的 MCP 请求和传输任务。发现令牌泄露时,应先撤销令牌,再重新创建客户端配置。
常见操作
远程命令
推荐流程:
- 调用
xterminal_ssh_list_servers查找目标服务器。 - 使用返回的
serverId调用xterminal_ssh_exec。 - 检查返回的退出码、标准输出、标准错误和执行耗时。
命令是非交互式执行,默认超时为 60 秒,单次最多 600 秒。需要交互式终端、密码输入或持续运行的程序时,应回到 XTerminal 的 SSH 终端执行。
远程文件
SFTP 工具支持列目录、检查元数据、读取或写入文本文件,也支持上传、下载、查看传输状态和取消传输。大文件或长时间传输应通过传输状态工具跟踪,不要重复提交同一任务。
工作区数据
使用工作区工具时,先浏览目录获得已有资源和 ID,再创建或更新目标对象。更新操作需要提供已有对象 ID;创建操作省略 ID 后会返回新 ID。
MCP 返回的工作区数据会过滤保存的密码、私钥、私钥密码和 SSH 代理凭据。
故障排查
客户端无法连接
- 检查 MCP 状态是否为 运行中。
- 检查客户端端点、端口和
/mcp路径是否一致。 - 检查令牌是否完整、是否已经撤销。
- 修改工具配置后,重启或重新连接客户端。
- 如果修改了监听地址,确认客户端所在环境可以访问该地址。
找不到 SSH 服务器
确认连接中心中存在 SSH 连接,并在 MCP 的 允许访问的 SSH 服务器 中暴露了目标连接。使用“指定服务器”时,新增连接不会自动获得访问权限。
请求一直等待或被拒绝
确认 XTerminal 窗口仍在运行且没有关闭确认弹窗。普通命令、SFTP 操作和工作区写入分别受不同策略控制;还要检查对应客户端令牌是否开启了 sudo 或工作区管理权限。
端口启动失败
端口冲突、监听地址格式无效或端口小于 1024 都会导致启动失败。更换未占用的端口后点击 应用,再检查状态标签和错误提示。