日本語
ドキュメント
LSPサーバー

LSP Servers

OpenCode はお使いの LSP サーバーと連携します。

OpenCode は、LLM がコードベースとやり取りできるように、Language Server Protocol (LSP) と連携できます。診断情報を使って LLM にフィードバックを提供します。


Built-in

OpenCode には、人気のある言語向けの組み込み LSP サーバーがいくつか付属しています:

LSP ServerExtensionsRequirements
astro.astroAstro プロジェクト向けに自動インストール
bash.sh, .bash, .zsh, .kshbash-language-server を自動インストール
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++C/C++ プロジェクト向けに自動インストール
csharp.cs, .csx.NET SDK がインストール済み
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp コマンドが利用可能
dart.dartdart コマンドが利用可能
deno.ts, .tsx, .js, .jsx, .mjsdeno コマンドが利用可能(deno.json/deno.jsonc を自動検出)
elixir-ls.ex, .exselixir コマンドが利用可能
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueプロジェクトに eslint 依存関係がある
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK がインストール済み
gleam.gleamgleam コマンドが利用可能
gopls.gogo コマンドが利用可能
hls.hs, .lhshaskell-language-server-wrapper コマンドが利用可能
jdtls.javaJava SDK (version 21+) がインストール済み
julials.jljuliaLanguageServer.jl がインストール済み
kotlin-ls.kt, .ktsKotlin プロジェクト向けに自動インストール
lua-ls.luaLua プロジェクト向けに自動インストール
nixd.nixnixd コマンドが利用可能
ocaml-lsp.ml, .mliocamllsp コマンドが利用可能
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteプロジェクトに oxlint 依存関係がある
php intelephense.phpPHP プロジェクト向けに自動インストール
prisma.prismaprisma コマンドが利用可能
pyright.py, .pyipyright 依存関係がインストール済み
razor.razor, .cshtml.NET SDK と VS Code の C# 拡張機能がインストール済み
ruby-lsp (rubocop).rb, .rake, .gemspec, .rurubygem コマンドが利用可能
rust.rsrust-analyzer コマンドが利用可能
sourcekit-lsp.swift, .objc, .objcppswift がインストール済み(macOS では xcode
svelte.svelteSvelte プロジェクト向けに自動インストール
terraform.tf, .tfvarsGitHub リリースから自動インストール
tinymist.typ, .typcGitHub リリースから自動インストール
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsプロジェクトに typescript 依存関係がある
vue.vueVue プロジェクト向けに自動インストール
yaml-ls.yaml, .ymlRed Hat の yaml-language-server を自動インストール
zls.zig, .zonzig コマンドが利用可能

LSP が有効になっている場合、上記のファイル拡張子のいずれかが検出され、要件が満たされると、サーバーが起動します。

注記: OPENCODE_DISABLE_LSP_DOWNLOAD 環境変数を true に設定すると、LSP サーバーの自動ダウンロードを無効にできます。


How It Works

LSP が有効になっていて opencode がファイルを開くと、opencode は次のことを行います:

  1. ファイル拡張子を、有効なすべての LSP サーバーと照合します。
  2. まだ実行されていない場合は、適切な LSP サーバーを起動します。

Configure

opencode 設定の lsp セクションを通じて、LSP サーバーを有効化・カスタマイズできます。

すべての組み込み LSP サーバーを有効にするには、lsptrue に設定します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": true
}

組み込みサーバーを有効にしたまま、オーバーライドやカスタムサーバーを設定するには、オブジェクトを使用します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {}
}

設定された各 LSP サーバーのエントリは、次の項目をサポートしています:

サーバーのみを無効化する場合を除き、サーバーのエントリには command が必要です。

PropertyTypeDescription
disabledbooleanLSP サーバーを無効にするには true に設定します
commandstring[]LSP サーバーを起動するためのコマンド
extensionsstring[]この LSP サーバーが処理すべきファイル拡張子
envobjectサーバー起動時に設定する環境変数
initializationobjectLSP サーバーに送信する初期化オプション

いくつか例を見てみましょう。


Environment variables

env プロパティを使って、LSP サーバーの起動時に環境変数を設定します:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "rust": {
      "command": ["rust-analyzer"],
      "env": {
        "RUST_LOG": "debug"
      }
    }
  }
}

Initialization options

initialization プロパティを使って、LSP サーバーに初期化オプションを渡します。これらは LSP の initialize リクエスト中に送信される、サーバー固有の設定です:

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

注記: 初期化オプションは LSP サーバーによって異なります。利用可能なオプションについては、お使いの LSP サーバーのドキュメントを確認してください。


Disabling LSP servers

lsp が省略されると、すべての LSP サーバーが無効になります。別の設定で有効になった後にすべての LSP サーバーを無効にするには、lspfalse に設定します:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": false
}

特定の LSP サーバーを無効にするには、disabledtrue に設定します:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "typescript": {
      "disabled": true
    }
  }
}

Custom LSP servers

コマンドとファイル拡張子を指定して、カスタム LSP サーバーを追加できます:

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

Additional Information

PHP Intelephense

PHP Intelephense は、ライセンスキーを通じてプレミアム機能を提供します。次の場所のテキストファイルにキー(のみ)を配置することで、ライセンスキーを提供できます:

  • macOS/Linux の場合: $HOME/intelephense/license.txt
  • Windows の場合: %USERPROFILE%/intelephense/license.txt

ファイルには、追加の内容を含めずライセンスキーのみを記載してください。