Closed11
gopls mcp を使う
gopls には mcp server モードが有る
ヘルプにもある
$ 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.
実際に動かしてみるとまあログは出て起動はしてるっぽい
$ gopls serve -mcp.listen="localhost:0"
mcp.go:48: Gopls MCP server: starting up on http
mcp.go:73: mcp http server listening
gopls のバージョンは v0.20.0 https://pkg.go.dev/golang.org/x/tools/gopls@v0.20.0
claude に設定してみる
~/.claude.json
"mcpServers": {
"gopls": {
"type": "stdio",
"command": "gopls",
"args": [
"serve",
"-mcp.listen=localhost:0"
],
"env": {}
},
}
ざっくりこんな感じかなあ
$ claude mcp list
Checking MCP server health...
gopls: gopls serve -mcp.listen=localhost:0 - ✗ Failed to connect
失敗した
$ 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
タイムアウトしてるんだよなあ
gopls mcp
を使うらしい
VS code に設定した
"gopls": {
"type": "stdio",
"command": "gopls",
"args": [
"mcp"
]
}
動いてるっぽいけどどうかなあ
claude は失敗した
- terminal の別 pane で
gopls serve -mcp.listen=localhost:8092
する - mcp を登録する
claude mcp add --transport sse gopls https://localhost:8092
-
claude mcp list
を実行する
failed to connect になるので失敗してそう
原因がわかった
gopls mcp
とかで起動するときに単に時間がかかってるからタイムアウトしてるだけだった。
試しに Go のコードがほとんど無いリポジトリだと簡単につながる。
手元で claude 使って非同期にプロジェクトを読み込むように実装させたら簡単につながるようになったので、これがあたりな感じがする。
このスクラップは29日前にクローズされました