create_xcodeprojLABSCO SUMMARY
The project file becomes editable by an agent, with a directory boundary it cannot cross.
What makes this safe to hand to an agent is the base path — every project and file path resolves relative to it and anything outside is rejected, which matters when the tools can create, move and delete targets. The build-phase and app-extension tools save the most clicking: both are multi-step in the Xcode interface and a single call here. Because it runs in a container, what it can reach is exactly what you mounted.
What it is
A Swift server that edits Xcode project files directly. It can create a project from nothing, then manage the targets, files, groups, build settings, frameworks and Swift Package dependencies inside it.
What you get
- A new project created with organisation name and bundle identifier set
- The project read back: targets, build configurations, the files in a target, and the group hierarchy
- Files added to a target, removed, moved or renamed, and groups created in the navigator
- A folder reference that stays in sync with the file system, for asset and resource directories
- Targets created, removed, duplicated, and made to depend on each other
- App extensions created and embedded in a host app — widget, share, notification, keyboard, intents and more — and removed again
- Build settings read and written per configuration, frameworks linked or embedded, and custom build phases added for formatters and linters
- Swift Package dependencies added, listed and removed
- A base directory given at startup that every path resolves against — anything outside it is refused
Requirements
macOS and a container runtime, since the server ships as a linux/arm64 image rather than a binary: Apple's own container tool on Apple silicon running macOS 26 or later, or Docker on anything earlier. Either way the project directory is mounted at /workspace and passed as the base path, which is also the boundary the server refuses to write outside. MIT.
Setup effort
One command — docker pull ghcr.io/giginet/xcodeproj-mcp-server
USE CASES
Adding a file you just created to the build
Put the new source file into the right target so it compiles, instead of switching to Xcode to drag it in.
Scaffolding a widget
Create the extension target and embed it in the host app in one call, with the configuration Xcode would have set through its wizard.
Wiring a linter into the build
Add the run-script phase for SwiftLint or a formatter to the target that should run it.
Adding a dependency
Add the Swift Package and check what the project already depends on before you do.
Auditing a project you inherited
Read the targets, the group hierarchy and the build settings per configuration, which is faster than clicking through the project editor.
23 tools
Listed in project docs. Your client may show a different list.
list_targetslist_build_configurationslist_fileslist_groupsadd_fileremove_filemove_fileadd_synchronized_foldercreate_groupadd_targetremove_targetduplicate_targetadd_dependencyadd_app_extensionremove_app_extensionget_build_settingsset_build_settingadd_frameworkadd_build_phaseadd_swift_packagelist_swift_packagesremove_swift_packageBEFORE YOU INSTALL
What to know first
Tools you get
23 tools named in the project's documentation.
Requires
docker on PATH
Where it runs
All 5 documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
docker pull ghcr.io/giginet/xcodeproj-mcp-serverMCP Clients
Claude Code — Apple container
claude mcp add xcodeproj -- container run --rm -i -v '${CLAUDE_PROJECT_DIR:-.}:/workspace' ghcr.io/giginet/xcodeproj-mcp-server:latest /workspaceClaude Desktop — Apple container
{
"mcpServers": {
"xcodeproj": {
"command": "/usr/local/bin/container",
"args": [
"run",
"--rm",
"-i",
"-v",
"<YOUR_WORKSPACE_FOLDER>:/workspace",
"ghcr.io/giginet/xcodeproj-mcp-server",
"/workspace"
]
}
}
}Claude Desktop — Docker
{
"mcpServers": {
"xcodeproj": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"<YOUR_WORKSPACE_FOLDER>:/workspace",
"ghcr.io/giginet/xcodeproj-mcp-server",
"/workspace"
]
}
}
}Codex
codex mcp add xcodeproj -- /usr/local/bin/container run --rm -i -v .:/workspace ghcr.io/giginet/xcodeproj-mcp-server:latest /workspaceClaude Code — Docker
claude mcp add xcodeproj -- docker run --pull=always --rm -i -v '${CLAUDE_PROJECT_DIR:-.}:/workspace' ghcr.io/giginet/xcodeproj-mcp-server:latest /workspace