Claudeでmcpにserenaを追加しようとしてハマった話

Claudeでmcpにserenaを追加しようとしてハマった話

LSPとしてコードを解析することで効率よくTokenを節約できるMCPサーバということでserenaの導入にトライしてみましたが、他に見なかったハマり事例だったので記事としてみました。
2025.08.04

Claudeは常にファイルを丸読みする仕様なのに対し、serenaはLSPとしてコード解析を行い、必要な部分だけをピンポイントで把握します。そのため、使い方が適切であればTokenを大幅に節約できる優れたMCPサーバです。LSPおよびClaudeの動作仕様については、以下の記事を参考にしてください。

早速serenaを試してみたところ、頭を抱える事態に陥りました。

スクリーンショット 2025-08-04 0.53.54

多くのユーザーが問題なく接続できている中で、つながらない状況に焦りを感じました。以下、原因の確認、接続までの設定および接続後の確認過程となります。

ClaudeでのMCPとの接続確認は claude —debugコマンドで見ることができます。

Portを指定する

SerenaがMCP向けに開放しているポートは8000番です。

ただし、Claudeが8000番へ繋ぎに行くとは限りません。

スクリーンショット 2025-08-04 1.08.49

対策としては、mcpに追加する際に Port を明示的に指定する必要があります。今回は直接実行の例を示していますが、ローカル環境やDockerコンテナを使用する場合でも、同様にPort を引数として指定することができます。

claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena-mcp-server --context ide-assistant --project $(pwd) --port 32000

動作後に知っておくべきこと

serenaに無事接続できたことをclaude —debugで確認すると、おそらく多くの人が眉をひそめる表示に遭遇するでしょう。

スクリーンショット 2025-08-04 1.10.13

初めてこの表示を見ると対策を考え始めてしまいますが、仕様なのです。非常に紛らわしいため、GitHubにIssueが立てられているほどです。

MCPは厄介な仕様として、サーバから渡された標準出力をすべてERRORとして表示します。設定されたサーバが情報をINFOレベルで出力しても、MCPはこれをERRORとしてリダイレクトします。この動作が気になる場合は、serenaを単独で起動してみましょう。そうすると、同じログがERRORではなくINFO扱いで表示されることがわかります。

スクリーンショット 2025-08-04 1.11.03

あとがき

多くの導入記事ではPort指定が省略されており、この問題に気づくのが遅れました。この対処法がすべてのケースに適用できるわけではありませんが、デバッグログで8000番以外のポートに接続しようとしていることが確認できた場合は、明示的にポート番号を引数で指定すると解決できるかもしれません。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.