XCTools MCP Server
A Model Context Protocol (MCP) server that provides structured access to Xcode development tools including xcrun, xcodebuild, and xctrace.
Installation
Method 1: Using uvx (Recommended for published package)
-
Prerequisites:
- Python 3.13+
- Xcode with Command Line Tools installed
- uvx:
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Run directly with uvx (when published to PyPI):
uvx xctools-mcp-server
Method 2: Local Development Installation
-
Prerequisites:
- Python 3.13+
- Xcode with Command Line Tools installed
-
Clone and install:
git clone https://github.com/nzrsky/xctools-mcp-server cd xctools-mcp-server pip install .
-
Run the server:
xctools-mcp-server
Method 3: Build from Source
- Build the wheel:
python -m build --wheel pip install dist/xctools_mcp_server-0.1.0-py3-none-any.whl
Configuration
For Claude Desktop
Add to your ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"xctools": {
"command": "xctools-mcp-server",
"args": [],
"env": {}
}
}
}
Or if using uvx (when published):
{
"mcpServers": {
"xctools": {
"command": "uvx",
"args": ["xctools-mcp-server"],
"env": {}
}
}
}
For VS Code with MCP Extension
- Install the MCP Extension from the VS Code marketplace
- Add server configuration to your VS Code settings (
settings.json):
{
"mcp.servers": {
"xctools": {
"command": "xctools-mcp-server",
"args": [],
"env": {}
}
}
}
Or if using uvx (when published):
{
"mcp.servers": {
"xctools": {
"command": "uvx",
"args": ["xctools-mcp-server"],
"env": {}
}
}
}
- Restart VS Code to load the MCP server
- Use the Command Palette (
Cmd+Shift+P) and search for "MCP" commands to interact with the Xcode development tools
For Other MCP Clients
The server runs on stdio, so you can invoke it directly:
With installed package:
xctools-mcp-server
With uvx (when published):
uvx xctools-mcp-server
Features
- Complete Xcode toolchain access through
xcrun - Project building and testing with
xcodebuild - Performance analysis using
xctrace(Instruments) - SDK and destination management
- Comprehensive error handling with detailed messages
- Cross-platform compatibility (macOS with Xcode installed)
Available Tools
XCRUN Tools
xcrun_find_tool- Find the path to development tools (clang, swift, etc.)xcrun_show_sdk_path- Show the path to SDKsxcrun_show_sdk_version- Show SDK versionsxcrun_run_tool- Run any development tool via xcrun
XCODEBUILD Tools
xcodebuild_build- Build Xcode projects or workspacesxcodebuild_test- Run tests for projects/workspacesxcodebuild_archive- Archive projects for distributionxcodebuild_list- List targets, schemes, and configurationsxcodebuild_show_sdks- List all available SDKsxcodebuild_show_destinations- Show valid build destinations
XCTRACE Tools (Instruments)
xctrace_record- Record new Instruments tracesxctrace_import- Import supported files into trace formatxctrace_export- Export data from trace filesxctrace_list- List available devices, templates, or instrumentsxctrace_symbolicate- Symbolicate traces with debug symbols
Usage Examples
Finding Development Tools
# Find the path to a specific tool
"Find the path to clang compiler"
# Show SDK path for iOS
"Show the path to the iOS SDK"
# Get SDK version information
"Show the version of the iOS SDK"
Building Projects
# Build an Xcode project
"Build the project MyApp.xcodeproj for iOS simulator"
# Run tests for a workspace
"Run tests for MyApp.xcworkspace on iPhone 15 Pro simulator"
# Archive for distribution
"Archive MyApp.xcworkspace for release"
# List project information
"List all schemes and targets in MyApp.xcodeproj"
Performance Analysis with Instruments
# Record a trace for Time Profiler
"Record a Time Profiler trace for MyApp on iPhone 15 Pro for 30 seconds"
# List available instruments
"List all available Instruments templates"
# Export trace data
"Export data from trace file to XML format"
# Import a file for analysis
"Import a .dtps file into Instruments trace format"
SDK and Destination Management
# List all available SDKs
"Show all available SDKs for building"
# Show build destinations
"List all available destinations for iOS builds"
# Run a tool via xcrun
"Run swift command with version flag via xcrun"
Error Handling
The server includes comprehensive error handling:
- Command failures: Returns detailed error messages from xcrun, xcodebuild, and xctrace
- Missing Xcode: Detects when Xcode Command Line Tools are not available
- Invalid parameters: Validates tool arguments and provides helpful error messages
- Tool availability: Checks for required tools before execution
Troubleshooting
Common Issues
-
"xcrun: error: unable to find utility"
- Ensure Xcode Command Line Tools are installed:
xcode-select --install - Verify Xcode is properly configured:
xcode-select -p
- Ensure Xcode Command Line Tools are installed:
-
"No developer directory found"
- Install Xcode from the Mac App Store
- Accept Xcode license:
sudo xcodebuild -license accept
-
Permission errors
- Ensure the user has necessary permissions to access Xcode tools
- Try running with proper macOS development permissions
-
Tool not found errors
- Verify the specific tool is available in your Xcode installation
- Some tools may require specific Xcode versions or additional components
Requirements
- macOS: Required (Xcode development tools are macOS-only)
- Xcode: Xcode Command Line Tools or full Xcode installation
- Python: 3.13 or higher
- MCP Client: Claude Desktop, VS Code with MCP extension, or any MCP-compatible client
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
- Invalid parameters: Validates input parameters before execution
- File operations: Handles temporary files for push notifications safely
Security Considerations
- The server only exposes read and simulator management operations
- No access to host file system beyond specified app paths
- Push notification payloads are validated for structure
- Privacy permission changes are explicit and logged
Development Notes
- Built specifically for iOS development workflows
- Optimized for common simulator management tasks
- Structured output parsing for JSON responses
- Support for both individual and batch operations
- Compatible with Xcode 15+ simulator features
Metadata
Release files for xctools-mcp-server 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xctools_mcp_server-0.1.0.tar.gz | 7.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xctools_mcp_server-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.2 kB
Release files / xctools_mcp_server-0.1.0.tar.gz
| Download URL | xctools_mcp_server-0.1.0.tar.gz |
|---|---|
| Size | 7.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a05864ef08e7a8ad3d8789aadc8273bed049361044ed1a14c11f85cc77fd521e
|
|
BLAKE2b-256 checksum How to use checksums |
7385f742d13b376a55f73f1dd3bcc44eecd763fb0a668f819074729f126c9a3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.5.4
|
Release files / xctools_mcp_server-0.1.0-py3-none-any.whl
| Download URL | xctools_mcp_server-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9ace6df92fc2b6f44da36a765e06f92f24fc0572cf2743b7962632cfe2f8cf4b
|
|
BLAKE2b-256 checksum How to use checksums |
2d875de9d2fd7d73615f1c931da7cb503027f614023b05fb98beb0b473baeea3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.5.4
|