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
- Host: GitHub
- URL: https://github.com/Yantrio/mcp-gopls
- Owner: Yantrio
- Created: 2025-06-05T12:04:54.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-06-06T14:07:28.000Z (5 months ago)
- Last Synced: 2025-09-22T14:38:44.270Z (about 2 months ago)
- Language: Go
- Size: 3.21 MB
- Stars: 39
- Watchers: 0
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-mcp-servers - **mcp-gopls** - Go-based `go` `mcp` `server` `ai` `go install Yantrio/mcp-gopls@latest` (⚙️ DevOps)
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