v0.5.1Cross-platform MCP tools for AI coding agents
Give your agent new superpowers.
A curated marketplace of production-grade MCP plugins. One command installs
unified Android & iOS automation and local
Apple Notes CRUD into Claude Code, Cursor, VS Code,
Windsurf, and any other MCP client. Everything runs on-device.
Native plugins — restart Claude Code (or /mcp to reload) after installing.
No clone needed — uvx fetches and caches the servers on first run. Full per-client guide below.
Local & secure. First-party APIs only — Apple JXA, Android ADB, Xcode simctl/devicectl. No telemetry, no remote proxies, no cloud daemons.
2flagship plugins
77typed MCP tools
100%on-device & local
0cloud daemons
Plugins
Production-grade plugins, ready today.
Two plugins ship now, more on the way. Each one is versioned, isolated,
and installs with a single command.
mobile-mcp
Android & iOS automation
v0.5.1
Unified cross-platform device automation for AI agents. Control both
Android (ADB + android CLI) and
iOS (Xcode simctl + devicectl +
Apple Vision OCR) with 100% first-party tooling. Zero third-party daemons.
MCP server giving any agent CRUD access to Apple Notes —
Python + uv + the official mcp SDK, driving
Notes.app through JXA. Notes.app is the source of truth, queried live
on every call. No RAG, no vector index, no Full Disk Access.
This marketplace is built to hold many plugins. Have an idea for the
next one? Propose it on GitHub.
wanted
Other agents
Any MCP client, no marketplace required.
Every plugin is standard stdio MCP. Install uv (provides
uvx), then either let uvx fetch the servers
directly, or point your client at a local clone. Fastest of all: paste the
self-install prompt and let your agent configure itself.
Self-install prompt
Paste it to your agent as-is — it detects its client and writes the config itself.
You are an AI agent running inside an MCP client (Claude Code, Claude Desktop, Cursor, VS Code with Copilot, Windsurf Cascade, Cline, Roo Code, Codex CLI, Gemini CLI, opencode, or another MCP-compatible app). Configure the "mobile-mcp" and "apple-notes-mcp" MCP servers for YOURSELF — write them into the MCP configuration of the client you are currently running in. Make the edit yourself; do not just print instructions.
Step 1 — Prerequisite check. Run `uvx --version`. If uvx is missing, STOP and tell me to install uv first from https://github.com/astral-sh/uv, then re-run this prompt once it is available.
- For mobile-mcp: verify `adb` (Android) and/or `xcrun` (iOS) are installed.
- For apple-notes-mcp: verify `uname -s` is `Darwin` (macOS with Notes.app).
Step 2 — Detect your client and pick ONE config target (default to global/user scope unless I ask for project scope):
- Claude Code CLI: run:
claude mcp add mobile-mcp -s user -- uvx --from "git+https://github.com/bibutikoley/claude-marketplace@v0.5.1#subdirectory=plugins/mobile-mcp" mobile-mcp
claude mcp add apple-notes-mcp -s user -- uvx --from "git+https://github.com/bibutikoley/claude-marketplace@v0.5.1#subdirectory=plugins/apple-notes-mcp" apple-notes-mcp
then skip to Step 5.
- Claude Desktop: file ~/Library/Application Support/Claude/claude_desktop_config.json, JSON shape {"mcpServers": {...}}.
- Cursor: file ~/.cursor/mcp.json (global) or .cursor/mcp.json in the current project, JSON shape {"mcpServers": {...}}.
- VS Code (Copilot/Agent): file .vscode/mcp.json in the current project. NOTE: this file uses a "servers" key, NOT "mcpServers".
- Windsurf: file ~/.codeium/windsurf/mcp_config.json, JSON shape {"mcpServers": {...}}.
- Cline: the extension's MCP settings file (cline_mcp_settings.json), JSON shape {"mcpServers": {...}}.
- Roo Code: global MCP settings (mcp_settings.json) or project .roo/mcp.json, JSON shape {"mcpServers": {...}}.
- Codex CLI: file ~/.codex/config.toml, TOML tables [mcp_servers.mobile-mcp] and [mcp_servers.apple-notes-mcp] (key mcp_servers with underscore).
- Gemini CLI: file ~/.gemini/settings.json (global) or .gemini/settings.json (project), JSON shape {"mcpServers": {...}}.
- opencode: file opencode.json — project ./opencode.json (or .opencode/opencode.json) or global ~/.config/opencode/opencode.json, JSON shape {"mcp": {...}} with type "local". NOTE: opencode does NOT use "mcpServers", "servers", "command"+"args", or "env" — it uses "mcp", "command" as one array, and "environment".
- Anything else: ASK me which file your client reads for MCP servers before writing anything. If you cannot determine your client, ASK me instead of guessing.
Step 3 — Back up, then merge. If the file exists, back it up with a .bak suffix first. Add the "mobile-mcp" and "apple-notes-mcp" entries and preserve every existing entry. Create parent folders if needed. Minimal new-file skeletons: {"mcpServers": {}} for mcpServers clients, {"servers": {}} for VS Code, {"mcp": {}} for opencode (plus "$schema": "https://opencode.ai/config.json"), and for Codex just the tables below in an empty file.
Entry values (default, no clone needed):
- mobile-mcp:
command: uvx
args: ["--from", "git+https://github.com/bibutikoley/claude-marketplace@v0.5.1#subdirectory=plugins/mobile-mcp", "mobile-mcp"]
- apple-notes-mcp:
command: uvx
args: ["--from", "git+https://github.com/bibutikoley/claude-marketplace@v0.5.1#subdirectory=plugins/apple-notes-mcp", "apple-notes-mcp"]
If I say I have a local clone of bibutikoley/claude-marketplace, use it instead: replace the --from value with the absolute path to its plugins/mobile-mcp or plugins/apple-notes-mcp directory (absolute path only, never relative).
For apple-notes-mcp, if I give you a folder allowlist, add env {"APPLE_NOTES_MCP_ALLOWED_FOLDERS": "the comma-separated list I gave you"} to the entry — except opencode, where the key is "environment" (not "env").
Step 4 — Validate. Re-read the file and prove it still parses: for a JSON file run python3 -m json.tool with the file as its argument; for a TOML file run python3 -c "import tomllib,sys; tomllib.load(open(sys.argv[1],'rb'))" with the file path as its argument. Show me the entries you added.
Step 5 — Tell me how to activate in THIS client (fully quit and reopen Claude Desktop with Cmd-Q; restart Cursor / Windsurf / VS Code; /mcp or `claude mcp list` for Claude Code; /mcp list for Gemini; quit and restart opencode; MCP panel for Cline/Roo), remind me to click OK on any macOS Automation prompts, and offer to call the health_check tool to confirm everything works.
Edit Global MCP (mcp_settings.json) or project .roo/mcp.json
Gemini CLI
~/.gemini/settings.json (global) or .gemini/settings.json (project)
opencode
opencode.json — project ./opencode.json or global ~/.config/opencode/opencode.json, then quit + restart
First tool call in any client: click OK on any macOS Automation prompts,
then verify with the health_check tool. Optional folder allowlist for Notes via
APPLE_NOTES_MCP_ALLOWED_FOLDERS in the entry's
env (environment for opencode) — see the
plugin README.
Security & Scope
Local by design. Private by default.
All plugins run 100% locally on your machine using first-party OS
and developer tooling. Zero background cloud daemons, zero telemetry, zero remote
proxies.
apple-notes-mcp access scope
By default the server can access all Notes. Restrict tools to a folder allowlist
via APPLE_NOTES_MCP_ALLOWED_FOLDERS (comma-separated folder names or
full paths). Unset means unrestricted. Confirm active scope with
health_check:
APPLE_NOTES_MCP_ALLOWED_FOLDERS="iCloud/Work,iCloud/Personal" claude
mobile-mcp device isolation
Controls connected physical Android devices/emulators via ADB and iOS
Simulators/devices via Xcode (simctl and devicectl).
UI element detection on iOS uses Apple's native Vision OCR
framework running locally on macOS — screenshots are never uploaded to
third-party clouds for coordinate detection.
Requirements
What you'll need.
General
uv installed (Python ≥ 3.12)
apple-notes-mcp
macOS with Notes.app and Automation permission
mobile-mcp · Android
Android SDK platform-tools (adb) in PATH, USB debugging enabled or Android Emulator
mobile-mcp · iOS
macOS with Xcode 15+ (xcrun simctl for Simulators, xcrun devicectl for physical iOS 17+ devices)