客户mcp
MCP服务器 rpcclient 通过stdio传输面向iOS。
先决条件
- Python 3.10+
- RPC服务器可访问
入门指南
安装
python3 -m venv .venv
source .venv/bin/activate
pip install rpcclient-mcp
which rpcclient-mcprpcclient==6.11.1 是一个包依赖项,因此它会自动与此MCP一起安装。
如果你想强制使用本地rpcclient源代码而不是PyPI:
export RPCCLIENT_PYTHONPATH=/absolute/path/to/rpc-project/src/rpcclient配置您的AI代理
克劳德代码
claude mcp add --transport stdio rpcclient-mcp -- /absolute/path/to/venv/bin/rpcclient-mcpCodex 命令行界面
codex mcp add rpcclient-mcp -- /absolute/path/to/venv/bin/rpcclient-mcp双子星命令行工具
gemini mcp add --transport stdio rpcclient-mcp /absolute/path/to/venv/bin/rpcclient-mcpCodex(手动配置)
增添 ~/.codex/config.toml (或您的活动Codex配置):
[mcp_servers.rpcclient-mcp]
command = "/absolute/path/to/venv/bin/rpcclient-mcp"
[mcp_servers.rpcclient-mcp.env]
RPCCLIENT_PYTHONPATH = "/absolute/path/to/rpc-project/src/rpcclient" # optional配置更改后重新启动客户端。
用法
ping()
rpc_connect(host="127.0.0.1", port=5910)
rpc_get_screen_context(session_id="...")
rpc_disconnect(session_id="...")工具
会话
# health
ping()
# connection lifecycle
rpc_connect(host="127.0.0.1", port=5910, timeout=3.0)
rpc_disconnect(session_id)
rpc_reconnect(session_id)
# session inspection
rpc_list_sessions()
rpc_session_info(session_id)使用这些来建立、检查和恢复会话。\ rpc_reconnect 是运输恢复路径,并使旧手柄无效。
通用RPC+句柄
# discovery
rpc_capabilities(session_id, include_private=False)
rpc_call(session_id, path, args=None, kwargs=None, store_result=True)
# handle lifecycle
rpc_list_handles(session_id)
rpc_release_handle(session_id, handle_id)
rpc_release_all_handles(session_id)
# handle access
rpc_handle_call(session_id, handle_id, method, args=None, kwargs=None, store_result=True)
rpc_handle_get(session_id, handle_id, attr, store_result=True)使用 rpc_call 用于在根客户端对象上执行点路径。\ 当 store_result=True,非JSON返回值被具体化为句柄。
应用程序+用户界面
# app discovery + launch
rpc_list_apps(session_id, query="", limit=30)
rpc_launch_app(session_id, bundle_id=None, app_query=None, kill_existing=True, unlock_device=True, timeout=3.0, wait_foreground_timeout=5.0)
# context + overlay handling
rpc_get_screen_context(session_id, ensure_accessibility=True, wait_primary_bundle=None, wait_timeout=5.0, max_items=300, dedupe=True)
rpc_dismiss_overlays(session_id, timeout=4.0, max_rounds=6)
# interaction: click + type
rpc_click_label(session_id, label, exact=True, index=0, timeout=5.0, auto_scroll=True, draw_frame=False, direction="next", displayed_only=False, dismiss_overlays=True, overlay_timeout=3.0)
rpc_click_by_context(session_id, intent, min_score=0.52, timeout=5.0, auto_scroll=True, draw_frame=False, direction="next", dismiss_overlays=True, overlay_timeout=3.0)
rpc_type_text(session_id, text, target_label=None, intent=None, min_intent_score=0.35, anchor_label=None, anchor_position="before", anchor_offset=1, clear_first=False, timeout=5.0, direction="next", displayed_only=False, dismiss_overlays=True, overlay_timeout=3.0)
# gestures + focused fallback
rpc_scroll(session_id, direction="down", count=1, pause_seconds=0.25, from_x=None, from_y=None, to_x=None, to_y=None)
rpc_tap(session_id, x, y, repeat=1, pause_seconds=0.2)
rpc_type_focused_text(session_id, text, dismiss_overlays=False, overlay_timeout=2.0)这是主要的自动化界面:启动、读取上下文、单击、键入和手势。\ 使用 rpc_tap + rpc_type_focused_text 当web字段可见但AX无法发现时。
当前限制
Safari覆盖密码字段并不总是暴露在此目标上。\ 在某些运行中可能仍需要手动输入密码。
许可证
MIT。看 许可证.
