Description:
The current implementation of the gopls
MCP server (https://tip.golang.org/gopls/features/mcp
) presents challenges when working with multiple workspaces in environments like VS Code. Specifically, managing the MCP port (-mcp.listen
) is cumbersome, and there is no seamless way to configure it for both shared and standalone gopls
instances.
Problem:
- Random MCP Port:
- When using
-mcp.listen=localhost:0
, the MCP server assigns a random port. This makes it difficult to pin down the port for use in themcp.json
file or other tools that rely on a static MCP endpoint. -
Dynamically updating the
mcp.json
file to reflect the random port is non-trivial. -
Fixed MCP Port:
-
Using a fixed MCP port allows for per-workspace configurations, but this requires manual setup for each workspace. This is not ideal for users who want a more automated solution.
-
Shared
gopls
Daemon: - A shared
gopls
daemon with-mcp.listen
and-remote
flags is a viable solution. However, the-remote=auto
flag does not currently support forwarding the-mcp.listen
flag to the shared daemon. This makes it impossible to configure the MCP port for the shared daemon in an automated way.
Proposed Solutions:
- Enhance
-remote=auto
: - Allow the
-remote=auto
flag to forward the-mcp.listen
flag (or other arbitrary flags) to the sharedgopls
daemon. This would enable users to configure the MCP port for the shared daemon seamlessly.