Skip to main content
Glama
sadopc

mcp-server-zig

by sadopc
README.md
# mcp-server-zig

MCP server that provides Zig language intelligence for Claude Code. Wraps [ZLS](https://github.com/zigtools/zls) (Zig Language Server) and exposes 8 tools for diagnostics, formatting, hover info, go-to-definition, references, completions, document symbols, and building.

## Prerequisites

- **Node.js** >= 18
- **Zig** compiler on PATH (`zig version`)
- **ZLS** on PATH (`zls --version`)

```bash
# macOS
brew install zig zls

# Or download from:
# https://ziglang.org/download/
# https://github.com/zigtools/zls/releases
```

## Installation

Add to Claude Code:

```bash
claude mcp add --transport stdio mcp-server-zig -- npx -y mcp-server-zig
```

Or from source:

```bash
git clone https://github.com/sadopc/mcp-server-zig.git
cd mcp-server-zig
pnpm install && pnpm build
claude mcp add --transport stdio zig -- node $(pwd)/build/index.js
```

## Tools

### `zig_diagnostics`

Get errors and warnings for a Zig source file.

| Parameter | Type | Description |
|-----------|------|-------------|
| `file_path` | string | Absolute path to the .zig file |

### `zig_format`

Format Zig code using `zig fmt`.

| Parameter | Type | Description |
|-----------|------|-------------|
| `file_path` | string? | Path to .zig file to format in-place |
| `code` | string? | Zig source code string to format |

Provide either `file_path` or `code`, not both.

### `zig_hover`

Get type information and documentation for a symbol at a position.

| Parameter | Type | Description |
|-----------|------|-------------|
| `file_path` | string | Absolute path to the .zig file |
| `line` | number | Zero-based line number |
| `character` | number | Zero-based character offset |

### `zig_definition`

Go to definition — find where a symbol is defined.

| Parameter | Type | Description |
|-----------|------|-------------|
| `file_path` | string | Absolute path to the .zig file |
| `line` | number | Zero-based line number |
| `character` | number | Zero-based character offset |

### `zig_references`

Find all references to a symbol.

| Parameter | Type | Description |
|-----------|------|-------------|
| `file_path` | string | Absolute path to the .zig file |
| `line` | number | Zero-based line number |
| `character` | number | Zero-based character offset |

### `zig_completions`

Get completion suggestions at a position.

| Parameter | Type | Description |
|-----------|------|-------------|
| `file_path` | string | Absolute path to the .zig file |
| `line` | number | Zero-based line number |
| `character` | number | Zero-based character offset |
| `limit` | number? | Max completions to return (default: 20) |

### `zig_document_symbols`

Get the document symbol outline (functions, structs, variables, etc.).

| Parameter | Type | Description |
|-----------|------|-------------|
| `file_path` | string | Absolute path to the .zig file |

### `zig_build`

Run `zig build` in a project directory.

| Parameter | Type | Description |
|-----------|------|-------------|
| `project_path` | string | Path to project directory (containing build.zig) |
| `args` | string[]? | Additional args for `zig build` |

## How It Works

```
Claude Code ←(MCP/stdio)→ mcp-server-zig ←(LSP/stdio)→ ZLS subprocess
                                          ←(shell exec)→ zig fmt / zig build
```

- **ZLS tools** (diagnostics, hover, definition, references, completions, symbols): The server spawns ZLS as a subprocess, communicates via LSP over stdio. ZLS is started lazily on first tool call and auto-restarts on crash.
- **CLI tools** (format, build): These call `zig fmt` and `zig build` directly — no ZLS needed.

## Troubleshooting

**"ZLS spawn error"** — ZLS is not installed or not on PATH. Run `which zls` to verify.

**"zig fmt failed"** — Zig compiler is not installed or not on PATH. Run `which zig` to verify.

**Diagnostics are empty** — ZLS needs time to analyze the file. The server waits 200ms by default. For large projects, diagnostics may take longer to appear.

**Tools hang** — Check that ZLS is compatible with your Zig version. ZLS and Zig versions should match.

## License

MIT

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation5/5

Each tool serves a clearly distinct purpose: building, formatting, and various LSP features like completions, definitions, diagnostics, document symbols, hover, and references. No two tools overlap in functionality.

Naming Consistency5/5

All tools follow a consistent 'zig_<action>' pattern with snake_case, making it predictable and easy to understand the purpose from the name alone.

Tool Count5/5

With 8 tools, the server covers the essential Zig development workflow (build, format, LSP features) without being bloated. The count is well-scoped for a language-specific MCP server.

Completeness4/5

The toolset covers core development tasks: building, formatting, and common LSP operations (completions, diagnostics, hover, definitions, references, document symbols). Minor gaps like renaming or code actions are absent but not critical for basic usage.

Maintenance

ActivityInactive
ResponsivenessNo issues