OpenCode LSP ガイド

OpenCode の LSP とは?有効化と無効化されたサーバーの直し方

結論から言うと、OpenCode の LSP はコードを理解する言語サーバーを coding agent に接続する仕組みです。診断、定義、参照、シンボルなどの言語情報をセッションで使えるようになります。LSP は MCP でも formatter でもありません。公式スキーマを確認し、拡張子とコマンドを合わせ、低リスクの作業で検証してください。

結論から言うと、OpenCode の LSP はコードを理解する言語サーバーを coding agent に接続する仕組みです。診断、定義、参照、シンボルなどの言語情報をセッションで使えるようになります。LSP は MCP でも formatter でもありません。公式スキーマを確認し、拡張子とコマンドを合わせ、低リスクの作業で検証してください。

OpenCode の LSP とは と検索する人は、略語だけでなく、何が変わるのか、診断が出ない理由、設定場所、無効化されたサーバーの直し方を知りたいはずです。このガイドではその判断をまとめ、インストール、Provider、MCP の話とは分けて説明します。

2026年8月10日に確認した OpenCode 公式 LSP ページのタイトルは LSP Servers です。lsp 設定、command と extensions、初期化オプション、全体の無効化、個別サーバーの無効化、カスタムサーバーの例が掲載されています。具体的なコマンドは各サーバーの公式ドキュメントで確認してください。

OpenCode の LSP がコードワークスペースを言語サーバーと診断へ接続する図
LSP により言語サーバーの診断とコードの関係を OpenCode のワークフローで利用できます。

OpenCode の LSP とは?言語コンテキストを追加する層

LSP は Language Server Protocol の略です。言語サーバーはプロジェクトの横で動き、診断、シンボル、定義、参照、ホバー情報などを提供します。OpenCode はファイルを単なるテキストとして扱うのではなく、その情報をセッションで利用できます。

実用上のメリットはコンテキストの精度です。TypeScript サーバーが import の関係を理解していれば、agent は型エラーや rename をより具体的に検討できます。ただし、サーバーが起動しない、プロジェクトを読み込めない、言語パッケージに固有設定が必要ということもあります。LSP はテストや diff の確認を置き換えません。

理解の仕方

OpenCode は利用者、LSP サーバーは言語の専門家、リポジトリは事実の基準と考えてください。権限やモデルを変える前に、失敗している層を確認します。

提供するもの置き換えられないもの
LSP言語診断、シンボル、定義、参照テスト、formatter、レビュー
MCP外部ツールとデータ言語サーバー
Formatterスタイルと整形意味的な診断
Provider/モデル推論と生成プロジェクトの toolchain

OpenCode が LSP サーバーを選ぶ仕組み

LSP の項目には実行可能なコマンドと、ファイル拡張子との対応が必要です。コマンドがサーバーを起動し、拡張子の一覧が対象ファイルを示します。実行ファイル、引数、導入方法はサーバーのドキュメントに従い、パッケージ名を推測しないでください。

まず小さなリポジトリで一つの言語を試します。対象拡張子のファイルを開き、プロセスが起動することを確認し、読み取り専用の質問をします。拡張子が一致しないと、サーバーが正常でも OpenCode がファイルに接続できません。

opencode.json から LSP サーバーと診断へ流れる OpenCode 設定
拡張子を対応させ、サーバーを起動し、言語情報の結果を確認する順番です。
確認点確認できる証拠最初に見る場所
Command引数付きで実行できるPATH、runtime、パッケージ、stderr
Extensionファイルが項目に一致するサーバーが記載する拡張子
Workspace正しいプロジェクトが開くGit root と設定
Result診断やシンボルが返るログと OpenCode 設定

最小限の lsp 設定から始める

リポジトリ全体で共有する LSP の決定は、レビューできるプロジェクト設定に置きます。個人の実験は、コマンド、拡張子、プロジェクトの root が分かるまでグローバル設定に残します。設定の範囲と Schema は既存の JSONC ガイドを参照し、このページではサーバーの動作に集中します。

大きな一覧より小さな項目の方が切り分けやすくなります。名前を分かりやすくし、command 配列を明示し、対応する拡張子だけを書きます。初期化オプションは基本プロセスが動いてから追加します。JSON が正しくても実行ファイルや workspace が違う可能性があります。

opencode.json の例
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "typescript": {
      "command": ["typescript-language-server", "--stdio"],
      "extensions": [".ts", ".tsx"]
    }
  }
}

Schema の形を示す例です。実行ファイルと拡張子は公式のサーバー資料で確認してください。

LSP サーバーを有効化・無効化・カスタマイズする

現在の公式ドキュメントでは、lsp を省略するとすべての LSP サーバーが無効になります。他の設定で有効になったサーバーを全て止めるには lsp: false、一つだけ止めるには disabled: true を使います。遅い、出力が多い、リポジトリに合わない場合に役立ちます。

カスタムサーバーは、通常の設定にない言語や拡張子を扱うためのものです。最初に command と extensions を定義し、初期化は公式資料にある場合だけ追加します。一度に一つだけ変更し、動作した設定を rollback 用に残してください。

無効化とカスタム設定
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": false
}

{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "custom-lsp": {
      "command": ["custom-lsp-server", "--stdio"],
      "extensions": [".custom"],
      "initialization": { "preferences": { "mode": "strict" } }
    }
  }
}

カスタムコマンドは placeholder です。公式の値に置き換え、秘密情報を Git に入れないでください。

低リスクの作業で OpenCode LSP を確認する

最初から大きなモジュールを書き換えないでください。Git の状態が分かるリポジトリでファイルを一つ開き、シンボル、定義、診断を読み取り専用で尋ねます。エディター、compiler、信頼できるサーバーの結果と比較できる内容にします。

読み取りが成功したら、小さく戻せる変更を一つ行い diff を確認します。OS、command、拡張子、root、テスト用 prompt を記録しておくと、次回も同じ条件で再現できます。

  1. 確認ブランチと作業ツリーを確認する。
  2. 一致設定した拡張子のファイルを開く。
  3. 読み取りシンボル、定義、参照、診断を尋ねる。
  4. 編集小さく戻せる変更をして diff を見る。
  5. 記録command、モデル、サーバー、rollback を残す。

opencode lsps are disabled と診断が出ない問題を直す

LSP が無効だと表示されたら、再インストールの前に設定の優先順位を確認します。別のファイルが lsp: false を指定している、プロジェクトにサーバー名がない、個別の disabled が有効という可能性があります。実際のプロジェクトフォルダーと最終的に効く設定を比べます。

有効なのに診断が出ない場合は command と拡張子を確認します。同じ shell で起動し、runtime と PATH、lockfile、compiler 設定、workspace root を調べます。最初だけ遅いなら大きなリポジトリの index 作成かもしれません。

権限は狭く保ちます。LSP に必要なのはプロセスとプロジェクトの文脈であり、広い shell、MCP の追加、auto approval ではありません。層が変わったら権限と MCP のガイドを参照します。

OpenCode LSP の排錯ポイント:command、extension、enabled、diagnostics
command、拡張子、有効状態、診断の順に確認します。
症状可能性が高い層最初の修正
全て無効優先順位または lsp: false最終設定を見つける
一つだけ無効サーバーの flag名前と disabled を確認
診断がない拡張子またはプロセス拡張子を合わせ command を実行
最初だけ遅いindex または workspace小さい repo とログを試す
エディターでは動くroot または設定が違うeditor、Git、OpenCode の root を比較

LSP、MCP、formatter、VS Code は別の層

LSP はリポジトリ内の言語インテリジェンス、MCP は外部ツールやデータ、formatter はスタイル、テストは実行できる証拠を担当します。VS Code が診断を表示していても、OpenCode が同じサーバーや root を使っているとは限りません。

症状に合ったページを使います。MCP はローカルとリモートのツールサーバー、VS Code はエディターと terminal、permissions は承認範囲を扱います。この切り分けで OpenCode の LSP の意図を保てます。

OpenCode LSP よくある質問

OpenCode の LSP とは?

Language Server Protocol の層で、言語サーバーの診断、シンボル、定義、参照を OpenCode が使えるようにします。

OpenCode で LSP を有効にするには?

対応する command と拡張子を lsp に追加し、読み取り専用の質問で command と root を確認します。

OpenCode の LSP サーバーが無効なのはなぜ?

現在の公式ドキュメントでは lsp を省略すると全て無効です。lsp: falsedisabled: true も確認してください。

LSP は MCP の代わりになりますか?

いいえ。LSP は言語情報、MCP は外部ツールとデータを扱います。設定と権限の境界も別です。

カスタム LSP サーバーを追加できますか?

できます。lsp に command と extensions を書き、公式資料にある場合だけ初期化を追加し、小さな repo で試します。

VS Code では動くのに OpenCode では動かないのはなぜ?

root、command、拡張子、runtime、設定ファイルが違う可能性があります。入力を比較してください。

確認した公式ソース

OpenCode LSP 参考資料

公式 LSP ページを2026年8月10日に確認しました。command、拡張子、設定項目は変わる可能性があります。