Xcode MCP Tool Reference
Complete reference for all 20 tools exposed by Xcode's MCP server (xcrun mcpbridge).
Source: Xcode 26.3 tools/list response. Validated against Keith Smiley's gist (2025-07-15).
Critical: tabIdentifier is required by 18 of 20 tools. Always call XcodeListWindows first.
Discovery
XcodeListWindows
Returns open Xcode windows. Call this first to get tabIdentifier values.
- Parameters: None
- Returns:
{message: string}— description of open windows - Notes: Only tool that does not require
tabIdentifier.
File Operations
XcodeRead
Read file contents (cat -n format, 600 lines default).
- Parameters:
- tabIdentifier (string, required) - filePath (string, required) — project-relative or absolute - limit (integer, optional) — max lines to return - offset (integer, optional) — starting line number
- Returns:
{content, filePath, fileSize, linesRead, startLine, totalLines}
XcodeWrite
Create or overwrite a file. Automatically adds new files to the project structure.
- Parameters:
- tabIdentifier (string, required) - filePath (string, required) - content (string, required)
- Returns:
{success, filePath, absolutePath, bytesWritten, linesWritten, wasExistingFile, message}
XcodeUpdate
Edit an existing file with text replacement.
- Parameters:
- tabIdentifier (string, required) - filePath (string, required) - oldString (string, required) — text to find - newString (string, required) — replacement text - replaceAll (boolean, optional, default false) — replace all occurrences
- Returns:
{filePath, editsApplied, success, originalContentLength, modifiedContentLength, message} - Notes: Single replacement by default. Each
oldStringmust be unique unlessreplaceAllis true. Prefer over XcodeWrite for editing existing files.
XcodeGlob
Find files matching a wildcard pattern.
- Parameters:
- tabIdentifier (string, required) - pattern (string, optional, default **/*) — glob pattern - path (string, optional) — directory to search within
- Returns:
{matches[], pattern, searchPath, truncated, totalFound, message}
XcodeGrep
Search file contents with regex.
- Parameters:
- tabIdentifier (string, required) - pattern (string, required) — regex pattern - glob (string, optional) — file pattern filter - path (string, optional) — directory scope - type (string, optional) — file type filter - ignoreCase (boolean, optional) - multiline (boolean, optional) - outputMode (enum, optional) — content, filesWithMatches, count - linesContext (integer, optional) — context lines - linesBefore (integer, optional) - linesAfter (integer, optional) - headLimit (integer, optional) — max results - showLineNumbers (boolean, optional)
- Returns:
{results[], pattern, searchPath, matchCount, truncated, message} - Notes: Mirrors ripgrep's interface. Use
outputModeto control result format.
XcodeLS
List directory contents.
- Parameters:
- tabIdentifier (string, required) - path (string, required) - recursive (boolean, optional, default true) - ignore (array of strings, optional) — patterns to skip
- Returns:
{items[], path}
XcodeMakeDir
Create a directory in the project.
- Parameters:
- tabIdentifier (string, required) - directoryPath (string, required)
- Returns:
{success, message, createdPath}
XcodeRM
Remove files or directories from project. Uses Trash by default.
- Parameters:
- tabIdentifier (string, required) - path (string, required) - deleteFiles (boolean, optional, default true) — move to Trash - recursive (boolean, optional)
- Returns:
{removedPath, success, message}
XcodeMV
Move or copy files.
- Parameters:
- tabIdentifier (string, required) - sourcePath (string, required) - destinationPath (string, required) - operation (enum, optional) — move or copy - overwriteExisting (boolean, optional)
- Returns:
{success, operation, message, sourceOriginalPath, destinationFinalPath} - Notes: Can copy, not just move. May break imports — confirm with user.
Build & Test
BuildProject
Build the project and wait for completion.
- Parameters:
- tabIdentifier (string, required)
- Returns:
{buildResult, elapsedTime, errors[]} - Notes: Each error has
classification,filePath,lineNumber,message.
GetBuildLog
Retrieve build log with optional filtering.
- Parameters:
- tabIdentifier (string, required) - severity (enum, optional) — remark, warning, error - pattern (string, optional) — regex filter - glob (string, optional) — file pattern filter
- Returns:
{buildIsRunning, buildLogEntries[], buildResult, fullLogPath, truncated, totalFound} - Notes: Returns structured entries, not raw text. Each entry has
buildTaskandemittedIssues[].
RunAllTests
Run the full test suite from the active scheme's test plan.
- Parameters:
- tabIdentifier (string, required)
- Returns:
{summary, counts, results[], schemeName, activeTestPlanName} - Notes:
countshastotal,passed,failed,skipped,expectedFailures,notRun. Each result hastargetName,identifier,displayName,state.
RunSomeTests
Run specific tests by identifier.
- Parameters:
- tabIdentifier (string, required) - tests (array, required) — each element: {targetName: string, testIdentifier: string}
- Returns: Same shape as RunAllTests
- Notes: Use
GetTestListto discover valid test identifiers.
GetTestList
List available tests from the active test plan.
- Parameters:
- tabIdentifier (string, required)
- Returns:
{tests[], schemeName, activeTestPlanName} - Notes: Each test has
targetName,identifier,displayName,isEnabled,filePath,lineNumber,tags[].
Diagnostics
XcodeListNavigatorIssues
Get issues from Xcode's Issue Navigator.
- Parameters:
- tabIdentifier (string, required) - severity (enum, optional) — remark, warning, error - pattern (string, optional) — regex filter - glob (string, optional) — file pattern filter
- Returns:
{issues[], truncated, totalFound, message} - Notes: Each issue has
message,severity,path,line,category,vitality(fresh/stale). Structured and deduplicated.
XcodeRefreshCodeIssuesInFile
Refresh diagnostics for a specific file.
- Parameters:
- tabIdentifier (string, required) - filePath (string, required)
- Returns:
{filePath, diagnosticsCount, content, success} - Notes: Triggers Xcode to re-analyze the file.
Execution & Rendering
ExecuteSnippet
Build and run a code snippet in the context of a source file.
- Parameters:
- tabIdentifier (string, required) - codeSnippet (string, required) — code to execute - sourceFilePath (string, required) — Swift file whose context the snippet runs in (has access to its fileprivate declarations) - timeout (integer, optional, default 120) — seconds
- Returns:
{executionResults}— console output from print statements - Notes: Not a generic REPL. Runs in the context of a specific file. No
languageparameter — Swift only.
RenderPreview
Render a SwiftUI preview snapshot.
- Parameters:
- tabIdentifier (string, required) - sourceFilePath (string, required) — Swift file with #Preview - previewDefinitionIndexInFile (integer, optional, default 0) — zero-based index of which #Preview to render - timeout (integer, optional, default 120)
- Returns:
{previewSnapshotPath}— path to rendered image - Notes: Index-based, not name-based. First
#Previewin the file is index 0.
Search
DocumentationSearch
Search Apple Developer Documentation semantically.
- Parameters:
- query (string, required) - frameworks (array of strings, optional) — scope to specific frameworks
- Returns:
{documents[]}— each withtitle,uri,contents,score - Notes: Local semantic search (MLX-accelerated), not web search.
Quick Reference
| Category | Tools |
|---|---|
| Discovery | XcodeListWindows |
| File Read | XcodeRead, XcodeGlob, XcodeGrep, XcodeLS |
| File Write | XcodeWrite, XcodeUpdate, XcodeMakeDir |
| File Destructive | XcodeRM, XcodeMV |
| Build | BuildProject, GetBuildLog |
| Test | RunAllTests, RunSomeTests, GetTestList |
| Diagnostics | XcodeListNavigatorIssues, XcodeRefreshCodeIssuesInFile |
| Execution | ExecuteSnippet |
| Preview | RenderPreview |
| Search | DocumentationSearch |
Common Parameter Patterns
tabIdentifier— Required by 18/20 tools. Always callXcodeListWindowsfirst.filePath— Used by XcodeRead, XcodeWrite, XcodeUpdate, XcodeRefreshCodeIssuesInFile. Project-relative or absolute.path— Used by XcodeLS, XcodeRM, XcodeGlob. Directory path.directoryPath— Used by XcodeMakeDir.sourceFilePath— Used by ExecuteSnippet, RenderPreview. Must be a Swift source file.
Resources
Skills: axiom-xcode-mcp-setup, axiom-xcode-mcp-tools