Public leaderboard

Public assessment

r-huijts/xcode-mcp-server (xcode-mcp-server)

xcode-mcp-server · v1.0.0 · scanned

What changed in the harness

Selection accuracy 98→98, token cost up 11%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

21.1 / 30

21.1 out of 30
03Economics

19.6 / 20

19.6 out of 20
04Discoverability

9.6 / 20

9.6 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

18 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
set_projects_base_dir
name_restates_behavior no_return_description
Configures the workspace by setting the absolute base directory that will be searched for Xcode projects in subsequent tool calls; returns confirmation of the directory that was set.
set_project_path
name_restates_behavior no_return_description
Sets which Xcode project (.xcodeproj) subsequent tool calls will operate on; returns confirmation of the active project path once set.
get_active_project
no_return_description
Returns metadata about the currently active Xcode project, such as its path, name, and available schemes/configuration details.
read_file
name_restates_behavior no_return_description
Opens the specified file within the active Xcode project and returns its full text contents.
write_file
no_return_description
Writes the given content to the specified file in the active Xcode project, optionally creating the file if it doesn't exist (via createIfMissing), and returns confirmation that the write succeeded.
list_project_files
name_restates_behavior no_return_description
Returns the list of file paths contained in the specified Xcode project, optionally filtered to files matching the given extension.
analyze_file
name_restates_behavior no_return_description
Runs Xcode's static analyzer against the specified source file and returns the list of issues or warnings it detects.
build_project
name_restates_behavior no_return_description
Runs an Xcode build for the given scheme and configuration, returning the build result (success or failure) along with any compiler or linker output.
run_tests
no_return_description
Runs the test suite for the active Xcode project, optionally scoped to a named test plan, and returns the test results, including pass/fail counts and failure details.
run_xcrun
no_return_description
Executes the named Xcode command-line tool via 'xcrun', passing any optional argument string, and returns the tool's stdout/stderr output.
list_simulators
name_restates_behavior no_return_description
Returns the full list of available iOS simulators and their details (name, UDID, state, runtime) by invoking 'xcrun simctl list --json'.
boot_simulator
name_restates_behavior no_return_description
Boots the iOS simulator identified by the given UDID and returns confirmation once the simulator has started.
shutdown_simulator
no_return_description
Shuts down the iOS simulator identified by the given UDID and returns confirmation once it has stopped.
compile_asset_catalog
name_restates_behavior no_return_description
Compiles the asset catalog at the given path into the specified output directory using 'actool', and returns the compilation result and any tool output.
run_lldb
params_unexplained no_return_description
Launches the LLDB debugger, optionally passing a raw command-line argument string (e.g. target executable, breakpoints, or LLDB commands) via lldbArgs to configure the session, and returns the debugger's output.
trace_app
no_return_description
Runs 'xctrace' to capture a performance trace of the application at the given path for an optional duration in seconds, and returns the resulting trace file's location or output.
swift_package_update
name_restates_behavior no_return_description
Runs 'swift package update' to resolve and update Swift Package Manager dependencies to their latest allowed versions, and returns the command's output.
list_directory
name_restates_behavior no_return_description
Returns the names of files and subdirectories contained in the specified directory path.

Selection evidence

Confusable tool pairs.

6 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
boot_simulator shutdown_simulator medium Both take only a udid and act on simulator power state; a vague instruction like 'toggle the simulator' or misremembering which verb corresponds to starting vs stopping could lead the agent to pick the wrong one.
read_file write_file low Clearly opposite operations (read vs write) with distinct required params (content for write); genuine confusion is unlikely except in trivial slip-ups, not selection ambiguity.
set_projects_base_dir set_project_path medium Both 'set' project-related paths; a task like 'set the project directory to X' is ambiguous between setting the base dir for all projects vs setting the active .xcodeproj path, especially if the agent doesn't parse the distinction between a folder and a .xcodeproj path.
read_file analyze_file low A request like 'check this file for issues' could momentarily be confused with 'read the file', but analyze_file's static-analyzer framing is fairly distinct from a generic read.
list_project_files analyze_file low Both operate on project files but serve very different purposes (listing vs static analysis); unlikely to be genuinely confused.
set_project_path get_active_project low A task like 'what's the active project' vs 'set the active project' are distinguishable by verb intent; low but nonzero risk if phrasing is ambiguous like 'use this project'.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard