An MCP (Model Context Protocol) server that provides tools for interacting with Xcode projects programmatically.
Clone this repository:
git clone https://github.com/chacebot/mcp-xcode-server.git
cd mcp-xcode-server
npm installOr install from a local directory:
cd /path/to/mcp-xcode-server
npm installThis server provides the following tools for Xcode project management:
- xcode_read_project - Read and parse Xcode project files
- xcode_list_schemes - List all build schemes in a project
- xcode_list_targets - List all targets in a project
- xcode_add_test_target - Add a test target to a project
- xcode_configure_test_target - Configure a test target for a project
- xcode_add_file_to_target - Add files to project targets
- xcode_remove_file_from_target - Remove files from project targets
- xcode_list_files_in_target - List all files in a target
- xcode_build - Build Xcode projects
- xcode_test - Run tests in Xcode projects
- xcode_get_build_settings - Get build settings
- xcode_get_build_errors - Get and parse build errors
- xcode_clean - Clean build artifacts
- xcode_validate_project - Validate project structure and check for issues
-
Install dependencies:
npm install
-
Configure your MCP client (Claude Desktop, Cursor, etc.):
{ "mcpServers": { "xcode": { "command": "node", "args": ["/absolute/path/to/mcp-xcode-server/src/index.js"], "env": {} } } } -
Restart your MCP client to load the server
-
Start using Xcode tools through your AI assistant!
See QUICKSTART.md for a 5-minute setup guide, or SETUP.md for detailed instructions.
Configure this server in your MCP client configuration. For example, in Claude Desktop or Cursor:
{
"mcpServers": {
"xcode": {
"command": "node",
"args": ["/path/to/mcp-xcode-server/src/index.js"],
"env": {}
}
}
}You can test the server directly:
npm startThe server communicates via stdio using the MCP protocol.
- Node.js 18+
- Xcode command-line tools installed
- Access to Xcode projects
Read and parse an Xcode project file to extract its structure.
Parameters:
projectPath(required): Path to the .xcodeproj file
Example:
{
"name": "xcode_read_project",
"arguments": {
"projectPath": "/path/to/Project.xcodeproj"
}
}List all build schemes available in the project.
Parameters:
projectPath(required): Path to the .xcodeproj file
List all targets in the project.
Parameters:
projectPath(required): Path to the .xcodeproj file
Add a new test target to the project. Note: This currently provides instructions rather than directly modifying the pbxproj file, as that requires careful parsing and manipulation.
Parameters:
projectPath(required): Path to the .xcodeproj filetargetName(optional): Name for the test target (defaults to ProjectNameTests)
Add a file to a specific target in the project.
Parameters:
projectPath(required): Path to the .xcodeproj filefilePath(required): Relative path to the file from project roottargetName(required): Name of the target
Build the Xcode project using xcodebuild.
Parameters:
projectPath(required): Path to the .xcodeproj filescheme(optional): Build scheme nameconfiguration(optional): Debug or Release (default: Debug)
Run tests in the Xcode project.
Parameters:
projectPath(required): Path to the .xcodeproj filescheme(optional): Test scheme name
Get build settings for the project or a specific scheme.
Parameters:
projectPath(required): Path to the .xcodeproj filescheme(optional): Scheme nameconfiguration(optional): Debug or Release (default: Debug)
Clean build artifacts from the project.
Parameters:
projectPath(required): Path to the .xcodeproj filescheme(optional): Build scheme name
Remove a file from an Xcode project target.
Parameters:
projectPath(required): Path to the .xcodeproj filefilePath(required): Relative path to the file from project roottargetName(required): Name of the target
Get build errors from the last build attempt. Parses xcodebuild output to extract error messages.
Parameters:
projectPath(required): Path to the .xcodeproj filescheme(optional): Build scheme name
List all files in a specific target.
Parameters:
projectPath(required): Path to the .xcodeproj filetargetName(required): Name of the target
Validate Xcode project structure and check for common issues like missing targets, schemes, or configuration problems.
Parameters:
projectPath(required): Path to the .xcodeproj file
- The pbxproj parser is simplified and may not handle all edge cases
- Adding targets/files requires careful manipulation of the pbxproj format
- Some operations may require Xcode to be installed and properly configured
- Full pbxproj parser using a proper library (e.g.,
xcodenpm package) - Better error handling and validation
- Support for Xcode workspaces (.xcworkspace)
- Support for Swift Package Manager integration
- Support for modifying build settings
- Support for managing code signing
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin feature/my-feature - Submit a pull request
MIT - see LICENSE file for details