xcode-tools-docs
The xcode-tools-docs agent focuses on addressing missing documentation for Xcode Tools. It appears to be designed to identify and potentially rectify gaps in the Xcode Tools documentation. Developers working with Xcode and its associated tools would likely find this agent useful. The agent leverages AI capabilities, potentially including Claude and Codex, to analyze and generate documentation. Its purpose is to improve the accessibility and usability of Xcode Tools for a wider range of developers.
This agent solves the problem of incomplete or missing documentation for Xcode Tools, which can hinder developers' ability to effectively utilize these tools. Using this agent automates the process of identifying and potentially filling these documentation gaps, saving developers time and effort compared to manual searches and troubleshooting.
CAPABILITIES & CONSTRAINTS
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
IDENTITY
Identity inferred from code signals. No PROVENANCE.yml found.
Is this yours? Claim it →METADATA
README BADGE
Add to your README:
