zig mcp server

Local 2025-08-31 23:15:00 0

Provides Zig language tooling and code analysis, enhancing AI capabilities with Zig-specific functions like code optimization, compute unit estimation, code generation, and recommendations for best practices.


A Model Context Protocol (MCP) server that provides Zig language tooling, code analysis, and documentation access. This server enhances AI capabilities with Zig-specific functionality including code optimization, compute unit estimation, code generation, and best practices recommendations.

Features

Tools

1. Code Optimization (optimize_code)

Analyzes and optimizes Zig code with support for different optimization levels: - Debug - ReleaseSafe - ReleaseFast - ReleaseSmall

// Example usage
{
  "code": "const std = @import("std");
...",
  "optimizationLevel": "ReleaseFast"
}

2. Compute Units Estimation (estimate_compute_units)

Estimates computational complexity and resource usage of Zig code: - Memory usage analysis - Time complexity estimation - Allocation patterns detection

// Example usage
{
  "code": "const std = @import("std");
..."
}

3. Code Generation (generate_code)

Generates Zig code from natural language descriptions with support for: - Error handling - Testing - Performance optimizations - Documentation

// Example usage
{
  "prompt": "Create a function that sorts an array of integers",
  "context": "Should handle empty arrays and use comptime when possible"
}

4. Code Recommendations (get_recommendations)

Provides code improvement recommendations and best practices: - Style and conventions - Design patterns - Safety considerations - Performance insights

// Example usage
{
  "code": "const std = @import("std");
...",
  "prompt": "Improve performance and safety"
}

Resources

  1. Language Reference (zig://docs/language-reference)
  2. Official Zig language documentation
  3. Syntax and features guide
  4. Best practices

  5. Standard Library Documentation (zig://docs/std-lib)

  6. Complete std library reference
  7. Function signatures and usage
  8. Examples and notes

  9. Popular Repositories (zig://repos/popular)

  10. Top Zig projects on GitHub
  11. Community examples and patterns
  12. Real-world implementations

Installation

  1. Clone the repository:

    git clone [repository-url]
    cd zig-mcp-server

  2. Install dependencies:

    npm install

  3. Build the server:

    npm run build

  4. Configure environment variables:

    # Create a GitHub token for better API rate limits
    # https://github.com/settings/tokens
    # Required scope: public_repo
    GITHUB_TOKEN=your_token_here

  5. Add to MCP settings:

    {
      "mcpServers": {
        "zig": {
          "command": "node",
          "args": ["/path/to/zig-mcp-server/build/index.js"],
          "env": {
            "GITHUB_TOKEN": "your_token_here",
            "NODE_OPTIONS": "--experimental-vm-modules"
          },
          "restart": true
        }
      }
    }

Usage Examples

1. Optimize Code

const result = await useMcpTool("zig", "optimize_code", {
  code: `
    pub fn fibonacci(n: u64) u64 {
        if (n <= 1) return n;
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
  `,
  optimizationLevel: "ReleaseFast"
});

2. Estimate Compute Units

const result = await useMcpTool("zig", "estimate_compute_units", {
  code: `
    pub fn bubbleSort(arr: []i32) void {
        var i: usize = 0;
        while (i < arr.len) : (i += 1) {
            var j: usize = 0;
            while (j < arr.len - 1) : (j += 1) {
                if (arr[j] > arr[j + 1]) {
                    const temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
  `
});

3. Generate Code

const result = await useMcpTool("zig", "generate_code", {
  prompt: "Create a thread-safe counter struct",
  context: "Should use atomic operations and handle overflow"
});

4. Get Recommendations

const result = await useMcpTool("zig", "get_recommendations", {
  code: `
    pub fn main() !void {
        var list = std.ArrayList(u8).init(allocator);
        var i: u32 = 0;
        while (true) {
            if (i >= 100) break;
            try list.append(@intCast(u8, i));
            i += 1;
        }
    }
  `,
  prompt: "performance"
});

Development

Project Structure

zig-mcp-server/
├── src/
│   └── index.ts    # Main server implementation
├── build/          # Compiled JavaScript
├── package.json    # Dependencies and scripts
└── tsconfig.json   # TypeScript configuration

Building

# Development build with watch mode
npm run watch

# Production build
npm run build

Testing

npm test

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

MIT License - see the LICENSE file for details.

[
  {
    "description": "Optimize Zig code for better performance",
    "inputSchema": {
      "properties": {
        "code": {
          "description": "Zig code to optimize",
          "type": "string"
        },
        "optimizationLevel": {
          "description": "Optimization level to target",
          "enum": [
            "Debug",
            "ReleaseSafe",
            "ReleaseFast",
            "ReleaseSmall"
          ],
          "type": "string"
        }
      },
      "required": [
        "code"
      ],
      "type": "object"
    },
    "name": "optimize_code"
  },
  {
    "description": "Estimate computational complexity and resource usage",
    "inputSchema": {
      "properties": {
        "code": {
          "description": "Zig code to analyze",
          "type": "string"
        }
      },
      "required": [
        "code"
      ],
      "type": "object"
    },
    "name": "estimate_compute_units"
  },
  {
    "description": "Generate Zig code from natural language description",
    "inputSchema": {
      "properties": {
        "context": {
          "description": "Additional context or requirements",
          "type": "string"
        },
        "prompt": {
          "description": "Natural language description of desired code",
          "type": "string"
        }
      },
      "required": [
        "prompt"
      ],
      "type": "object"
    },
    "name": "generate_code"
  },
  {
    "description": "Get code improvement recommendations and best practices",
    "inputSchema": {
      "properties": {
        "code": {
          "description": "Zig code to analyze",
          "type": "string"
        },
        "prompt": {
          "description": "Natural language query for specific recommendations",
          "type": "string"
        }
      },
      "required": [
        "code"
      ],
      "type": "object"
    },
    "name": "get_recommendations"
  }
]