Closed11

gopls mcp を使う

kenshi kamatakenshi kamata

ヘルプにもある

$ gopls -h
中略
flags:
  -mcp.listen=string
        experimental: address on which to listen for model context protocol connections. If port is localhost:0, pick a random port in localhost instead.
kenshi kamatakenshi kamata

実際に動かしてみるとまあログは出て起動はしてるっぽい

$ gopls serve -mcp.listen="localhost:0"
mcp.go:48: Gopls MCP server: starting up on http
mcp.go:73: mcp http server listening
kenshi kamatakenshi kamata

claude に設定してみる

~/.claude.json

"mcpServers": {
  "gopls": {
    "type": "stdio",
    "command": "gopls",
    "args": [
      "serve",
      "-mcp.listen=localhost:0"
    ],
    "env": {}
  },
}

ざっくりこんな感じかなあ

kenshi kamatakenshi kamata
$ claude mcp list
Checking MCP server health...

gopls: gopls serve -mcp.listen=localhost:0 - ✗ Failed to connect

失敗した

kenshi kamatakenshi kamata
$ claude mcp list --debug
[ERROR] MCP server "gopls" Server stderr: mcp.go:48: Gopls MCP server: starting up on http
[ERROR] MCP server "gopls" Server stderr: mcp.go:73: mcp http server listening
[DEBUG] MCP server "gopls": Connection failed: Error: Connection to MCP server "gopls" timed out after 30000ms
[DEBUG] MCP server "gopls": Error message: Connection to MCP server "gopls" timed out after 30000ms
[DEBUG] MCP server "gopls": Error stack: Error: Connection to MCP server "gopls" timed out after 30000ms
    at Timeout._onTimeout (file:///Users/XXXXXXXX/.claude/local/node_modules/@anthropic-ai/claude-code/cli.js:1330:2678)
    at listOnTimeout (node:internal/timers:608:17)
    at process.processTimers (node:internal/timers:543:7)
[ERROR] MCP server "gopls" Connection failed: Connection to MCP server "gopls" timed out after 30000ms
gopls: gopls serve -mcp.listen=localhost:0 - ✗ Failed to connect

タイムアウトしてるんだよなあ

kenshi kamatakenshi kamata

VS code に設定した

		"gopls": {
			"type": "stdio",
			"command": "gopls",
			"args": [
				"mcp"
			]
		}

動いてるっぽいけどどうかなあ

claude は失敗した

kenshi kamatakenshi kamata
  1. terminal の別 pane で gopls serve -mcp.listen=localhost:8092 する
  2. mcp を登録する claude mcp add --transport sse gopls https://localhost:8092
  3. claude mcp list を実行する

failed to connect になるので失敗してそう

kenshi kamatakenshi kamata

原因がわかった
gopls mcp とかで起動するときに単に時間がかかってるからタイムアウトしてるだけだった。

試しに Go のコードがほとんど無いリポジトリだと簡単につながる。

手元で claude 使って非同期にプロジェクトを読み込むように実装させたら簡単につながるようになったので、これがあたりな感じがする。

このスクラップは29日前にクローズされました