Skip to content

x/tools/gopls: Improve MCP Port Management for gopls in Multi-Workspace Environments #75270

@tekert

Description

@tekert

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:

  1. 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 the mcp.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.
  2. 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.
  3. 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:

  1. Enhance -remote=auto:
    • Allow the -remote=auto flag to forward the -mcp.listen flag (or other arbitrary flags) to the shared gopls daemon. This would enable users to configure the MCP port for the shared daemon seamlessly.

Metadata

Metadata

Assignees

Labels

ToolProposalIssues describing a requested change to a Go tool or command-line program.ToolsThis label describes issues relating to any tools in the x/tools repository.goplsIssues related to the Go language server, gopls.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions