MCP 控制服务¶
NestSpace 内置一个 MCP(Model Context Protocol)Server,把容器控制能力暴露给电脑上的 MCP 客户端,例如 Claude Code。手机日常使用完全不需要它;这是给高级用户和自动化场景准备的可选能力。
启动服务¶
入口:空间设置 → MCP 控制服务。
- 服务随 NestSpace 进程自动启动。
- 设备重启后由
BOOT_COMPLETED自动拉起。 - 页面上可以手动启动/停止,并查看运行状态。
默认监听:
只绑定本机回环地址,电脑不能直接访问,需要通过 USB 端口转发或开启局域网模式。
Token¶
首次启动会生成 Bearer Token。在「MCP 控制服务 → 连接信息」里可以查看和复制。
- 所有工具调用都需要
Authorization: Bearer <token>。 - 不要把 Token 发到公开渠道。
- 服务停止再启动后 Token 保持不变(除非清除应用数据)。
USB 连接(推荐)¶
- 手机用 USB 连接电脑,确认
adb devices能看到设备。 - 转发端口:
- 在 Claude Code 里添加 MCP Server:
claude mcp add --transport http space http://127.0.0.1:8765/mcp \
--header "Authorization: Bearer <token>"
其他 MCP 客户端只要支持 Streamable HTTP 和自定义 Header,也可以按同样方式连接。
局域网连接¶
如果不想用 USB:
- 手机和电脑连接同一个 Wi-Fi。
- 在「MCP 控制服务」里打开「局域网访问」。
- Android 17+ 会请求
ACCESS_LOCAL_NETWORK权限;拒绝后服务会退回只监听127.0.0.1。 - 使用页面显示的地址:
注意:局域网模式是 HTTP + Token,没有 TLS。只在可信网络使用,不要在公共 Wi-Fi 或公网暴露。
后台启动容器¶
如果希望在不打开 NestSpace 界面的情况下由 Agent 启动容器,需要授予**悬浮窗权限**:
- NestSpace 使用一个 1×1 透明、不可聚焦、不可触摸的窗口获得 Android 的后台 Activity 启动(BAL)豁免。
- 未授权时
space_launch返回LAUNCH_BLOCKED。 - 「MCP 控制服务」页面会显示后台启动状态和授权入口。
悬浮球是独立的可见覆盖层,和这个隐藏窗口不是一回事;关闭悬浮球不影响后台启动。
CLI¶
仓库自带零依赖 Python 客户端:
export NESTSPACE_MCP_URL=http://127.0.0.1:8765/mcp
export NESTSPACE_MCP_TOKEN='<token>'
tools/nestspace-mcp health
tools/nestspace-mcp tools
tools/nestspace-mcp call browser_tabs
tools/nestspace-mcp call browser_open '{"url":"https://example.com"}'
tools/nestspace-mcp shell
--arg 会自动识别 true / false / null、整数、浮点和 JSON;--json 输出原始结果。详细用法见 nestspace-mcp CLI。
外部 MCP 工具(方向相反)¶
「空间设置 → MCP 工具」配置的是**外部** MCP Server,供 NestSpace 自己的 AI 助手使用;它们和 NestSpace 对外提供的控制服务是两套独立功能:
- 支持多个 Streamable HTTP 端点;
- 使用 Bearer Token;
- 工具名以
mcp_<服务短 ID>_前缀提供给本地助手; - 不注册进 NestSpace 的
ToolRegistry,远程客户端看不到。
会话与限制¶
- 每个客户端使用独立的
Mcp-Session-Id,空闲 30 分钟后回收。 - 未知或过期会话返回 404。
- 请求体上限 40 MB,请求头上限 64 KB,并发连接 32。
- 支持
initialize、tools/list、tools/call、GET SSE 心跳和 DELETE 会话。 - 工具列表见 MCP 工具参考。
常见问题¶
连接被拒绝¶
- 确认「MCP 控制服务」显示运行中。
- USB 模式确认执行了
adb forward tcp:8765 tcp:8765。 - 局域网模式确认手机和电脑在同一网络,且 Android 17+ 已授予局域网权限。
- 确认地址是
http://.../mcp,不要漏掉/mcp。
返回 401¶
Token 不正确或没有带 Authorization Header。重新复制 Token,确认命令里的引号和空格正确。
返回 404¶
- 地址路径不对。
- 会话已过期(空闲 30 分钟)。重新连接即可,CLI 会自动重新初始化并重试一次。
能用工具但启动不了容器¶
space_launch 返回 LAUNCH_BLOCKED 时,授予悬浮窗权限后再试;或者保持 NestSpace 在前台。
局域网地址看不到¶
先确认「局域网访问」已打开;Android 17+ 需要授予 ACCESS_LOCAL_NETWORK。部分路由器的 AP 隔离会阻止手机和电脑互访。
安全建议¶
- 默认保持只监听
127.0.0.1。 - 局域网模式只在可信网络临时开启,用完关闭。
- 不要把 8765 端口映射到公网。
- Token 泄露后清除 NestSpace 应用数据可以重新生成。