Claude CodeのLSPとは?設定方法・対応言語・動かないときの対処
この記事でわかること
- LSPを入れると、Claude Codeの何が変わるのか
- 公式プラグインがある言語と、必要な言語サーバー
- プラグインと言語サーバーの入れ方、動いているかの確認方法
- 「LSP plugin recommendation」ダイアログの選択肢
- 動かないとき・重いときの対処
- 公式プラグインがない言語を .lsp.json で足す方法
目次
- Claude CodeのLSPとは
- 編集のたびに、エラーを自動で受け取る
- 文字の検索ではなく、シンボルで調べる
- 対応言語と必要な言語サーバー
- 言語サーバーの入れ方の例
- 設定の手順
- インストールの範囲(スコープ)を選ぶ
- VS Codeやデスクトップアプリで使う場合
- 動いているかの確認と推薦ダイアログ
- 診断の表示で確かめる
- 「LSP plugin recommendation」ダイアログ
- 公式にない言語を足す
- .lsp.jsonの書き方
- 読み込み方と、つまずきやすい点
- うまくいかないとき
- メモリを多く使うとき
- モノレポで、存在するはずのimportが警告される
- チームや会社で使うときの注意
- 全員に同じプラグインを使わせる
- クラウドのセッションでは動かない
- 権限とセキュリティ
- ネットワークが制限された環境
- よくある質問
- まとめ
「Claude CodeでLSPを使うと、何が良くなるのか」「LSPのプラグインを入れたのに動いているか分からない」と迷っている方もいるのではないでしょうか。
LSP(Language Server Protocol)は、エディタが持っている「定義へ移動」「エラーの表示」といった機能を、プログラミング言語ごとの言語サーバーから受け取るための共通の決まりです。Claude Codeでは、この言語サーバーにつなぐと、Claudeがコードを直した直後に型のエラーや読み込みの間違いを自分で見つけ、シンボル(関数名や変数名)をたどってコードを調べられるようになります。
この記事では、LSPで何が変わるのかを最初に整理したうえで、公式プラグインがある言語、入れ方、動いているかの確認方法、うまくいかないときの対処、公式にない言語の足し方までを順に解説します。内容は2026年10月時点の公式ドキュメントをもとにしています。Claude Codeは更新が早いため、設定の前には公式ページもあわせて確認してください。
Claude CodeのLSPとは

Claude Codeには、公式のコード解析用プラグイン(コードインテリジェンスプラグイン)があります。このプラグインは、言語ごとの言語サーバーとClaude Codeをつなぐ役割をします。公式ドキュメントでは、エディタが持つ診断と「定義へ移動」の機能をClaudeにも持たせるものと説明されています。
つなぐと、Claudeは大きく2つのことができるようになります。
編集のたびに、エラーを自動で受け取る
Claudeがファイルを編集するたびに、言語サーバーが見つけたエラーや警告がClaudeに届きます。型の間違い、読み込み(import)の抜け、文法の誤りを、ビルドやテストを実行しなくてもその場で知ることができます。公式ドキュメントでも、別のビルド工程なしで問題を直せると説明されています。
たとえば、関数の引数を1つ増やしたのに呼び出し側を直し忘れたとします。LSPがない状態では、テストや実行で初めて分かります。LSPがあれば、編集した直後にエラーがClaudeへ届くので、そのまま続けて修正できます。
文字の検索ではなく、シンボルで調べる
もうひとつは、Claudeが使えるLSPツールです。ふつうの検索(Grep)は文字列を探すだけですが、LSPツールは言語サーバーを通してシンボルそのものを調べます。公式ドキュメントでは、次の操作ができると書かれています。
| できること | 使いどころの例 |
|---|---|
| 定義へ移動 | 呼び出している関数の元の定義を開く |
| 参照をすべて探す | 名前を変える前に、使っている場所を洗い出す |
| 型の情報を得る | 変数や戻り値が何の型かを確かめる |
| ファイル内のシンボル一覧 | そのファイルにある関数やクラスを把握する |
| 名前でシンボルを検索 | プロジェクト全体から、関数名を手がかりに探す |
| インターフェースの実装を探す | ある仕様を満たしているクラスをたどる |
| 呼び出し階層をたどる | どこから呼ばれ、どこを呼んでいるかを追う |
このツールは読み取り専用で、ファイルを書き換えることはありません。公式のツール一覧でも、実行のたびの許可は不要なツールとして載っています。ただし、読み取りの権限ルール(Read(...))は、LSPツールにも適用されます。
LSPを入れなくても、Claude Codeは使える
LSPは必須の機能ではありません。入れなくても、Claude Codeは検索ツールでファイルを探して作業を進めます。大きなコードや、型のエラーが出やすい言語で、確認の手間を減らしたいときに入れる追加機能と考えてください。公式ドキュメントでも、大きなリポジトリでは「定義や使用箇所を探すのに多くのファイル読み込みが発生する」ので、LSPで減らせると説明されています。
対応言語と必要な言語サーバー

公式のマーケットプレイス(claude-plugins-official)には、次の言語のプラグインが用意されています。プラグインに言語サーバー本体は含まれていません。「どのコマンドで言語サーバーを起動するか」「どの拡張子を担当するか」を教えるだけなので、右端の言語サーバーは自分で入れる必要があります。
| 言語 | プラグイン | 必要な言語サーバー(実行ファイル) |
|---|---|---|
| C / C++ | clangd-lsp | clangd |
| C# | csharp-lsp | csharp-ls |
| Go | gopls-lsp | gopls |
| Java | jdtls-lsp | jdtls |
| Kotlin | kotlin-lsp | kotlin-lsp |
| Liquid | liquid-lsp | shopify(Shopify CLIに含まれる) |
| Lua | lua-lsp | lua-language-server |
| PHP | php-lsp | intelephense |
| Python | pyright-lsp | pyright-langserver |
| Ruby | ruby-lsp | ruby-lsp |
| Rust | rust-analyzer-lsp | rust-analyzer |
| Swift | swift-lsp | sourcekit-lsp |
| TypeScript・JavaScript | typescript-lsp | typescript-language-server |
Anthropicが保守しているのは、liquid-lspを除くすべてのプラグインです。liquid-lspはShopifyが保守していて、公式マーケットプレイスに掲載されています。
言語サーバーの入れ方の例
言語サーバーの入れ方は、各プラグインのREADME(GitHubのclaude-plugins-official)に載っています。2026年10月に確認できた主な例を挙げます。READMEは更新されることがあるので、実際に入れるときはリンク先の最新の内容を確認してください。
| 言語 | READMEにある入れ方の例 | 担当する拡張子 |
|---|---|---|
| TypeScript・JavaScript | npm install -g typescript-language-server typescript | .ts .tsx .js .jsx .mts .cts .mjs .cjs |
| Python | npm install -g pyright、pip install pyright、pipx install pyright のいずれか | .py .pyi |
| Go | go install golang.org/x/tools/gopls@latest($HOME/go/bin をPATHに入れる) | .go |
| Rust | rustup component add rust-analyzer | .rs |
| PHP | npm install -g intelephense | .php |
| Ruby | gem install ruby-lsp(Ruby 3.0以降) | .rb .rake .gemspec .ru .erb |
| C# | dotnet tool install --global csharp-ls(.NET SDK 6.0以降) | .cs |
| C / C++ | Windowsは winget install LLVM.LLVM、macOSは brew install llvm | .c .h .cpp .cc .cxx .hpp .hxx |
| Java | macOSは brew install jdtls(Java 17以降のJDK) | .java |
| Kotlin | brew install JetBrains/utils/kotlin-lsp | .kt .kts |
| Swift | Swiftのツールチェーン(Xcodeなど)に含まれる | .swift |
| Lua | macOSは brew install lua-language-server | .lua |
PythonのREADMEには入れ方が3通り載っていて、pipxでの導入が推奨と書かれています。公式の言語一覧の表にある実行ファイル名はpyright-langserverなので、入れたあとにPATHでこの名前が見つかることを確かめてください。Liquidについては、READMEの内容までは確認できていません。
設定の手順

設定は、言語サーバー、プラグイン、確認の3つの順で進めます。ここではTypeScriptを例にします。
- 言語サーバーを入れる前章の表で、使っている言語の言語サーバーを入れます。TypeScriptなら
npm install -g typescript-language-server typescriptです。 - PATHで見つかるか確認する入れた実行ファイルが、
claudeを起動するシェルのPATHにあることを確かめます。which typescript-language-server(PowerShellではGet-Command typescript-language-server)で確認できます。 - プラグインを入れるターミナルで
claudeを起動し、/plugin install typescript-lsp@claude-plugins-officialを実行します。言語に合わせて、プラグイン名を表のものに変えてください。 - 有効にするインストールの完了メッセージに、すぐ使えるか、
/reload-pluginsが必要かが書かれています。必要なら指示どおりに実行します。 - 動くか確かめる対象の言語のファイルをClaudeに編集してもらい、診断の表示が出るかを見ます(次の章で説明します)。
公式ドキュメントでは、/plugin installはセッション中に実行すると、すぐに入れるのではなくプラグインの詳細画面が開き、範囲(スコープ)を選んでから入れる流れになると説明されています。同じコマンドをシェルから実行するclaude plugin install <名前>@<マーケットプレイス名>の形も用意されています。
公式の手順に、LSPを有効にするための環境変数の設定は出てきません。以前のブログ記事などに環境変数が書かれていても、まず現在の公式ドキュメントの手順で試してください。
インストールの範囲(スコープ)を選ぶ
プラグインの入れ方には、3つの範囲があります。
| 範囲 | 誰に効くか | 記録される場所 |
|---|---|---|
| ユーザー | 自分の、このパソコンのすべてのプロジェクト | ~/.claude/settings.json |
| プロジェクト | そのリポジトリで作業する全員 | .claude/settings.json(コミットして共有) |
| ローカル | 自分の、そのリポジトリだけ | .claude/settings.local.json |
まず自分だけで試すなら、ユーザーかローカルで十分です。チームで使うときの注意は、あとの章で説明します。
VS Codeやデスクトップアプリで使う場合
VS Code拡張機能とデスクトップアプリでは、ターミナルのコマンドではなく、画面からプラグインを入れます。公式ドキュメントでは、デスクトップアプリの場合、プロンプト欄の「+」から「Plugins」を選んで、プラグインの一覧から追加する手順が案内されています。ターミナル、デスクトップアプリのローカルセッション、VS Code拡張機能は、同じパソコン上では同じ設定ファイルを読むため、ユーザー範囲で入れたプラグインはどれでも使えます。JetBrainsのIDEでは、IDEのターミナルタブでClaude Codeを動かすので、ターミナルの手順で入れます。
動いているかの確認と推薦ダイアログ

言語サーバーは、対象の拡張子のファイルをClaudeが初めて編集したときに起動します。インストールしただけでは、まだ動いていません。
診断の表示で確かめる
確かめるには、Claudeにわざと型のエラーが出るような編集を頼み、そのあと直してもらいます。公式ドキュメントでは、編集の下に次のような行が出れば、言語サーバーが起動していると説明されています。
Found N new diagnostic issues in M files (ctrl+o to expand)
会話の画面には、この件数のまとめだけが表示されます。エラーの中身を読むには、Ctrl+Oを押します。
この行が出ないときは、/pluginを開いてErrorsタブを見ます。Executable not found in $PATH: "<実行ファイル名>"という行があれば、その名前の言語サーバーがPATHにありません。言語サーバーを入れたあと、次にClaudeが対象のファイルを編集したときに、Claude Codeが起動をやり直します。PATHに入っていないフォルダに入れた場合は、PATHが通っているシェルから新しくセッションを始めてください。
「LSP plugin recommendation」ダイアログ
言語サーバーがすでにPATH上にあり、対応するプラグインが未インストールのとき、Claude Codeは「LSP plugin recommendation」というダイアログでプラグインの導入を提案します。出る条件は公式ドキュメントで次のように決まっています。
- 編集したファイルの拡張子に合うプラグインが、追加済みのマーケットプレイスにある
- そのプラグインの言語サーバーが、すでにパソコンに入っている
- 1つのセッションで、最初に当てはまったファイルの1回だけ表示される
- クラウドのセッション(
claude --cloudなど)では表示されない
ダイアログには4つの選択肢があります。
| 選択肢 | 起きること |
|---|---|
| Yes, install | 自分のアカウント向けにプラグインを入れる。新しいセッションを始めると有効になる |
| No, not now | 閉じる。あとのセッションでまた提案される(Escでも同じ) |
| Never for this plugin | そのプラグインだけ、今後出さない |
| Disable all LSP recommendations | すべての言語で、今後出さない |
選ばずに30秒たつと、閉じられて「無視した」と数えられます。無視が5回たまると、「Disable all」を選んだのと同じ扱いになり、提案されなくなります。
提案を元に戻すには
提案を止めた設定は、Claude Code自身の設定ファイル~/.claude.jsonに残ります。もう一度出したいときは、lspRecommendationDisabledとlspRecommendationIgnoredCountのキーを消します。「Never for this plugin」を選んだプラグインは、同じファイルのlspRecommendationNeverPluginsの一覧から、その名前(プラグイン名@マーケットプレイス名)を消すと、また提案されます。
公式にない言語を足す

表にない言語でも、言語サーバーがあれば自分でつなげます。公式ドキュメントの手順は、プラグインの中に.lsp.jsonというファイルを置き、そのプラグインを読み込むというものです。
.lsp.jsonの書き方
プラグインのフォルダ直下に.lsp.jsonを置きます。Goの言語サーバーを.goファイルに使う例が、公式ドキュメントに載っています。
{
"gopls": {
"command": "gopls",
"args": ["serve"],
"extensionToLanguage": { ".go": "go" }
}
}
ファイルは、サーバー名をそのまま設定につなげる形で書きます。全体を包む入れ物は不要です。設定できる主な項目は次のとおりです。
| 項目 | 必須 | 内容 |
|---|---|---|
command | 必須 | 言語サーバーの実行ファイル名。引数はargsに書く |
extensionToLanguage | 必須 | 拡張子と言語IDの対応。キーは.goのようにドットで始め、最低1件 |
args | 任意 | 言語サーバーに渡す引数 |
env | 任意 | 言語サーバーのプロセスに渡す環境変数 |
startupTimeout | 任意 | 起動を待つ時間(ミリ秒) |
restartOnCrash | 任意 | 落ちたときに再起動するか。初期値は再起動する |
diagnostics | 任意 | 編集後に診断をClaudeへ渡すか。初期値は渡す |
このほかにも、transport、initializationOptions、settings、workspaceFolder、shutdownTimeout、requestTimeout、maxRestartsがあります。詳しくは公式のプラグイン仕様(manifest reference)のlspServersの項を確認してください。
読み込み方と、つまずきやすい点
作ったプラグインは、claude --plugin-dir <フォルダ>で、そのセッションだけ読み込めます。プラグインを配るなら、マーケットプレイスに公開します。プラグインの設定ファイル(plugin.json)は任意とされていて、なくても標準の配置にあるファイルは読み込まれます。
- 言語サーバーは別に入れる:プラグインは接続の設定だけを持ち、言語サーバー本体は入れません。見つからないと起動に失敗し、
claude --debugにLSP server <名前> failed to startと記録されます - 1つの拡張子につき、使われるサーバーは1つ:同じ拡張子を担当するサーバーが2つ有効になっていると、先に登録された方が使われます。Errorsタブに「このサーバーは○○ファイルには使われない」という警告が出ます
- 書式の間違いは、ファイルごと無視される:1件でも不正な項目があると、
.lsp.json全体が読み込まれず、ErrorsタブにInvalid LSP server config for ".lsp.json"と出ます。claude plugin validateはこのファイルを検査しません
公式プラグインがある言語は、それを使う
公式ドキュメントも、すでに公式のコードインテリジェンスプラグインがある言語なら、自分で書かずにそれを入れるよう案内しています。.lsp.jsonを書くのは、表にない言語か、公式にはないサーバーを使いたいときだけにしましょう。
うまくいかないとき

よくある状況を、症状と対処の表にまとめました。多くは言語サーバーが見つからないことが原因です。
| 症状 | 確認すること | 対処 |
|---|---|---|
| 診断が一度も表示されない | /pluginのErrorsタブ | Executable not found in $PATHがあれば、その言語サーバーを入れる。入れたら新しいセッションを始める |
| 入れたのに見つからない | claudeを起動したシェルのPATH | which(PowerShellではGet-Command)で見つかるか確認し、見つからなければPATHを通してから起動し直す |
| 理由が分からない | claude --debugのログ | LSP server <名前> failed to start: <理由>の行を探す |
| メモリを多く使う | 言語サーバーのプロセス | /plugin disable <プラグイン名>で止め、Claudeの標準の検索ツールで作業する |
| 存在するimportが「見つからない」と出る | モノレポかどうか | 言語サーバーの側の設定の問題。Claude Code側で直すことはなく、編集は妨げられない |
| プラグインを入れたのに反映されない | インストール完了時のメッセージ | /reload-pluginsが必要と出ていれば実行する。反映されないままなら、新しいセッションを始める |
メモリを多く使うとき
rust-analyzerやpyrightのような言語サーバーは、プロジェクト全体を読み込んで索引を作ります。そのため、プロジェクトが大きいと、起動後しばらくメモリの使用量が増えます。公式ドキュメントでは、重くて困るときは/plugin disable <プラグイン名>でそのプラグインを止め、Claudeの組み込みの検索ツールに頼るように案内しています。LSPがなくても、Claude Codeの基本の動作には影響しません。
モノレポで、存在するはずのimportが警告される
複数のパッケージを1つのリポジトリに入れている場合、言語サーバーがそのワークスペースの構成を知らないと、社内のパッケージを「見つからない」と報告することがあります。公式ドキュメントでは、これはClaude Code側で直すものではなく、診断が出ていてもClaudeのコード編集は止まらないと説明されています。警告が気になるときは、言語サーバー側のワークスペースの設定を見直してください。
チームや会社で使うときの注意

1人で試す分には、ここまでの手順で足ります。複数人や社内で使うときは、次の点を決めておくと混乱を防げます。
全員に同じプラグインを使わせる
リポジトリのメンバー全員に同じプラグインを有効にしたいときは、プロジェクト範囲のプラグインにします。公式ドキュメントでは、.claude/settings.jsonのenabledPluginsに入れてコミットする方法が案内されています。
ただし、この設定を共有しても、メンバーのパソコンにプラグインが自動で入るわけではありません。各メンバーがclaude plugin install <名前>@<マーケットプレイス名> --scope projectを1回実行する必要があります。さらに、言語サーバーの実行ファイルも、各メンバーのパソコンにそれぞれ入れる必要があります。READMEやチームの手順書に、入れる言語サーバーとコマンドを書いておくと、新しく入った人も迷いません。
クラウドのセッションでは動かない
公式ドキュメントでは、Claude Codeのクラウドのセッション(Webなど)では、プラグインの言語サーバーは起動しないと明記されています。そのため、クラウドではLSPツールは使えず、診断やコードの移動の機能も得られません。ターミナルのセッションでだけ使える機能です。
権限とセキュリティ
LSPツールの読み取りは、Readの権限ルールの対象です。たとえば、Read(~/secrets/**)のような拒否ルールは、LSPツールにも効きます。ただし、プラグインが起動する言語サーバー自体は、Claudeのツール呼び出しではないため、Claude Codeの権限ルールやサンドボックスの対象外で、ユーザーの権限で動きます。
プラグインは、フックや言語サーバーなど、パソコン上でコードを動かせる部品を含められます。公式ドキュメントでも、導入前にプラグインの内容を確認するよう勧められています。公式マーケットプレイスのclaude-plugins-officialから入れる場合でも、詳細画面の「Will install」の欄で、何が追加されるかを見てから入れましょう。
ネットワークが制限された環境
公式マーケットプレイスは、GitHubで公開されています。社内のネットワークでGitHubに接続できない場合は、社内のGitサーバーやローカルのパスにマーケットプレイスを追加する方法が案内されています。
チームで広げる前に、1人で試す
いきなり全員に入れるより、まず1人が1つの言語で試して、診断が出るかと、メモリの使い方を確かめるのがおすすめです。重くなる場合は、プラグインを止められることも先に共有しておきましょう。
よくある質問
LSPとは何の略ですか?
Language Server Protocolの略です。エディタとプログラミング言語ごとの言語サーバーが情報をやりとりするための共通の決まりで、Claude Codeもこの仕組みを使って言語サーバーにつながります。
LSPは無料で使えますか?
公式ドキュメントのLSPの説明に、追加料金の記載はありません。プラグインはAnthropicの公式マーケットプレイスから入れ、言語サーバーは各言語のツールを自分で入れる形です。言語サーバーの入手方法や条件は、各ツールの提供元の案内に従ってください。Claude Code自体の利用には、ご自身のプランの条件が適用されます。
LSPを入れないと、Claude Codeは使えませんか?
入れなくても使えます。LSPは追加の機能で、入れない場合は、Claudeが検索ツールでファイルを探して作業します。
どの言語でも使えますか?
公式のプラグインがあるのは、C・C++、C#、Go、Java、Kotlin、Liquid、Lua、PHP、Python、Ruby、Rust、Swift、TypeScript・JavaScriptです。それ以外の言語でも、言語サーバーがあれば.lsp.jsonを書いたプラグインでつなげます。
プラグインを入れたのに、診断が出ません
まず、対象の拡張子のファイルをClaudeが編集したかを確認してください。言語サーバーは、そのときに初めて起動します。それでも出ないときは、/pluginのErrorsタブでExecutable not found in $PATHが出ていないかを確認し、言語サーバーを入れて新しいセッションを始めます。
診断の内容はどこで見られますか?
会話の画面には「Found N new diagnostic issues」という件数のまとめだけが表示されます。内容を読むには、Ctrl+Oを押します。
LSPの提案が出なくなりました
「Disable all LSP recommendations」を選んだか、提案を5回無視した可能性があります。~/.claude.jsonのlspRecommendationDisabledとlspRecommendationIgnoredCountを消すと、また出るようになります。
Webやクラウドのセッションでも使えますか?
使えません。クラウドのセッションでは、Claude Codeはプラグインの言語サーバーを起動しないため、LSPツールは動かないと公式ドキュメントに書かれています。
動作が重くなりました。どうすればいいですか?
言語サーバーはプロジェクト全体を読み込むため、大きなプロジェクトではメモリを多く使います。/plugin disable <プラグイン名>で止めて、Claudeの標準の検索で作業できます。
LSPで、どのくらい精度が上がりますか?
公式ドキュメントには、精度や速度の向上を示す数値は載っていません。公式で説明されているのは、編集後に自動で診断が届くことと、シンボルでコードを調べられることです。
まとめ
この記事のまとめ
- Claude CodeのLSPは、言語サーバーにつなぎ、編集後のエラーの自動受け取りと、シンボルでのコード検索を可能にする機能
- 公式プラグインがあるのは、Python、TypeScript・JavaScript、Go、Rustなど13の言語。プラグインに言語サーバー本体は含まれない
- 手順は、言語サーバーを入れる、PATHを確認する、
/plugin installでプラグインを入れる、の順 - 言語サーバーは、対象のファイルを初めて編集したときに起動する。診断の行が出なければ、
/pluginのErrorsタブを見る - 公式にない言語は、
.lsp.jsonを書いたプラグインで足せる。クラウドのセッションでは動かない - チームで使うときは、プラグインと言語サーバーを各自のパソコンに入れる必要がある
LSPは、Claude Codeが直したコードのエラーを、人が実行する前に見つけるための機能です。まずは使っている言語のプラグインを1つ入れ、診断が出るかを確かめるところから始めてみてください。
チームで使う設定のそろえ方や、社内の開発の進め方にClaude Codeを組み込む段階では、決めることが一気に増えます。INTERCREATE JAPANでは、Claude Code・Codexの導入から、社内で使い続けられる仕組みづくりまでをお手伝いしています。
参考・出典
- Code intelligence plugins(Claude Code ドキュメント)
- Tools reference「LSP tool behavior」(Claude Code ドキュメント)
- Plugin components「LSP servers」(Claude Code ドキュメント)
- Plugin manifest reference「lspServers」(Claude Code ドキュメント)
- Troubleshoot plugins(Claude Code ドキュメント)
- Install plugins(Claude Code ドキュメント)
- Plugin security and trust(Claude Code ドキュメント)
- claude-plugins-official(GitHub)
INTERCREATE JAPAN