Poki logo

Poki

Control a real iPhone from MCP clients through a local macOS server and native bridge.

Install Poki

Pick your client, then add it in one click or paste the config.

Streamable HTTP (Remote)
Server URL
https://api.star-history.com/chart?repos=JosssphZhou/poki&type=date&theme=dark&legend=top-left

Remote servers are added in the app, not the config file: Customize → Connectors → Add custom connector, then paste this URL.

Overview

poki MCP server lets AI agents operate a real iPhone through a local macOS setup, without a jailbreak or additional hardware. It exposes phone-control capabilities through MCP and includes device discovery with `list_devices`. Reach for it when an agent needs to interact with iPhone apps, browsers, messages, or other on-device tasks. An optional Poki Agent can run tasks from the terminal or configured iMessage and Telegram channels.

Use cases

  • Operate a connected iPhone from an MCP client
  • Search the web in Chrome and summarize results
  • Run repeat phone tasks from the terminal
  • Control an authorized iPhone through iMessage or Telegram

Key features

  • Local MCP server for real iPhone control
  • Native macOS bridge
  • Connected-device discovery
  • Optional terminal agent
  • iMessage and Telegram channels
  • Multi-device selection by UUID

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked

Recent health check succeeded.

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars937Stargazers on the source repository.
Last commit2d agoMost recent push to the default branch.

How Poki works

What poki does

poki connects an MCP client or the optional Poki Agent to a real iPhone. The project is designed for local operation on macOS and uses a native bridge to communicate with the device. It does not require a jailbreak or dedicated external hardware.

An agent can use the connected phone for tasks such as searching in Chrome and summarizing a result. Because the target is a real device, actions have real effects: sending a message or making a payment will be carried out if requested. Screen contents are sent to the model service configured for the agent.

The repository also includes Poki Agent, a separate terminal-oriented interface. It can retain past tasks and supports messaging channels after they are configured, including iMessage and Telegram.

How it works

The MCP server runs locally and remains active while an MCP client connects to it. The project includes a native bridge and device tooling for the macOS implementation. A connected iPhone is selected automatically when only one device is available; with multiple devices, a device UUID can be supplied.

Use node bin/call.mjs list_devices to find available device UUIDs. MCP clients can then invoke Poki's exposed tools through their normal MCP configuration. Claude Code, Codex, and other clients that accept mcpServers JSON are supported connection patterns.

For a physical iPhone, pair the device with the Mac over USB before using it. The project also documents Developer Mode, Wi-Fi, sessions, and remote connection behavior in its supporting guides.

Setup and configuration

The source installation targets macOS 15 or newer and requires full Xcode, Rust, Node.js 24 or newer, and ffmpeg. Clone the repository, run ./bin/setup to check and prepare dependencies, then start the server with npm start. The first build may take several minutes.

An Apple Silicon macOS package is also available. That package includes the native bridge and idevice tools, so Rust and the setup script are not needed. It still requires full Xcode, Node.js 24 or newer, Python 3, and ffmpeg. After starting the server, register the local src/stdio.mjs entry point with the MCP client.

The optional agent is installed separately with npm from the agent directory. Run poki login before using it, and use poki status to check its state. POKI_AGENT_MODEL changes the agent model, while POKI_NO_UPDATE_CHECK=1 disables the daily anonymous GitHub release check.

Tools and capabilities

  • Discover connected devices with list_devices.
  • Operate a real iPhone through MCP tools.
  • Run tasks from the standalone Poki Agent.
  • Start iMessage or Telegram control channels after authorization.
  • Select a specific phone by device UUID when multiple devices are connected.

Limitations and notes

Physical-device support has been verified only with iPhones using the Chinese interface. Physical devices support portrait orientation only. App container export and direct links to Settings subpages are unavailable.

The main project targets macOS. Linux and Windows ports are maintained separately by community contributors. Keep the server running while using MCP or the standalone agent, and review requested actions carefully because the agent controls the actual phone.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Poki

poki is an MCP server that connects MCP clients and Poki Agent to a real iPhone through a local Mac-based bridge. Its main tools include device discovery through `list_devices` and phone-control operations exposed over MCP. It requires no jailbreak or extra hardware, and works with Claude Code, Codex, and compatible MCP clients.

Clone the repository, run `./bin/setup`, and start it with `npm start` on macOS 15 or newer. The source setup requires full Xcode, Rust, Node.js 24 or newer, and ffmpeg. An Apple Silicon package is also available and includes the native bridge and idevice tools.

Yes, poki works with Claude Code through its stdio MCP entry point. After starting the server, register `node "$PWD/src/stdio.mjs"` with Claude Code using `claude mcp add`; Codex and other clients supporting `mcpServers` JSON can use the same server.

A physical iPhone must be paired with the Mac over USB before use. Physical-device support has been verified with iPhones using the Chinese interface, and physical devices support portrait orientation only. App container export and direct Settings subpage links are unavailable.

Yes, poki can select a specific device by UUID when multiple phones are connected. Run `node bin/call.mjs list_devices` to find the available UUIDs, then provide the desired device to the Poki Agent.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewPoki AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/poki?style=directory)](https://allmcps.com/mcp/poki)
HTML Embed
<a href="https://allmcps.com/mcp/poki"><img src="https://allmcps.com/api/badge/poki?style=directory" alt="Poki on AllMCPs" /></a>