Zig MCP Server

# Zig MCP Server 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 ```typescript // Example usage { "code": "const std = @import(\"std\");\n...", "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 ```typescript // Example usage { "code": "const std = @import(\"std\");\n..." } ``` #### 3. Code Generation (`generate_code`) Generates Zig code from natural language descriptions with support for: - Error handling - Testing - Performance optimizations - Documentation ```typescript // 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 ```typescript // Example usage { "code": "const std = @import(\"std\");\n...", "prompt": "Improve performance and safety" } ``` ### Resources 1. **Language Reference** (`zig://docs/language-reference`) - Official Zig language documentation - Syntax and features guide - Best practices 2. **Standard Library Documentation** (`zig://docs/std-lib`) - Complete std library reference - Function signatures and usage - Examples and notes 3. **Popular Repositories** (`zig://repos/popular`) - Top Zig projects on GitHub - Community examples and patterns - Real-world implementations ## Installation 1. Clone the repository: ```bash git clone [repository-url] cd zig-mcp-server ``` 2. Install dependencies: ```bash npm install ``` 3. Build the server: ```bash npm run build ``` 4. Configure environment variables: ```bash # 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: ```json { "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 ```typescript 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 ```typescript 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 ```typescript 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 ```typescript 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 ```bash # Development build with watch mode npm run watch # Production build npm run build ``` ### Testing ```bash 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](LICENSE) file for details.