An open API service indexing awesome lists of open source software.

https://github.com/Yantrio/mcp-gopls

Go language server (gopls) wrapped as an MCP server for AI-powered code assistance in Claude and other MCP-compatible tools
https://github.com/Yantrio/mcp-gopls

Last synced: about 1 month ago
JSON representation

Go language server (gopls) wrapped as an MCP server for AI-powered code assistance in Claude and other MCP-compatible tools

Awesome Lists containing this project

README

          

# 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