Skip to content

About

Go semantic tools for the MCP server built into GoLand: 24 tools that answer questions about Go code through the type system, not text search

Topics

Resources

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Repository files navigation

Go MCP++

Your agent stops grepping Go and starts asking the compiler.
24 Go tools for the MCP server built into GoLand.


Go has no implements keyword. Which types satisfy an interface is written down nowhere — it exists only in the IDE's model. So when an agent reaches for grep, it gets answers that look right and are wrong.

You:   Make Circle satisfy Shape.
Agent: [writes Area() and Name() on *Circle]
Go:    cannot use circle (variable of type Circle) as Shape value:
       Circle does not implement Shape
Agent: ...

The compiler says that it failed, never why. One tool call does:

go_interface_check(typeName="Circle", interfaceName="Shape")

{ "satisfied": false,
  "checkedAs": "*Circle",
  "pointerReceiverOnly": ["Area", "Name"],
  "hint": "Circle declares Area, Name on a pointer receiver, so *Circle satisfies
           Shape but Circle does not. Either use *Circle at the call site, or
           change those methods to value receivers." }

That gap runs through the language. grep Close finds forty unrelated methods and misses every one promoted through embedding. A signature change means finding every caller and getting each argument order right. Neither is a text problem.

Install

1. The plugin. Download the zip from the latest release, then Settings | Plugins | ⚙ | Install Plugin from Disk.

(Not on the JetBrains Marketplace yet. Building from source is a contributor path — see CONTRIBUTING.)

2. Point your agent at the IDE. The MCP server is the IDE, on a port it computes per instance — so never write the port by hand. Open Settings | Tools | MCP Server, enable it, then:

Client How
Claude Code, Codex, Cursor and friends Auto-Configure — the IDE writes the config and keeps the port in sync
anything else Copy config: HTTP Stream, paste into your client

Prefer HTTP Stream. SSE is offered too, but it is the transport MCP has since deprecated in favour of streamable HTTP; take Stdio only for a client that speaks nothing else.

GoLand also raises a banner when it notices Claude or Codex start in a terminal without a matching setup.

Check it worked by asking the agent to call go_symbol on any type in your project.

3. Teach the agent the tools exist. A connected agent still reaches for grep. plugins/goland-mcp-plus is one plugin with five skills, installed by either client:

# Claude Code
/plugin marketplace add salatmaster/goland-mcp-plus
/plugin install goland-mcp-plus@goland-mcp-plus

# Codex
codex plugin marketplace add salatmaster/goland-mcp-plus
codex plugin add goland-mcp-plus@goland-mcp-plus
Skill Fires on
go-mcp any work in a Go codebase; routes to the rest
go-navigation finding a declaration, an API, callers
go-interfaces who implements what, and why something does not
go-refactoring signature changes, safe delete, inline, moves
go-testing tests, builds, vet, modules

For an agent with no skills mechanism, the same guidance is one page: paste docs/agent-rules.md into whatever file it always has in context.

Tools

Understand — go_symbol · go_doc · go_source_of · go_package_api · go_find_usages · go_read_files

Resolve a symbol through the type system, read what the installed version of a dependency declares, list a package's API with struct tags, find callers classified as call, read or write.

Interfaces — go_interface_check · go_implementations · go_interfaces_of · go_implement_interface · go_extract_interface

Who implements this, which interfaces a type satisfies, why it does not, and the stubs to fix it — including the pointer-receiver trap the compiler will not distinguish for you.

Change — go_change_signature · go_safe_delete · go_inline · go_move_files · go_fix_imports · go_replace_lines · go_batch_replace_text

Rename, add, drop, reorder or retype parameters and rewrite every call site. Delete only what nothing references. Move files between packages, updating every importer. Every change lands on the IDE's undo stack — one Cmd+Z reverts an agent.

Generate — go_type_from_json · go_generate_test

JSON into Go structs with golint initialisms (id → ID). Table-driven test scaffolding, creating the _test.go if it does not exist.

Toolchain — go_test · go_build_check · go_vet · go_mod

Run the toolchain with the SDK the project is configured with, and get each failure with its own output instead of a log to re-read.

References are written the way you would say them — net/http.Client.Do, store.User.Save, Handler.ServeHTTP, or a bare name. A pasted declaration and the (*Circle).Area documentation form work too.

Requirements

GoLand 2026.2 or later, with the bundled MCP Server and Go plugins enabled.

There is no upper version bound: pinning one would make the plugin uninstallable the day you update the IDE. Instead, an incompatible Go API surfaces as an ordinary tool error naming the build, so a bug report says what broke.

No telemetry

Settings | Tools | Go MCP++ shows how the agent used the tools this session — calls, failures, cancellations, average duration. In memory only, never written to disk, never transmitted. A tool at zero calls usually means the agent was never told it exists.

Also worth knowing

go_extract_function is deliberately absent: the IDE's handler needs an editor and an inplace naming template that a tool call cannot answer, and the text-splicing alternative gets captured variables wrong. A tool that is sometimes wrong is worse than no tool.

Contributing · Changelog · Security · Apache-2.0

About

Go semantic tools for the MCP server built into GoLand: 24 tools that answer questions about Go code through the type system, not text search

Topics

Resources

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages