githubinferredactive
xcode-tools-docs
provenance:github:artemnovichkov/xcode-tools-docs
Missing Xcode Tools Documentation
README
# Xcode Tools Documentation
A comprehensive reference for the Xcode MCP Server aka Xcode Tools. These tools enable AI assistants to interact with Xcode workspaces — managing files, building projects, running tests, rendering previews, and more.
<p align="center">
<img src=".github/screenshot.png" width="60%"/>
</p>
## Apple Documentation
- [Setting up coding intelligence](https://developer.apple.com/documentation/xcode/setting-up-coding-intelligence)
- [Writing code with intelligence in Xcode](https://developer.apple.com/documentation/xcode/writing-code-with-intelligence-in-xcode)
- [Giving agentic coding tools access to Xcode](https://developer.apple.com/documentation/xcode/giving-agentic-coding-tools-access-to-xcode)
## Prerequisites
- Xcode 26.3+ installed and running with an open workspace
- MCP server configured with Xcode integration
> **Note:** Most tools require a `tabIdentifier` parameter that identifies which Xcode workspace tab to operate on.
## Installation
Add the Xcode MCP server to your coding tool via `xcrun mcpbridge`:
**Claude Code:**
```bash
claude mcp add --transport stdio xcode -- xcrun mcpbridge
```
**Codex:**
```bash
codex mcp add xcode -- xcrun mcpbridge
```
Verify with `claude mcp list` or `codex mcp list`.
## Schema
[tools.json](tools.json) contains the full MCP tool definitions (name, title, description, input/output schemas) generated directly from `xcrun mcpbridge`.
## Table of Contents
- **[Workspace](#workspace)**
- [XcodeListWindows](#xcodelistwindows)
- **[File Operations](#file-operations)**
- [XcodeLS](#xcodels)
- [XcodeGlob](#xcodeglob)
- [XcodeGrep](#xcodegrep)
- [XcodeRead](#xcoderead)
- [XcodeWrite](#xcodewrite)
- [XcodeUpdate](#xcodeupdate)
- [XcodeMakeDir](#xcodemakedir)
- [XcodeMV](#xcodemv)
- [XcodeRM](#xcoderm)
- **[Build & Run](#build--run)**
- [BuildProject](#buildproject)
- [GetBuildLog](#getbuildlog)
- [ExecuteSnippet](#executesnippet)
- **[Testing](#testing)**
- [GetTestList](#gettestlist)
- [RunAllTests](#runalltests)
- [RunSomeTests](#runsometests)
- **[Diagnostics](#diagnostics)**
- [XcodeRefreshCodeIssuesInFile](#xcoderefreshcodeissuesinfile)
- [XcodeListNavigatorIssues](#xcodelistnavigatorissues)
- **[Preview](#preview)**
- [RenderPreview](#renderpreview)
- **[Documentation](#documentation)**
- [DocumentationSearch](#documentationsearch)
---
## Workspace
### XcodeListWindows
Lists current Xcode windows and their workspace information. Use this to obtain `tabIdentifier` values needed by all other tools.
**Parameters:** None
**Example:**
```
XcodeListWindows()
```
---
## File Operations
### XcodeLS
Lists files and directories in the Xcode project structure at a given path. Operates on the project navigator hierarchy, not the filesystem.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tabIdentifier` | string | Yes | Workspace tab identifier |
| `path` | string | Yes | Project path to browse (e.g., `ProjectName/Sources/`) |
| `recursive` | boolean | No | List all files recursively (truncated at 100 lines). Default: `true` |
| `ignore` | string[] | No | Patterns to skip |
**Example:**
```
XcodeLS(tabIdentifier: "...", path: "MyApp/Sources/")
```
### XcodeGlob
Finds files in the Xcode project matching wildcard patterns. Supports `*`, `**`, `?`, `[abc]`, and `{swift,m}` syntax.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tabIdentifier` | string | Yes | Workspace tab identifier |
| `pattern` | string | No | Glob pattern (e.g., `**/*.swift`). Defaults to `**/*` |
| `path` | string | No | Directory to search in (defaults to project root) |
**Example:**
```
XcodeGlob(tabIdentifier: "...", pattern: "**/*.swift")
```
### XcodeGrep
Searches file contents using regex patterns within the Xcode project structure.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tabIdentifier` | string | Yes | Workspace tab identifier |
| `pattern` | string | Yes | Regex pattern to search for |
| `path` | string | No | File or directory to search in (defaults to root) |
| `glob` | string | No | Only search files matching this glob |
| `type` | string | No | File type shortcut (`swift`, `js`, `py`, etc.) |
| `outputMode` | string | No | `content`, `filesWithMatches` (default), or `count` |
| `ignoreCase` | boolean | No | Case-insensitive matching |
| `multiline` | boolean | No | Allow patterns to span multiple lines |
| `showLineNumbers` | boolean | No | Show line numbers (content mode only) |
| `linesBefore` | integer | No | Context lines before each match |
| `linesAfter` | integer | No | Context lines after each match |
| `linesContext` | integer | No | Context lines before and after each match |
| `headLimit` | integer | No | Stop after N results |
**Example:**
```
XcodeGrep(
tabIdentifier: "...",
pattern: "func viewDidLoad",
type: "swift",
outputMode: "content",
linesAfter: 5
)
```
### XcodeRead
Reads file contents with line numbers (`cat -n` format). Supports offset/limit for large files.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tabIdentifier` | string | Yes | Workspace tab identifier |
| `filePath` | string | Yes | Project-relative file path (e.g., `ProjectName/Sources/MyFile.swift`) |
| `offset` | integer | No | Line number to start reading from |
| `limit` | integer | No | Number of lines to read (default: up to 600) |
**Example:**
```
XcodeRead(tabIdentifier: "...", filePath: "MyApp/Sources/ContentView.swift")
```
### XcodeWrite
Creates or overwrites files in the Xcode project. Automatically adds new files to the project structure.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tabIdentifier` | string | Yes | Workspace tab identifier |
| `filePath` | string | Yes | Project-relative file path |
| `content` | string | Yes | File content to write |
**Example:**
```
XcodeWrite(
tabIdentifier: "...",
filePath: "MyApp/Sources/NewFeature.swift",
content: "import Foundation\n\nstruct NewFeature {\n}\n"
)
```
### XcodeUpdate
Edits files by finding and replacing text. Operates on project structure paths.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tabIdentifier` | string | Yes | Workspace tab identifier |
| `filePath` | string | Yes | Project-relative file path |
| `oldString` | string | Yes | Text to find |
| `newString` | string | Yes | Replacement text (must differ from `oldString`) |
| `replaceAll` | boolean | No | Replace all occurrences. Default: `false` |
**Example:**
```
XcodeUpdate(
tabIdentifier: "...",
filePath: "MyApp/Sources/ContentView.swift",
oldString: "Hello, World!",
newString: "Hello, SwiftUI!"
)
```
### XcodeMakeDir
Creates directories and groups in the Xcode project navigator.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tabIdentifier` | string | Yes | Workspace tab identifier |
| `directoryPath` | string | Yes | Project-relative path for the new directory |
**Example:**
```
XcodeMakeDir(tabIdentifier: "...", directoryPath: "MyApp/Sources/ViewModels")
```
### XcodeMV
Moves, copies, or renames files and directories in the project navigator.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tabIdentifier` | string | Yes | Workspace tab identifier |
| `sourcePath` | string | Yes | Source path in project navigator |
| `destinationPath` | string | Yes | Destination path or new name |
| `operation` | string | No | `move` or `copy` |
| `overwriteExisting` | boolean | No | Overwrite files at destination |
**Example:**
```
XcodeMV(
tabIdentifier: "...",
sourcePath: "MyApp/Sources/OldName.swift",
destinationPath: "MyApp/Sources/NewName.swift"
)
```
### XcodeRM
Removes files and directories from the Xcode pro
[truncated…]PUBLIC HISTORY
First discoveredMar 21, 2026
IDENTITY
inferred
Identity inferred from code signals. No PROVENANCE.yml found.
Is this yours? Claim it →METADATA
platformgithub
first seenFeb 4, 2026
last updatedMar 4, 2026
last crawled1 day ago
version—
README BADGE
Add to your README:
