Skip to main content

Drew's Xcode MCP Server (drews-xcode-mcp)

PyPI Python Versions Downloads MCP macOS Only Xcode License: MIT

GitHub last commit

An MCP (Model Context Protocol) server that enables AI assistants to control and interact with Xcode for Apple platform development.

Renamed from xcode-mcp-server. With several unrelated projects sharing that name — and Xcode itself now shipping a built-in MCP server — this project is now drews-xcode-mcp. Existing setups keep working: the old PyPI name is a compatibility package that forwards to this one, and all settings carry over. When convenient, update your MCP configuration to run drews-xcode-mcp. If your server key/name is the old default xcode-mcp-server, we recommend renaming it to drews-xcode-mcp too — just remember to update any tool permission allowlists referencing the old tool names (mcp__xcode-mcp-server__* becomes mcp__drews-xcode-mcp__*). If you chose a custom key, keep it and tool permissions are unaffected.

What It Does

This server allows AI assistants (like Claude, Cursor, or other MCP clients) to:

  • Discover and navigate your Xcode projects and source files
  • Build and run iOS, macOS, tvOS, and watchOS applications
  • Execute and monitor tests with detailed results
  • Debug build failures by retrieving errors and warnings
  • Capture console output from running applications
  • Take screenshots of Xcode windows and iOS simulators
  • Manage simulators and view their status

The AI can perform complete development workflows - from finding a project, to building it, running tests, debugging failures, and capturing results.

Requirements

  • macOS - This server only works on macOS
  • Xcode - Xcode must be installed
  • Python 3.10+ - For running the server (uvx will fetch a compatible Python automatically if your system Python is older)

Security

The server implements path-based security to control which directories are accessible:

  • With restrictions: Set XCODEMCP_ALLOWED_FOLDERS=/path1:/path2:/path3 to limit access to specific directories
  • Default: If not specified, allows access to your home directory ($HOME)

Security requirements:

  • All paths must be absolute (starting with /)
  • No .. path components allowed
  • All paths must exist and be directories

Setup

First, ensure uv is installed (required for all methods below):

which uv || brew install uv

1. Claude Code (Recommended)

claude mcp add --scope user --transport stdio -- drews-xcode-mcp `which uvx` drews-xcode-mcp

To run a specific version, use:

# Example: How to run v1.3.0b6
claude mcp add --scope user --transport stdio -- drews-xcode-mcp `which uvx` drews-xcode-mcp==1.3.0b6

That's it! Claude Code handles the rest automatically.

2. Claude Desktop

Edit your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json):

{
    "mcpServers": {
        "drews-xcode-mcp": {
            "command": "uvx",
            "args": [
                "drews-xcode-mcp"
            ]
        }
    }
}

If you'd like to allow only certain projects or folders to be accessible by drews-xcode-mcp, add the env option, with a colon-separated list of absolute folder paths, like this:

{
    "mcpServers": {
        "drews-xcode-mcp": {
            "command": "uvx",
            "args": [
                "drews-xcode-mcp"
            ],
            "env": {
                "XCODEMCP_ALLOWED_FOLDERS": "/Users/andrew/my_project:/Users/andrew/Documents/source"
            }
        }
    }
}

3. Cursor AI

In Cursor: Settings → Tools & Integrations → + New MCP Server

Or edit ~/.cursor/mcp.json directly:

{
    "mcpServers": {
        "drews-xcode-mcp": {
            "command": "uvx",
            "args": ["drews-xcode-mcp"]
        }
    }
}

Optional: Add folder restrictions with an env section (same format as Claude Desktop above).

Usage

Once configured, simply ask your AI assistant to help with Xcode tasks:

  • "Find all Xcode projects in my home directory"
  • "Build the project at /path/to/MyProject.xcodeproj"
  • "Run tests for this project and show me any failures"
  • "What are the build errors in this project?"
  • "Show me the directory structure of this project"
  • "Take a screenshot of the Xcode window"

Most tools work with paths to .xcodeproj or .xcworkspace files, or with regular directory paths for browsing and navigation.

Advanced Configuration

Command Line Arguments

When running the server directly (for development or custom setups), these options are available:

Build output control:

  • --no-build-warnings - Show only errors, exclude warnings
  • --always-include-build-warnings - Always show warnings (default)

Notifications:

  • --show-notifications - Enable macOS notifications for operations
  • --hide-notifications - Disable notifications (default)

Access control:

  • --allowed /path - Add allowed folder (can be repeated)

Example:

drews-xcode-mcp --no-build-warnings --show-notifications --allowed ~/Projects

Note: When using MCP clients (Claude, Cursor), configure these via the env section in your client's config file instead.

Development

The server is built with FastMCP and uses AppleScript to communicate with Xcode.

Local Testing

Test with MCP Inspector:

export XCODEMCP_ALLOWED_FOLDERS=~/Projects
mcp dev drews_xcode_mcp/__main__.py

This opens an inspector interface where you can test tools directly. Provide paths as quoted strings: "/Users/you/Projects/MyApp.xcodeproj"

Limitations

  • AppleScript syntax may need adjustments for specific Xcode versions
  • Some operations require the project to be open in Xcode first

Metadata

Release files for drews-xcode-mcp 1.3.27

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

Source distribution (sdist)

Source distribution for drews-xcode-mcp 1.3.27
File Size Uploaded
drews_xcode_mcp-1.3.27.tar.gz 124.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for drews-xcode-mcp 1.3.27
File Interpreter ABI Platform
drews_xcode_mcp-1.3.27-py3-none-any.whl Python 3 none any Details

Total release size: 286.4 kB

Release files / drews_xcode_mcp-1.3.27.tar.gz

Download URL drews_xcode_mcp-1.3.27.tar.gz
Size 124.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bccea7574a9e896c44b5b24fd984d05423d90534713796297f02048fe2567a1f
BLAKE2b-256 checksum
How to use checksums
f4d6568907e74af08d7a32b0a13782c8e91c1f2676115fce4ac3a73780b49312
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.8

Release files / drews_xcode_mcp-1.3.27-py3-none-any.whl

Download URL drews_xcode_mcp-1.3.27-py3-none-any.whl
Size 161.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b1d0e1faf32412bb4221a595051361d6d19120fee73020c32411b1bd18df0006
BLAKE2b-256 checksum
How to use checksums
e9e1033403af680ea1da32ec7fd946fd221ec268ae014eb2d3b92630daad8a8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.8
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