Skip to main content

rpcclient-mcp

MCP server for rpcclient targets iOS over stdio transport.

Prerequisites

  • Python 3.10+
  • RPC server reachable

Getting Started

Install

cd rpcclient-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

rpcclient==6.11.1 is a package dependency, so it installs automatically with this MCP.

If you want to force local rpcclient source instead of PyPI:

export RPCCLIENT_PYTHONPATH=/absolute/path/to/rpc-project/src/rpcclient

Configure your AI agent

Claude Code

claude mcp add --transport stdio rpcclient-mcp -- /absolute/path/to/rpcclient-mcp/.venv/bin/rpcclient-mcp

Codex CLI

codex mcp add rpcclient-mcp -- /absolute/path/to/rpcclient-mcp/.venv/bin/rpcclient-mcp

Gemini CLI

gemini mcp add --transport stdio rpcclient-mcp /absolute/path/to/rpcclient-mcp/.venv/bin/rpcclient-mcp

Codex (manual config)

Add to ~/.codex/config.toml (or your active Codex config):

[mcp_servers.rpcclient-mcp]
command = "/absolute/path/to/rpcclient-mcp/.venv/bin/rpcclient-mcp"

[mcp_servers.rpcclient-mcp.env]
RPCCLIENT_PYTHONPATH = "/absolute/path/to/rpc-project/src/rpcclient" # optional

Restart your client after config changes.

Usage

ping()
rpc_connect(host="127.0.0.1", port=5910)
rpc_get_screen_context(session_id="...")
rpc_disconnect(session_id="...")

Tools

Session

# 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)

Use these to establish, inspect, and recover sessions.
rpc_reconnect is the transport recovery path and invalidates old handles.

Generic RPC + Handles

# 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)

Use rpc_call for dot-path execution on the root client object.
When store_result=True, non-JSON return values are materialized as handles.

App + UI

# 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)

This is the primary automation surface: launch, read context, click, type, and gesture.
Use rpc_tap + rpc_type_focused_text when web fields are visible but not AX-discoverable.

Current Limitation

Safari overlay password fields are not always AX-exposed on this target.
Manual password entry may still be required in some runs.

License

MIT. See LICENSE.

Metadata

Release files for rpcclient-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rpcclient-mcp 0.1.0
File Size Uploaded Provenance
rpcclient_mcp-0.1.0.tar.gz 17.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for rpcclient-mcp 0.1.0
File Interpreter ABI Platform
rpcclient_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 36.4 kB

Release files / rpcclient_mcp-0.1.0.tar.gz

Download URL rpcclient_mcp-0.1.0.tar.gz
Size 17.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ea3be17a8c089d9272cf0b0b6b2559e5010bebcf46bd0a925166fe63226171f7
BLAKE2b-256 checksum
How to use checksums
383f2957107575ea9e6bd8bc7a34fcd5570cf86db622eda057b112ceb1dab4d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / rpcclient_mcp-0.1.0-py3-none-any.whl

Download URL rpcclient_mcp-0.1.0-py3-none-any.whl
Size 18.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a3115c519f94d6a5350fc0dd0f148c6ce76fac80127152f8e35831b0e2b7149d
BLAKE2b-256 checksum
How to use checksums
f9da6793860c8fa98a18b812ea1c8be5c2d1677efc0d432a9e06cd9a123235e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Security for rpcclient-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page