XcodeBLOCK
MCP Server implementation for Xcode integration
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://mseep.ai/app/r-huijts-xcode-mcp-server)
An MCP (Model Context Protocol) server providing comprehensive Xcode integration for AI assistants. This server enables AI agents to interact with Xcode projects, manage iOS simulators, and perform various Xcode-related tasks with enhanced error handling and support for multiple project types.
Features
Project Management
- Set active projects and get detailed project information
- Create new Xcode projects from templates (iOS, macOS, watchOS, tvOS)
- Add files to Xcode projects with target and group specification
- Parse workspace documents to find associated projects
- List available schemes in projects and workspaces
File Operations
- Read/write files with support for different encodings
- Handle binary files with base64 encoding/decoding
- Search for text content within files using patterns and regex
- Check file existence and get file metadata
- Create directory structures automatically
Build & Testing
- Build projects with customizable options
- Run tests with detailed failure reporting
- Analyze code for potential issues
- Clean build directories
- Archive projects for distribution
CocoaPods Integration
- Initialize CocoaPods in projects
- Install and update pods
- Add and remove pod dependencies
- Execute arbitrary pod commands
Swift Package Manager
- Initialize new Swift packages
- Add and remove package dependencies with various version requirements
- Update packages and resolve dependencies
- Generate documentation for Swift packages using DocC
- Run tests and build Swift packages
iOS Simulator Tools
- List available simulators with detailed information
- Boot and shut down simulators
- Install and launch apps on simulators
- Take screenshots and record videos
- Manage simulator settings and state
Xcode Utilities
- Execute Xcode commands via xcrun
- Comp
6c022dd495b1OBSERVED · 2026-10-02Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add xcode-mcp-server -- npx -y [email protected]
{
"mcpServers": {
"xcode-mcp-server": {
"command": "npx",
"args": [
"-y",
"[email protected]"
]
}
}
}Exposed tools (76)
51 read · 21 write · 4 destructive. Blast radius: 4 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
add_file_to_project | write | Adds a file to the active Xcode project. |
add_project_to_workspace | write | Adds an existing project to the active workspace. |
add_swift_package | write | Adds a Swift Package dependency to the active project. Note: Your project must already be set up for Swift Package Manager (must have a Package.swift file). If you haven |
analyze_file | read | Analyzes a source file for potential issues using Xcode |
archive_project | read | Archives the active Xcode project for distribution. |
boot_simulator | read | Boot an iOS simulator by UDID or name |
build_project | read | Builds the active Xcode project using the specified configuration and scheme. |
build_spm_package | read | Builds a Swift Package Manager package directly using |
build_swift_package | read | Builds a Swift Package using Swift Package Manager. |
change_directory | read | Changes the active directory for relative path operations. |
check_cocoapods | read | Checks if the active project uses CocoaPods and returns setup information. |
check_file_exists | read | Checks if a file or directory exists at the specified path. |
clean_project | read | Cleans the build directory for the active Xcode project. |
clean_swift_package | read | Cleans the build artifacts of a Swift Package. |
compile_asset_catalog | read | Compiles an asset catalog (.xcassets) using actool |
copy_file | read | Copies a file or directory to a new location within allowed directories. |
create_directory | write | Creates a new directory within allowed directories. |
create_workspace | write | Creates a new Xcode workspace and optionally adds existing projects to it. |
create_xcode_project | write | Creates a new Xcode project using a template. |
delete_file | destructive | Deletes a file or directory within allowed directories. |
detect_active_project | read | Attempts to automatically detect the active Xcode project. |
dump_swift_package | read | Dumps the Package.swift manifest as JSON. |
edit_package_swift | write | Directly edit the Package.swift file of the active SPM project. This is useful for making changes that aren |
export_archive | read | Export an Xcode archive for distribution (App Store, Ad Hoc, Enterprise, Development) |
find_files | read | Searches for files matching a pattern in a directory. |
find_projects | read | Finds Xcode projects in the specified directory. |
generate_icon_set | write | Generate an app icon set from a source image |
generate_swift_docs | read | Generates documentation for a Swift Package using DocC. |
get_active_project | read | Retrieves detailed information about the currently active Xcode project. |
get_current_directory | read | Returns the current active directory. |
get_file_info | read | Gets detailed information about a file or directory. |
get_package_info | read | Gets detailed information about a Swift Package Manager package. |
get_project_configuration | read | Retrieves configuration details for the active project, including schemes and targets. |
get_xcode_info | read | Get information about Xcode installations on the system |
init_swift_package | read | Initializes a new Swift Package Manager project in the current directory. Use this tool first if your project doesn |
install_app | write | Install an app on a simulator |
launch_app | read | Launch an installed app on a simulator |
list_available_destinations | read | Lists available build destinations for the active Xcode project or workspace. |
list_available_schemes | read | Lists all available schemes in the active Xcode project or workspace. |
list_booted_simulators | read | List all currently booted iOS simulators |
list_directory | read | Lists the contents of a directory, showing both files and subdirectories. |
list_installed_apps | read | List all installed applications on a simulator |
list_project_files | read | Lists all files within an Xcode project. |
list_simulators | read | List all available iOS simulators with filtering options |
move_file | write | Moves a file or directory to a new location within allowed directories. |
open_url | read | Open a URL in a simulator |
pod_deintegrate | read | Deintegrate CocoaPods from the active project, removing all traces of CocoaPods. |
pod_init | read | Generate a Podfile for the current project directory. |
pod_install | write | Runs |
pod_outdated | read | Shows outdated pods in the current project and their available updates. |
pod_repo_update | write | Updates the local clone of the CocoaPods spec repositories. |
pod_update | write | Runs |
pop_directory | read | Pops a directory from the stack and changes to it. |
push_directory | write | Pushes the current directory onto a stack and changes to a new directory. |
read_file | read | Reads the contents of a file within the active project or allowed directories. |
remove_swift_package | destructive | Removes a Swift Package dependency from the active project. |
reset_simulator | destructive | Reset a simulator by erasing all content and settings |
resolve_path | read | Resolves a path, taking into account the active directory and current project. |
run_lldb | write | Launches the LLDB debugger with optional arguments |
run_tests | write | Executes tests for the active Xcode project. |
run_xcrun | write | Executes a specified Xcode tool via xcrun |
search_in_files | read | Searches for text content within files in a directory. |
set_project_path | write | Sets the active Xcode project by specifying the path to its .xcodeproj directory. |
set_projects_base_dir | write | Sets the base directory where your Xcode projects are stored. |
show_swift_dependencies | read | Shows the resolved dependencies of a Swift Package. |
shutdown_simulator | read | Shutdown a simulator by UDID, or shutdown all running simulators |
swift_package_command | read | Executes Swift Package Manager commands in the active project directory. |
switch_xcode | read | Switch the active Xcode version |
take_screenshot | read | Take a screenshot of a simulator |
terminate_app | destructive | Terminate a running app on a simulator |
test_spm_package | read | Runs tests for a Swift Package Manager package directly using |
test_swift_package | read | Tests a Swift Package using Swift Package Manager. |
trace_app | read | Captures a performance trace of an application using xctrace |
update_swift_package | write | Updates the dependencies of your Swift project using Swift Package Manager. |
validate_app | read | Validate an app for App Store submission using altool |
write_file | write | Writes or updates the content of a file within the active project or allowed directories. |
Trust audit
BLOCKgrade D · trust 61/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | WARN |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (8 observation(s))
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (13)
echo -e " ${YELLOW}sudo gem install cocoapods${NC}"sudo gem install cocoapods || { echo -e "${RED}Failed to install CocoaPods.${NC}"; exit 1; }echo -e " ${YELLOW}sudo gem pristine ffi --version 1.15.5${NC}"sudo gem pristine ffi --version 1.15.5 || { echo -e "${YELLOW}Failed to fix ffi gem. You may need to run the command manually.${NC}"; }` sudo gem install cocoapods\n\n` +
system use found in code, not declared in the description
delete_file, remove_swift_package, reset_simulator, terminate_app
import { XcodeServer } from "../../server.js";import { ProjectNotFoundError, XcodeServerError, CommandExecutionError, PathAccessError } from "../../utils/errors.js";import { getProjectInfo, getWorkspaceInfo } from "../../utils/project.js";import { runExecFile } from "../../utils/execFile.js";import { XcodeServer } from "../../server.js";@modelcontextprotocol/sdk, @types/glob, glob, zod, dotenv, @types/node, typescript
Gates applied: no_behavioural_pass.
6c022dd495b1full audit observations/trust-audit/mcp-server/r-huijts__xcode-1.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-02 | 6c022dd495b1 | BLOCK | D | 61 | first audit |
Questions
What is the Xcode MCP server?
MCP Server implementation for Xcode integration
What tools does Xcode expose?
76 in total: 51 read-only, 21 that write, and 4 that can delete or overwrite (delete_file, remove_swift_package, reset_simulator, terminate_app). Every one is listed on this page with its risk.
Is Xcode safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (61/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 4 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Xcode need?
No credential environment variables were found in its source, so it appears to need none.
How does Xcode run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as xcode-mcp-server at 1.0.3.
How current is this page?
The grade is for one exact copy of the source (6c022dd495b1), read on 2026-10-02. The repository is watched and re-audited when it changes.