OpenCode LSP 가이드

OpenCode LSP란? 활성화 방법과 비활성화된 서버 해결하기

핵심은 간단합니다. OpenCode LSP는 프로젝트를 이해하는 언어 서버를 코딩 agent에 연결합니다. 세션에서 진단, 정의, 참조, 심볼 같은 언어 정보를 사용할 수 있게 됩니다. LSP는 MCP가 아니며 formatter나 테스트를 대신하지 않습니다. 공식 스키마를 확인하고 확장자와 명령을 맞춘 뒤 낮은 위험의 작업으로 검증하세요.

핵심은 간단합니다. OpenCode LSP는 프로젝트를 이해하는 언어 서버를 코딩 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의 약자입니다. 언어 서버는 프로젝트 옆에서 실행되며 진단, 심볼, 정의, 참조, hover 정보를 제공합니다. OpenCode는 파일을 단순한 텍스트로만 다루지 않고 이 정보를 세션에서 활용할 수 있습니다.

실제 이점은 컨텍스트입니다. TypeScript 서버가 import 관계를 이해하면 agent가 타입 오류나 이름 변경을 더 구체적으로 판단할 수 있습니다. 그래도 서버가 없거나 프로젝트를 읽지 못하거나 별도 설정이 필요할 수 있습니다. 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진단이나 심볼이 반환됨로그와 구성

최소 lsp 설정부터 추가하기

저장소 전체가 공유할 LSP 결정은 검토 가능한 프로젝트 설정에 둡니다. 개인 실험은 명령, 확장자, 프로젝트 root를 파악할 때까지 전역 설정에 두세요. JSONC 가이드는 범위와 Schema를 다루며 이 페이지는 언어 서버 동작에 집중합니다.

큰 목록보다 작은 항목이 디버깅하기 쉽습니다. 알아보기 쉬운 이름, 명시적인 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 상태가 분명한 저장소에서 파일 하나를 열고 심볼, 정의, 진단을 읽기 전용으로 요청합니다. 에디터, 컴파일러, 신뢰하는 서버의 결과와 비교할 수 있어야 합니다.

읽기가 성공하면 작고 되돌릴 수 있는 변경을 한 번 하고 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를 살핍니다. 처음만 느리다면 큰 저장소를 인덱싱하는 중일 수 있습니다.

권한은 좁게 유지합니다. LSP에는 프로세스와 프로젝트 컨텍스트가 필요하지만 넓은 shell, 추가 MCP 도구, 자동 승인이 필요한 것은 아닙니다. 계층이 바뀌면 권한과 MCP 가이드를 사용하세요.

OpenCode LSP 문제 해결 네 단계: command, extension, enabled, diagnostics
command, 확장자, 활성화 상태, 진단 순서로 점검합니다.
증상가능성이 높은 계층첫 조치
모두 비활성화우선순위 또는 lsp: false최종 설정을 찾는다
한 서버만 비활성화서버 flag이름과 disabled를 확인한다
진단 없음확장자 또는 프로세스확장자를 맞추고 명령 실행
첫 결과가 느림인덱스 또는 workspace작은 repo와 로그를 시험
에디터에서는 동작root 또는 설정 차이editor, Git, OpenCode root 비교

LSP, MCP, formatter, VS Code는 서로 다른 계층

LSP는 저장소의 언어 지능을 제공하고 MCP는 외부 도구와 데이터를 연결합니다. formatter는 스타일을 바꾸고 테스트는 실행 가능한 증거를 줍니다. VS Code가 진단을 보여도 OpenCode가 같은 서버와 root를 쓰고 있다는 뜻은 아닙니다.

문제에 맞는 페이지를 연결하세요. MCP는 로컬·원격 도구 서버, VS Code는 에디터와 터미널, 권한 페이지는 승인을 다룹니다. 이 구분이 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를 정의하고 문서에 있는 초기화만 추가한 뒤 작은 저장소에서 시험하세요.

VS Code에서는 되는데 OpenCode에서는 안 되는 이유는 무엇인가요?

root, command, 확장자, runtime, 설정 파일이 다를 수 있습니다. 입력을 비교하세요.

확인한 공식 출처

OpenCode LSP 참고 자료

공식 LSP 페이지를 2026년 8월 10일 확인했습니다. command, 확장자, 설정 필드는 바뀔 수 있습니다.