lsp-setup について
GitHub Copilot CLI 向けに Language Server Protocol サーバーをインストール、設定するユーティリティスキルです。言語と設定範囲の選択から、設定の統合と検証までを案内し、一般的な IDE 設定は対象外です。
主な機能
- 01言語と設定範囲の選択
- 02サーバー設定手順の確認
- 03言語サーバーのインストール
- 04ユーザーまたはリポジトリ設定の統合
- 05バイナリと JSON 設定の検証
活用シーン
- 01Copilot CLI でコードインテリジェンスを有効化
- 02Java のコードナビゲーション設定
- 03リポジトリ設定への言語サーバー追加
- 04既存 LSP 設定の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill lsp-setupインストール後、Claude Code で/lsp-setupを入力して読み込まれたか確認します。
同梱ファイルreferences/java-jdtls.mdreferences/lsp-servers.md
詳細
GitHub Copilot CLI の LSP セットアップ
ユーティリティスキル — Copilot CLI 用の Language Server Protocol サーバーをインストールして設定します。 使用する場合:「LSP をセットアップ」「言語サーバーをインストール」「Java 用に LSP を設定」「TypeScript LSP を追加」「コードインテリジェンスを有効化」「定義へ移動したい」「参照の検索が機能しない」「コードをより深く理解したい」 使用しない場合:一般的なコーディングタスク、IDE/エディターの LSP 設定、Copilot CLI 以外のセットアップ
ワークフロー
- 言語を尋ねる —
ask_userを使って、LSP サポートが必要なプログラミング言語を尋ねます - OS を検出する —
uname -sを実行するか、$env:OS/%OS%を確認して、macOS、Linux、Windows のいずれかを特定します - LSP サーバーを調べる — 既知のサーバー、インストールコマンド、設定例について
references/lsp-servers.mdを読みます(Java の場合はreferences/java-jdtls.mdも読みます) - 設定の適用範囲を尋ねる —
ask_userを使って、ユーザーレベル(~/.copilot/lsp-config.json)とリポジトリレベル(.github/lsp.json)のどちらに設定するかを尋ねます - サーバーをインストールする — 検出した OS に適したインストールコマンドを実行します
- 設定を書き込む — 新しいサーバーエントリを選択した設定ファイルにマージします(ユーザーレベルの場合は
~/.copilot/lsp-config.json、リポジトリレベルの場合は.github/lsp.json)。ファイルが存在しない場合は作成し、既存のエントリは保持します。 - 検証する — LSP バイナリが
$PATH上にあることと、設定ファイルが有効な JSON であることを確認します
設定形式
Copilot CLI はユーザーレベルまたはリポジトリレベルの場所から LSP 設定を読み込みます。リポジトリレベルの設定はユーザーレベルの設定より優先されます。
- ユーザーレベル:
~/.copilot/lsp-config.json - リポジトリレベル:
.github/lsp.json(リポジトリのルートにあるlsp.jsonは読み込まれません。Copilot CLI 1.0.95 では、copilot lsp listは.github/lsp.jsonのサーバーを一覧表示しましたが、ルートのlsp.jsonのサーバーは表示しませんでした)
JSON の構造:
{
"lspServers": {
"<server-key>": {
"command": "<binary>",
"args": ["--stdio"],
"fileExtensions": {
".<ext>": "<languageId>",
".<ext2>": "<languageId>"
}
}
}
}
主なルール
commandはバイナリ名($PATH上にある必要があります)または絶対パスです。- 標準 I/O トランスポートを使用するため、
argsにはほとんどの場合"--stdio"を指定します。 fileExtensionsは、各ファイル拡張子(先頭にドットを付けます)を 言語 ID に対応付けます。lspServersでは複数のサーバーを共存させることができます。- 既存のファイルにマージする際は、他のサーバーエントリを決して上書きしないでください。対象言語のキーのみを追加または更新します。
動作
- 言語または適用範囲を選ぶようユーザーに尋ねるときは、必ず
choicesを指定してask_userを使用します。 - 言語が
references/lsp-servers.mdに記載されていない場合は、ウェブで「 LSP server」を検索し、手動設定を案内します。 - パッケージマネージャーを利用できない場合(例:macOS に Homebrew がない場合)は、参照ファイルに記載されている代替インストール方法を提案します。
- インストール後、
which <binary>(Windows の場合はwhere.exe)を実行して、バイナリにアクセスできることを確認します。 - 書き込む前に、最終的な設定 JSON をユーザーに提示します。
- 設定ファイルがすでに存在する場合は、まず読み込んでからマージし、既存の内容を上書きしないでください。
検証
セットアップ後、次の手順をユーザーに伝えます。
- Copilot CLI を終了するには
/exitと入力します。次回起動時に新しい LSP 設定を読み込むため、必須の手順です - 設定した言語のファイルがあるプロジェクトで
copilotを再起動します /lspを実行してサーバーの状態を確認します- 定義へ移動やホバーなどのコードインテリジェンス機能を試します
Java
Java のセマンティックナビゲーションでは、サーバーの設定後は grep/view よりも lsp ツール(goToDefinition、findReferences、hover、incomingCalls)を優先してください。Java では LSP は任意であり、ビルドや実行時の診断に必須ではありません。セットアップの詳細とトラブルシューティングについては references/java-jdtls.md を参照してください。