Skip to content

LSPシャットダウン/終了の互換性修正(厳格なLanguage Server対応)

原文(日本語に翻訳)

nullパラメータを拒否する厳格なLanguage Serverとのシャットダウン/終了の互換性を修正しました。

原文(英語)

Fixed LSP shutdown/exit compatibility with strict language servers that reject null params

概要

一部の厳格なLanguage Server実装が、LSPプロトコルのshutdown/exitリクエストにnullパラメータが含まれていると拒否する問題が修正されました。この修正により、パラメータ検証が厳密なLanguage Serverでも正常にシャットダウンできるようになりました。

基本的な使い方

LSPプラグインの設定

bash
# LSPプラグインをインストール
claude mcp add @claude-code/lsp

# 設定の確認
cat ~/.claude/settings.json

正常なシャットダウンの確認

bash
# Claude Codeを起動してLSPを使用
claude

> "main.tsのエラーを確認して"

# LSPが正常に診断を提供

# セッション終了時
# Ctrl+D または exit

# 以前: 厳格なLSPがnullパラメータを拒否してエラー
# 現在: 正常にシャットダウン

実践例

TypeScript Language Serverとの使用

TypeScriptのような厳格なパラメータ検証を持つLanguage Serverで正常動作:

bash
claude

> "この関数の型エラーを確認して"

# tsserver(TypeScript Language Server)が診断を提供
# ファイル:行:列 形式で正確なエラー位置を取得

# セッション終了
# LSPが正確なシャットダウンプロトコルで終了

Rust Analyzer との使用

厳格なパラメータ検証を持つRust Analyzerでも問題なく動作:

bash
claude

> "main.rsのコンパイルエラーを診断して"

# rust-analyzerが詳細な診断を提供
# ライフタイム、借用チェッカーエラーなど

# 終了時も正常にシャットダウン

複数のLSPサーバーを使用する場合

プロジェクトで複数のLanguage Serverを同時使用:

bash
# プロジェクト設定
# ~/.claude/settings.json または .claude/settings.json

{
  "lsp": {
    "typescript": {
      "command": "typescript-language-server",
      "args": ["--stdio"]
    },
    "rust": {
      "command": "rust-analyzer",
      "args": []
    },
    "python": {
      "command": "pylsp",
      "args": []
    }
  }
}
bash
claude

# 複数のファイルタイプを編集
> "server.tsとmain.rsを確認して"

# 両方のLSPが正常に動作
# セッション終了時、すべてのLSPが正常にシャットダウン

LSPによるリファクタリング

bash
claude

> "User クラスの定義箇所を教えて"

# LSP の "Go to Definition" 機能を使用
# 正確なファイル:行:列 を返す

> "この関数を別のモジュールに移動して"

# LSP の "Find All References" を使用
# すべての参照箇所を更新

# 作業完了後、正常にシャットダウン

注意点

  • LSPサポートの現状: Claude CodeのLSPサポートは2025年12月のv2.0.74で追加されたばかりで、まだ改善中です。一部のLSP操作にバグがある可能性があります。

  • 厳格なLanguage Server: 一部のLanguage Server(特にRust、TypeScript、Go)は、LSPプロトコルのパラメータ検証が厳格です。この修正により、これらのサーバーとの互換性が向上しました。

  • nullパラメータの扱い: LSPプロトコルの shutdown および exit メソッドは、仕様上パラメータを取りませんが、一部の実装ではnullパラメータを明示的に拒否します。

  • LSPプラグインの状態確認: LSPサーバーが起動・実行中かどうかを確認するUIインジケータはまだありません。エラーが発生した場合は、ログを確認してください:

    bash
    # LSP ログの確認
    tail -f ~/.claude/logs/lsp.log
  • エラーメッセージ: "No LSP server available for file type" エラーが出る場合、LSP設定が正しくない可能性があります。設定を確認してください。

  • パフォーマンス: LSPサーバーは大規模なプロジェクトでメモリとCPUを消費する場合があります。不要な場合は無効化を検討してください。

関連情報