LSP: initialize リクエストで clientInfo を通じた自己識別
原文(日本語に翻訳)
LSP: Claude Code は initialize リクエストの clientInfo を通じて言語サーバーに自己識別するようになりました。
原文(英語)
LSP: Claude Code now identifies itself to language servers via clientInfo in the initialize request
概要
Claude Code v2.1.98 では、Language Server Protocol (LSP) の initialize リクエストに clientInfo フィールドが追加されました。これにより、Claude Code が言語サーバー(LSP サーバー)に接続する際、自分が Claude Code であることを名前とバージョン情報で明示的に伝えるようになりました。言語サーバーはこの情報を使って、接続してきたクライアントが Claude Code であることを識別し、クライアント固有の最適化や機能を提供できるようになります。
基本的な使い方
この機能はユーザーが特別な操作をしなくても自動的に機能します。Claude Code が LSP サーバーに接続する際、initialize リクエストに以下のような clientInfo が自動的に含まれます。
json
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"clientInfo": {
"name": "Claude Code",
"version": "2.1.98"
},
"capabilities": { ... },
"rootUri": "file:///path/to/project"
}
}言語サーバーはこの情報を受け取り、接続クライアントを識別できます。
実践例
LSP サーバーでのクライアント識別活用
言語サーバーの開発者や管理者は、clientInfo を使ってクライアント固有のレスポンスを実装できます。
typescript
// カスタム LSP サーバーでの clientInfo 活用例(TypeScript)
import { createConnection, TextDocuments, InitializeParams } from 'vscode-languageserver/node';
const connection = createConnection();
connection.onInitialize((params: InitializeParams) => {
const clientInfo = params.clientInfo;
if (clientInfo?.name === 'Claude Code') {
console.log(`Claude Code v${clientInfo.version} が接続しました`);
// Claude Code 固有の設定や最適化を適用
}
return {
capabilities: {
// ...サーバーの機能を返す
}
};
});LSP ログでのクライアント識別確認
bash
# LSP サーバーのデバッグログで接続クライアントを確認
# 例: pylsp(Python LSP Server)のログ
tail -f ~/.cache/pylsp/pylsp.log
# ログに Claude Code からの接続が記録される:
# [INFO] Client connected: Claude Code 2.1.98複数クライアント環境での Claude Code 識別
bash
# 例えば、同じ言語サーバーに VS Code と Claude Code が接続する場合、
# サーバーはそれぞれを識別できる
# VS Code からの initialize リクエスト:
# clientInfo: { name: "Visual Studio Code", version: "1.90.0" }
# Claude Code からの initialize リクエスト:
# clientInfo: { name: "Claude Code", version: "2.1.98" }
# サーバーは適切に各クライアントに対応できるLSP 対応言語での恩恵
Claude Code が LSP を通じて以下のような言語サポートを利用する際、clientInfo によってより正確な識別が可能になります。
bash
# Python プロジェクトで Claude Code を使用
cd /path/to/python-project
# Claude Code が pylsp に接続する際、clientInfo が送信される
claude "このコードの型エラーを修正してください"
# pylsp は Claude Code であることを識別し、
# 適切な診断情報を返す
# TypeScript プロジェクトでも同様
cd /path/to/ts-project
claude "このコードをリファクタリングしてください"
# typescript-language-server が Claude Code を識別言語サーバーの接続ログ確認
bash
# Claude Code のデバッグモードで LSP 通信を確認
claude --debug "ファイルを分析してください"
# デバッグログに LSP initialize リクエストが表示される:
# [LSP] --> initialize { clientInfo: { name: "Claude Code", version: "2.1.98" }, ... }
# [LSP] <-- initializeResult { capabilities: { ... } }注意点
clientInfoフィールドは LSP 仕様(Language Server Protocol specification 3.15 以降)で定義されています- この変更はユーザーが意識しなくても自動的に機能します。特別な設定は不要です
- 古い言語サーバーで
clientInfoが認識されない場合でも、LSP の仕様上このフィールドは無視されるため、互換性の問題は生じません - 言語サーバーが
clientInfoを活用するかどうかは、各言語サーバーの実装に依存します - Claude Code のバージョンが更新されると、
clientInfo.versionの値も更新されます - この機能により、言語サーバーのログやデバッグ情報で Claude Code からの接続を特定しやすくなります