Skip to main content
Glama
roeybiran

XcodeBuild Mini MCP Server

by roeybiran
README.md
# XcodeBuild Mini MCP Server

An MCP (Model Context Protocol) server that provides Xcode build operations through the MCP interface, following the [official MCP Node.js guide](https://modelcontextprotocol.io/docs/develop/build-server#node).

## Features

This MCP server provides the following tools:

- **build** - Build an Xcode scheme
- **list_tests** - List all tests for an Xcode scheme
- **build_tests** - Build tests for an Xcode scheme
- **run_tests** - Run tests for an Xcode scheme (with optional test filtering)
- **list_packages** - List all packages in the Xcode project

## Installation

1. Install dependencies:
```bash
npm install
```

2. Build the TypeScript code:
```bash
npm run build
```

## Usage

### Running the MCP Server

```bash
npm start
```

Or for development:
```bash
npm run dev
```

### MCP Client Configuration

To use this MCP server with an MCP client, add it to your client configuration:

```json
{
  "mcpServers": {
    "xcodebuild-mini": {
      "command": "npx",
      "args": ["-y", "@roeybiran/xcodebuild-mini-mcp"],
    }
  }
}
```

### Available Tools

#### build
Build an Xcode scheme.

**Parameters:**
- `scheme` (required): The Xcode scheme to build
- `warn` (optional): Show warnings in output (default: false)

**Example:**
```json
{
  "name": "build",
  "arguments": {
    "scheme": "MyApp",
    "warn": true
  }
}
```

#### list_tests
List all tests for an Xcode scheme.

**Parameters:**
- `scheme` (required): The Xcode scheme to list tests for

**Example:**
```json
{
  "name": "list_tests",
  "arguments": {
    "scheme": "MyApp"
  }
}
```

#### build_tests
Build tests for an Xcode scheme.

**Parameters:**
- `scheme` (required): The Xcode scheme to build tests for

**Example:**
```json
{
  "name": "build_tests",
  "arguments": {
    "scheme": "MyApp"
  }
}
```

#### run_tests
Run tests for an Xcode scheme.

**Parameters:**
- `scheme` (required): The Xcode scheme to run tests for
- `only` (optional): Run only specific test

**Example:**
```json
{
  "name": "run_tests",
  "arguments": {
    "scheme": "MyApp",
    "only": "MyAppTests/testExample"
  }
}
```

#### list_packages
List all packages in the Xcode project.

**Parameters:**
None

**Example:**
```json
{
  "name": "list_packages",
  "arguments": {}
}
```

## Requirements

- Node.js 18+
- Xcode command line tools
- The `xcodebuild` command must be available in PATH

## Development

### Project Structure

```
xcodebuild-mini-mcp/
├── src/
│   ├── index.ts          # Main MCP server implementation (following MCP guide patterns)
│   └── xcodebuild.ts     # TypeScript implementation of Xcode build operations
├── dist/                 # Compiled JavaScript output
├── package.json          # Node.js dependencies
├── tsconfig.json         # TypeScript configuration
└── README.md            # This file
```

### Implementation Details

This server follows the [official MCP Node.js guide](https://modelcontextprotocol.io/docs/develop/build-server#node) patterns:

- **Server Initialization**: Uses the recommended `Server` class from `@modelcontextprotocol/sdk`
- **Transport**: Uses `StdioServerTransport` for stdio-based communication
- **Tool Handlers**: Implements `ListToolsRequestSchema` and `CallToolRequestSchema` handlers
- **Error Handling**: Proper error handling with structured responses
- **Logging**: Uses `console.error` for logging (stdout is reserved for JSON-RPC messages)

### Building

```bash
npm run build
```

### Development Mode

```bash
npm run dev
```

## Error Handling

The MCP server handles errors gracefully and returns structured error responses. Common error scenarios include:

- Invalid scheme names
- Build failures
- Test execution failures
- Missing dependencies

All errors are returned with descriptive messages and proper error flags.

## License

MIT

TDQS

A3.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool serves a unique purpose: build (without tests), build_tests (with tests), list_tests (list test targets), and run_tests (execute tests). No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: build, build_tests, list_tests, run_tests. The naming is predictable and uniform.

Tool Count5/5

Four tools cover the essential build and test workflow without unnecessary bloat. The count is well-scoped for a focused Xcode build server.

Completeness4/5

The set covers core build and test operations (build with/without tests, list/run tests). Missing cleanup or individual test selection, but minimal for a 'mini' server.

Maintenance

ActivityInactive
ResponsivenessNo issues