# MCP-GOPLS An MCP (Model Context Protocol) server that wraps gopls to provide Go language server features. > ⚠️ **WARNING**: This entire project was generated by [Claude Code](https://claude.ai/code) without human code review. While it passes tests and appears functional, please use with **EXTREME CAUTION** in production environments. The code has not been audited for security, performance, or edge cases. See [DESIGN.md](DESIGN.md) for the AI-generated design document. ## Features All gopls language server features are now implemented: - **GoToDefinition**: Navigate to the definition of a symbol - **FindReferences**: Find all references to a symbol - **GetDiagnostics**: Get compile errors and static analysis findings - **Hover**: Get information about symbols under the cursor - **SearchSymbol**: Search for symbols across the workspace (supports partial matching) - **RenameSymbol**: Rename symbols across the workspace (applies changes directly to files) - **FindImplementers**: Find all types that implement an interface - **ListDocumentSymbols**: Get an outline of symbols defined in a file - **FormatCode**: Format Go source code according to gofmt standards (applies changes to files) - **OrganizeImports**: Organize import statements (groups and sorts imports, applies changes to files) ## Installation ```bash go install github.com/yantrio/mcp-gopls/cmd/mcp-gopls@latest ``` ## Integration with Claude ### Claude Code 1. Install mcp-gopls: ```bash go install github.com/yantrio/mcp-gopls/cmd/mcp-gopls@latest ``` 2. Add to Claude Code: ```bash claude mcp add mcp-gopls "$(which mcp-gopls)" ``` 3. Restart Claude Code: ```bash claude restart ``` 4. Verify installation: ```bash claude mcp list ``` ### Claude Desktop 1. Install mcp-gopls (same as above) 2. Edit Claude Desktop configuration: - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` - Windows: `%APPDATA%\Claude\claude_desktop_config.json` - Linux: `~/.config/Claude/claude_desktop_config.json` 3. Add the following to the `mcpServers` section: ```json { "mcpServers": { "mcp-gopls": { "command": "mcp-gopls", "args": [] } } } ``` Or with custom workspace: ```json { "mcpServers": { "mcp-gopls": { "command": "mcp-gopls", "args": ["-workspace", "/path/to/your/go/project"] } } } ``` 4. Restart Claude Desktop ## Usage ```bash # Run with default settings (uses gopls in PATH and current directory as workspace) mcp-gopls # Specify gopls path and workspace mcp-gopls -gopls /path/to/gopls -workspace /path/to/project # Using environment variables export GOPLS_PATH=/path/to/gopls export MCP_GOPLS_WORKSPACE=/path/to/project mcp-gopls ``` ## Requirements - Go 1.24.3+ - gopls (Go language server) ### Installing gopls ```bash go install golang.org/x/tools/gopls@latest ``` ## Development ```bash # Clone the repository git clone https://github.com/yantrio/mcp-gopls cd mcp-gopls # Build the project go build ./cmd/mcp-gopls # Run tests go test ./... ``` ## License MIT