Wraps the tuist/xcodeproj library to expose Xcode project manipulation through MCP. You can create projects from scratch, add files and targets, manage build phases and settings, embed app extensions, and handle dependencies without opening Xcode. Runs in Docker with workspace mounting for Claude Desktop and Claude Code integration. Useful for automating iOS project setup, scaffolding multi-target architectures, or batch-modifying build configurations. Includes path security restrictions to sandbox operations within your workspace directory.
A Model Context Protocol (MCP) server for manipulating Xcode project files (.xcodeproj) using Swift.

xcodeproj-mcp-server is an MCP server that provides tools for programmatically manipulating Xcode project files. It leverages the tuist/xcodeproj library for reliable project file manipulation and implements the Model Context Protocol using the swift-sdk.
This server enables AI assistants and other MCP clients to:
Pull the pre-built Docker image from GitHub Container Registry:
docker pull ghcr.io/giginet/xcodeproj-mcp-server
claude mcp add xcodeproj -- docker run --pull=always --rm -i -v $PWD:/workspace ghcr.io/giginet/xcodeproj-mcp-server:latest /workspace
We need to mount the current working directory ($PWD) to /workspace inside the container. This allows the server to access your Xcode projects.
Enabling ENABLE_TOOL_SEARCH in .claude/settings.json activates dynamic MCP tool loading. This prevents unused MCP tools from consuming context.
{
"env": {
"ENABLE_TOOL_SEARCH": "1"
}
}
Add the following to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"xcodeproj": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"${workspaceFolder}:/workspace",
"ghcr.io/giginet/xcodeproj-mcp-server",
"/workspace"
]
}
}
}
The MCP server now supports restricting file operations to a specific base directory. When you provide a base path as a command-line argument:
project_path and file path parameters will be resolved relative to this base pathThis is especially useful when running the server in Docker containers or other sandboxed environments.
create_xcodeproj - Create a new Xcode project
project_name, path, organization_name, bundle_identifierlist_targets - List all targets in a project
project_pathlist_build_configurations - List all build configurations
project_pathlist_files - List all files in a specific target
project_path, target_namelist_groups - List all groups in the project with hierarchical paths, optionally filtered by target
project_path, target_name (optional)add_file - Add a file to the project
project_path, file_path, target_name, group_pathremove_file - Remove a file from the project
project_path, file_pathmove_file - Move or rename a file within the project
project_path, source_path, destination_pathadd_synchronized_folder - Add a synchronized folder reference to the project
project_path, folder_path, group_name, target_namecreate_group - Create a new group in the project navigator
project_path, group_name, parent_group_pathadd_target - Create a new target
project_path, target_name, type, platform, bundle_identifierremove_target - Remove an existing target
project_path, target_nameduplicate_target - Duplicate an existing target
project_path, source_target_name, new_target_nameadd_dependency - Add dependency between targets
project_path, target_name, dependency_nameadd_app_extension - Add an App Extension target and embed it in a host app
project_path, extension_name, extension_type, host_target_name, bundle_identifier, platform (optional), deployment_target (optional)widget, notification_service, notification_content, share, today, action, file_provider, intents, intents_ui, keyboard, photo_editing, document_provider, customremove_app_extension - Remove an App Extension target and its embedding from the host app
project_path, extension_nameget_build_settings - Get build settings for a target
project_path, target_name, configuration_nameset_build_setting - Modify build settings
project_path, target_name, setting_name, value, configuration_nameadd_framework - Add framework dependencies
project_path, target_name, framework_name, embedadd_build_phase - Add custom build phases
project_path, target_name, phase_type, name, scriptadd_swift_package - Add a Swift Package dependency to the project
project_path, package_url, requirement, target_name, product_namelist_swift_packages - List all Swift Package dependencies in the project
project_pathremove_swift_package - Remove a Swift Package dependency from the project
project_path, package_url, remove_from_targetsThis project is licensed under the MIT License.
inditextech/mcp-server-simulator-ios-idb
mobile-next/mobile-mcp
alexgladkov/claude-in-mobile
srmorete/mobile-device-mcp