한눈에 보기
- 이 글에서 클로드 코드(Claude Code)가 고친 코드의 타입 오류를 바로 보고, 글자 검색 대신 이름으로 코드를 찾게 해 주는 LSP 플러그인(문서 이름은 코드 인텔리전스 플러그인)을 처음 까는 법부터 .lsp.json 직접 쓰기까지 옮겼어요.
- 순서 언어 서버 프로그램 깔기 → PATH 에 잡히는지 확인 → /plugin install 언어-lsp@claude-plugins-official → 일부러 오류를 만들게 해서 “Found N new diagnostic issues” 줄 보기.
- 주의 플러그인에는 언어 서버가 들어 있지 않아요. 따로 깔아야 해요. 클라우드 세션에서는 돌지 않아요. 글이나 엑셀만 다룬다면 안 깔아도 돼요.
- 읽는 법 “처음이라면”만 따라 해도 오류를 Claude 가 스스로 봐요. “익숙해졌다면”은 얻는 것과 메모리·권한, “더 깊이”는 공식 플러그인이 없는 언어를 연결하는 .lsp.json 이에요.
이 글 순서
Claude 에게 코드를 고치게 하면 가끔 이런 일이 생겨요. 다 고쳤다고 했는데 막상 돌려 보니 함수 이름 한 글자가 틀려 있거나, 숫자 자리에 글자를 넣어 놓았어요. VS Code 같은 편집기라면 그 자리에 빨간 밑줄이 바로 그어졌을 텐데, 터미널에서 일하는 Claude 는 그 밑줄을 못 봐요. LSP 플러그인은 그 빨간 밑줄을 Claude 도 보게 해 주는 장치예요.
클로드 코드 공식 문서의 코드 인텔리전스 플러그인(Code intelligence plugins), 플러그인 구성 요소의 LSP 서버, 매니페스트 참조, 도구 참조, 플러그인 문제 해결, 변경 기록을 2026년 10월 9일에 읽고 옮겼어요. 캡처는 한국어 문서로 했고 내용은 영어 문서와 맞춰 봤어요. 터미널 그림은 클로드 코드 2.1.292 가 깔린 윈도우 PC 의 PowerShell 5.1 에서 같은 날 돌린 출력이에요. 실제 설정을 건드리지 않으려고 따로 만든 테스트 폴더 안에서만 돌렸고, 끝난 뒤 지웠어요. 그림 속 경로는 C:\Users\사용자이름\연습폴더 로 바꿔 적었어요.

LSP 플러그인이 뭔가요
단어부터 풀게요. 클로드 코드는 터미널(마우스 대신 글자로 컴퓨터에 일을 시키는 까만 창)에서 돌아가는 Anthropic 의 AI 도구예요. 플러그인은 클로드 코드에 기능을 더하는 패키지고요. 플러그인을 깔고 끄는 기본은 클로드 코드 플러그인 설치 글에 따로 있어요.
LSP 는 Language Server Protocol 의 줄임말이에요. 언어 서버(language server)는 파이썬이나 타입스크립트 같은 프로그래밍 언어 하나를 잘 아는 도우미 프로그램이고, LSP 는 편집기와 그 도우미가 말을 주고받는 약속이에요. 편집기에 뜨는 빨간 밑줄, “정의로 이동”, “이 이름이 쓰인 곳 모두 찾기”가 대부분 이 도우미가 해 주는 일이에요. 맞춤법 검사기를 떠올리면 쉬워요. 글을 쓰는 사람(Claude)과 별도로, 틀린 곳만 짚어 주는 검사기가 옆에 붙는 거예요.
문서는 이 플러그인이 “편집기가 가진 라이브 진단 및 정의로 이동 기능”을 Claude 에게 준다고 적었어요. 진단(diagnostics)은 언어 서버가 찾아낸 오류와 경고 목록을 말해요. 그래서 Claude 가 자기가 고친 곳에서 생긴 타입 오류나 빠진 임포트(다른 파일의 기능을 불러오는 줄)를 빌드(프로그램을 실제로 묶어 보는 일) 전에 잡고, 정의와 참조를 글자 검색이 아니라 기호(함수·변수 같은 코드 속 이름)로 찾는다고요.


누구에게 필요한가
솔직히 말하면 코드를 Claude 에게 고치게 하는 분께 맞는 기능이에요. 회의록 정리, 엑셀 표 묶기, 글 다듬기처럼 코드가 없는 일만 맡긴다면 깔 이유가 없어요. 반대로 비개발자라도 Claude 에게 “사진 파일 이름을 날짜순으로 바꾸는 파이썬 스크립트 만들어 줘” 같은 요청을 자주 한다면 쓸모가 있어요. 오타 하나 때문에 스크립트가 멈추는 일을 Claude 가 먼저 잡거든요.
초급 개발자에게는 더 반가운 기능이에요. 문서는 이걸 “빌드를 실행하기 전에” 잡는다고 적었는데, 고친 뒤 테스트를 돌리고 오류를 붙여 주고 다시 고치게 하는 왕복이 줄어들어요. 파일이 많은 프로젝트라면 함수가 어디 정의돼 있는지 찾느라 파일을 여러 개 읽던 일도 줄어든다고, 큰 코드베이스 문서에 적혀 있어요.
처음이라면: 준비물
필요한 건 셋이에요. 클로드 코드가 깔려 있어야 하고(아직이라면 윈도우 설치 글), 내가 쓰는 언어의 언어 서버 프로그램이 있어야 하고, 터미널을 열 줄 알면 돼요. 이 글은 타입스크립트·자바스크립트용 typescript-lsp 를 예시로 삼고, 파이썬용 pyright-lsp 도 같이 보여 드려요.
공식 플러그인이 있는 언어는 열세 가지예요. C·C++, C#, Go, 자바, 코틀린, 리퀴드, 루아, PHP, 파이썬, 루비, 러스트, 스위프트, 타입스크립트·자바스크립트예요. 리퀴드만 쇼피파이가 관리하고 나머지는 Anthropic 이 관리한다고 적혀 있어요.

표의 바이너리(binary) 칸이 따로 깔아야 할 언어 서버 프로그램 이름이에요. 바이너리는 “실행할 수 있는 프로그램 파일”을 말해요. 플러그인은 “이 프로그램을 이런 명령으로 켜고, 이런 확장자(파일 이름 끝의 .py·.ts 같은 끝부분) 파일을 맡겨라”라는 설정만 들고 있고, 프로그램 자체는 들어 있지 않아요. 이 점을 모르고 플러그인만 깔면 아무 일도 안 일어나요.
언어 서버 깔기
타입스크립트용은 npm 으로 깔아요. npm 은 Node.js(자바스크립트를 컴퓨터에서 돌리는 프로그램)에 딸린 패키지 설치 도구예요. 문서와 플러그인 안내 글에 적힌 명령은 이거예요.
npm install -g typescript-language-server typescript
-g 는 “이 컴퓨터 어디서나 쓰게 깔아라”라는 뜻이에요. 한 가지 미리 알려 드릴 게 있어요. 이 PC 에서 10월 9일에 이 명령대로 깔았더니 typescript 7 이 깔렸고, 언어 서버에 물어보니 빈 답이 왔어요. 그럴 땐 typescript@6 을 같이 깔면 됐어요(아래 “막힐 때” 절). 파이썬용 pyright-lsp 의 안내 글은 npm install -g pyright, pip install pyright, pipx install pyright 셋 가운데 하나를 고르라고 적었어요. 다 깔았으면 그 프로그램이 PATH 에 잡히는지 봐요. PATH 는 “명령 이름만 치면 찾아볼 폴더 목록”이에요. 여기 없는 폴더에 깔리면 이름을 쳐도 못 찾아요.
Get-Command typescript-language-server
typescript-language-server --version
첫 줄은 그 이름의 프로그램이 어느 폴더에서 잡히는지 보여 줘요. 둘째 줄은 버전 숫자를 출력해요. 버전 숫자가 나오면 클로드 코드도 찾을 수 있다는 뜻이에요. 맥·리눅스라면 Get-Command 대신 which 를 써요.

이 PC 에서는 실제 설정을 건드리지 않으려고 -g 대신 테스트 폴더에 깔고(npm install --prefix 시험폴더), 그 PowerShell 창에서만 PATH 앞에 그 폴더를 붙여 확인했어요. 여러분은 문서대로 -g 로 깔면 돼요. 그림처럼 Get-Command 가 typescript-language-server.ps1 과 .cmd 를 같이 찾는 건 npm 이 윈도우에서 실행 파일을 두세 가지 형식으로 만들기 때문이에요. npm 이나 이 .ps1 이 “running scripts is disabled” 로 막히면 PowerShell 실행 정책 문제예요. 이 오류는 윈도우 설치 글에 따로 적어 두었어요.
플러그인 깔기
언어 서버가 잡히면 플러그인을 깔아요. 터미널에서 claude 를 켜고 대화 창에 이렇게 쳐요. typescript-lsp 자리에 표에서 고른 플러그인 이름을 넣으면 돼요.
/plugin install typescript-lsp@claude-plugins-official
@ 뒤의 claude-plugins-official 은 Anthropic 공식 마켓플레이스(플러그인 목록)의 이름이에요. 문서는 대화형 터미널 세션을 처음 켤 때 클로드 코드가 이 마켓플레이스를 자동으로 등록한다고 적었어요. 깔고 나면 확인 글에 “지금 켜졌는지, /reload-plugins 가 필요한지”가 나온다고 해요. /reload-plugins 는 클로드 코드를 껐다 켜지 않고 플러그인을 다시 읽는 명령이에요. VS Code 확장이나 데스크톱 앱에서는 대화 창 명령 대신 그쪽 플러그인 화면에서 깔라고 적혀 있어요.
대화 창 밖, PowerShell 에서 바로 깔 수도 있어요. 다만 문서 문제 해결 쪽에 “claude plugin 셸 명령은 공식 마켓플레이스를 대신 등록해 주지 않는다”고 적혀 있어서, 아직 대화형 세션을 한 번도 안 켠 컴퓨터라면 마켓플레이스부터 더해야 해요.
claude plugin marketplace add anthropics/claude-plugins-official
claude plugin install typescript-lsp@claude-plugins-official
첫 줄은 깃허브의 공식 마켓플레이스 저장소를 내 목록에 더해요. 둘째 줄이 플러그인을 깔아요. 이 PC 의 새 테스트 폴더(대화형 세션을 한 번도 안 켠 상태)에서 마켓플레이스를 더하기 전에 깔아 보니, 문서의 Marketplace “claude-plugins-official” not found 가 아니라 Plugin “typescript-lsp” not found in marketplace “claude-plugins-official” 이 나왔어요. 단어는 달라도 고치는 법은 같아요. 위의 add 한 줄을 치면 됐어요.

깔고 나서 claude plugin details 로 들여다보면 이 플러그인에는 스킬·훅·MCP 서버 없이 LSP 서버 하나만 들어 있어요. 눈여겨볼 건 “Always-on: ~0 tok” 줄이에요. 매 세션 대화에 늘 붙는 토큰이 거의 없다는 뜻이에요. 언어 서버는 클로드 코드 바깥에서 따로 도는 프로그램이라 그래요. 다만 진단이 생기면 그 오류 글은 대화에 들어가니, 오류가 많은 파일을 고칠 때는 그만큼 읽는 양이 늘어요.

잘 도는지 보기
언어 서버는 깔자마자 켜지지 않아요. Claude 가 그 언어의 파일을 처음 고칠 때 켜져요. 그래서 문서는 시험 삼아 “이 파일에 일부러 타입 오류를 하나 만들었다가 고쳐 줘”라고 요청해 보라고 해요. 연습 폴더에서 해 보세요. 진짜 프로젝트에서 하면 고친 걸 되돌리는 수고가 생겨요.
잘 돌면 Claude 가 고친 자리 아래에 Found N new diagnostic issues in M files (ctrl+o to expand) 줄이 뜬다고 적혀 있어요. “새 진단 N개가 파일 M개에서 나왔다”는 뜻이에요. 이 줄이 안 보이면 대화 창에서 /plugin 을 열고 Errors 탭을 보래요. Executable not found in $PATH 줄이 있으면 언어 서버가 PATH 에 없다는 뜻이에요.

이 진단 줄과 Errors 탭은 로그인한 대화 창에서만 보이는 화면이라 이 글에서는 찍지 않았어요. 대신 언어 서버가 Claude 에게 무엇을 돌려주는지, 같은 언어 서버에 직접 물어본 출력을 아래 “익숙해졌다면” 절에 옮겼어요. 요약 줄만으로는 무슨 오류인지 모르니, 직접 읽고 싶으면 Ctrl+O 를 누르라고 적혀 있어요. 대화 기록을 펼쳐 보는 키예요.
추천 창이 뜨면
언어 서버 프로그램은 이미 깔려 있는데 그걸 쓰는 플러그인은 안 깔려 있으면, Claude 가 파일을 고친 뒤 “LSP plugin recommendation”(LSP 플러그인 권장) 창이 뜰 수 있어요. 예전에 npm 이나 pip 로 pyright 를 깔아 둔 분이라면 이 창을 먼저 만날 수 있어요. 한 세션에 한 번만, 처음 맞는 파일에서 뜨고, 클라우드 세션에서는 안 뜬다고 적혀 있어요.

| 고르는 것 | 그러면 | 나중에 |
|---|---|---|
| Yes, install | 내 계정에 깔림 | 새 세션을 켜야 서버가 실행됨 |
| No, not now (Esc) | 창만 닫힘 | 다음 세션에 또 물을 수 있음 |
| Never for this plugin | 그 플러그인만 안 물음 | 다른 언어는 계속 물음 |
| Disable all | 모든 언어 안 물음 | 다시 켜려면 설정 파일 손보기 |
출처: 클로드 코드 문서 Code intelligence plugins 의 권장 대화상자 절. 10월 9일 확인.
조심할 건 그냥 두는 경우예요. 아무것도 안 고르면 30초 뒤 창이 닫히고 “무시함”으로 세는데, 이 숫자는 세션을 넘어 쌓여요. 다섯 번 무시하면 “Disable all”을 고른 것과 똑같이 더는 묻지 않는다고 적혀 있어요. 다시 켜려면 홈 폴더의 .claude.json 에서 lspRecommendationDisabled 와 lspRecommendationIgnoredCount 두 항목을 지우라고 해요. 이 파일은 클로드 코드가 스스로 쓰는 설정 파일이라, 고치기 전에 복사본을 하나 떠 두세요.
익숙해졌다면: 얻는 것
언어 서버가 돌면 Claude 는 두 가지를 얻어요. 하나는 고친 뒤의 진단이에요. Claude 가 그 언어의 파일을 고치거나 새로 쓸 때마다, 언어 서버가 알린 오류와 경고를 받아요. 다른 하나는 LSP 라는 이름의 도구예요. 문서는 이 도구가 읽기 전용이고, 할 수 있는 일을 일곱 가지로 적었어요.

말로만 들으면 감이 안 오니, 이 PC 의 테스트 폴더에서 같은 언어 서버(typescript-language-server)에 직접 물어봤어요. 클로드 코드 화면이 아니라, 클로드 코드가 받는 것과 같은 형식의 답을 언어 서버에게서 바로 받아 본 거예요. 시험 파일 price.ts 에는 숫자 목록을 받는 sum 함수에 글자 “1200” 을 넣은 줄과, total 을 totl 로 잘못 친 줄을 일부러 넣었어요.

첫 묶음이 진단이에요. 9번째 줄 6번째 열에 “글자는 숫자 자리에 못 넣는다”, 10번째 줄에 “totl 이라는 이름은 없다”가 나왔어요. 셋째 줄의 hint 는 “label 을 만들고 안 썼다”는 가벼운 알림이에요. Claude 가 이 파일을 고쳤다면 이런 목록이 대화에 들어와서, 사람이 돌려 보기 전에 Claude 가 먼저 고칠 수 있게 되는 거예요. 둘째 묶음은 “report.ts 에서 호출한 sum 이 어디 정의돼 있나”의 답이고, 셋째 묶음은 total 이 쓰인 자리예요.
비개발자 쪽 예도 하나 볼게요. “사진 폴더의 jpg 파일 이름을 사진_001.jpg 형식으로 바꿔 줘”라고 했을 때 나올 법한 짧은 파이썬 스크립트에 오타 두 개를 넣고, pyright 언어 서버에 물어봤어요.

new_name 을 new_nmae 로 친 것, 글자와 숫자를 + 로 이어 붙인 것을 돌리기 전에 짚었어요. 둘 다 스크립트를 실제로 돌려야 드러나는 오류인데, 파일 이름을 바꾸는 스크립트는 중간에 멈추면 절반만 바뀐 채로 남아요. 이런 일을 맡길 때 진단이 미리 있으면 마음이 놓여요.
글자 검색과 다른 점
LSP 가 없으면 Claude 는 grep 같은 글자 검색으로 코드를 찾아요. grep 은 “이 글자가 든 줄을 모두 찾아라”라는 명령이에요. 같은 테스트 폴더에서 total 을 글자로 찾으면 다섯 줄이 나와요. 주석(설명 글) 한 줄과 글자 “total” 을 담은 줄까지 섞여요. 언어 서버에게 total 이라는 변수가 쓰인 곳을 물으면 진짜로 그 변수인 세 줄만 나와요.

파일 두 개짜리 연습 폴더에서는 별 차이가 아니지만, 파일이 수천 개인 프로젝트라면 이야기가 달라요. 큰 코드베이스 문서는 정의나 호출한 곳을 찾느라 파일을 여러 번 읽고 grep 을 여러 번 돌리던 것을, 언어 서버로 바로 찾아 줄일 수 있다고 적었어요. 읽는 파일이 줄면 대화에 쌓이는 양도 줄어요. 사용량을 아끼는 다른 요령은 프롬프트 캐시 글과 서브에이전트 글에 있어요.
권한과 메모리
LSP 도구는 읽기만 해서, 쓸 때마다 허락을 묻지 않아요. 도구 참조 문서의 표에도 “권한 필요” 칸이 No 로 적혀 있어요. 대신 읽기 막기 규칙은 LSP 에도 걸려요. 권한 규칙의 Read(~/secrets/**) 형식이 Read·Grep·Glob 과 함께 LSP 에도 적용된다고 적혀 있어요. 그러니 이미 비밀 파일 폴더를 Read 막기로 걸어 두었다면 LSP 로도 못 들여다봐요. 규칙 적는 법은 권한 설정 글에 있어요.
언어 서버가 메모리를 많이 먹는 일은 있어요. 문서는 rust-analyzer 와 pyright 같은 서버가 프로젝트 전체를 훑어 색인(찾아보기 목록)을 만든다고 적었어요. 컴퓨터가 버거워하면 그 세션에서 /plugin disable 플러그인이름 으로 끄고, Claude 의 원래 검색 도구로 일하라고 해요. PowerShell 에서는 claude plugin disable 로 끄고 enable 로 다시 켜요.

대화 중에 LSP 플러그인을 켜거나 끄면 대화를 처음부터 다시 읽게 될 수 있어요. 변경 기록에는 2.1.243 버전부터 그럴 때 미리 경고한다고 적혀 있어요. 긴 대화 한가운데서 켜고 끄기보다, 새 세션을 열 때 정해 두는 편이 사용량에 덜 부담돼요.
그 밖에 몇 가지가 더 있어요. 클라우드 세션(claude --cloud 처럼 Anthropic 서버에서 도는 세션)에서는 플러그인 언어 서버가 아예 안 켜져요. claude -p 로 시키는 일에 --bare 를 붙이면 LSP 를 건너뛰고, 설정이 꼬였을 때 쓰는 --safe-mode 도 LSP 서버를 안 불러요. claude -p 는 claude -p 사용법 글에 따로 있어요.
더 깊이: .lsp.json
내 언어가 공식 표에 없으면 플러그인을 직접 만들어 언어 서버를 이을 수 있어요. 플러그인 폴더 맨 위에 .lsp.json 파일을 두고, 서버를 켜는 명령과 맡길 확장자를 적으면 돼요. 문서 예시는 Go 언어 서버예요.

이 파일은 감싸는 필드 없이 “서버 이름: 설정” 형식이에요. command 는 프로그램 이름, args 는 그 프로그램에 줄 옵션, extensionToLanguage 는 “이 확장자는 이 언어”를 짝지은 표예요. extensionToLanguage 에는 점으로 시작하는 확장자가 하나 이상 있어야 해요.
이 PC 테스트 폴더에서 공식 플러그인이 없는 JSON 파일용으로 하나 만들어 봤어요. JSON 은 중괄호 { } 안에 “이름”: “값” 식으로 적는 설정 파일 형식이에요. 쉼표 하나만 틀려도 통째로 안 읽혀서, 비개발자도 설정 파일을 고치다 자주 걸려요. 언어 서버는 VS Code 의 JSON 서버를 따로 떼어 낸 vscode-langservers-extracted 패키지의 vscode-json-language-server 를 썼어요.
{
"json": {
"command": "vscode-json-language-server",
"args": ["--stdio"],
"extensionToLanguage": { ".json": "json" }
}
}
--stdio 는 “글자를 표준 입출력으로 주고받아라”라는 옵션이에요. 클로드 코드는 모든 서버를 이 방식으로 돌린다고 적혀 있어요. 이 파일을 json-lsp 플러그인 폴더에 넣고, 플러그인 마켓플레이스 만들기 글처럼 내 마켓플레이스 폴더에 담아 더하고 깔았어요.

그리고 같은 언어 서버에 쉼표가 틀린 가계부 설정 파일을 물어봤어요. “2월” 뒤에 남은 쉼표와 다음 줄 앞에 빠진 쉼표를 둘 다 짚었어요. Claude 가 이런 JSON 파일을 고치다 쉼표를 틀리면, 이 목록이 고친 자리 아래로 들어오게 되는 거예요. 대화 창에서 실제로 그렇게 뜨는지는 로그인한 세션이 필요해 확인하지 못했어요.

PowerShell 로 .lsp.json 을 만든다면 인코딩을 조심해요. 플러그인 마켓플레이스 글에서 시험해 봤듯이 PowerShell 5.1 의 > 나 Out-File 로 저장하면 UTF-16 이 돼서 JSON 이 안 읽혀요. 작은따옴표 묶음(@’ ‘@)에 내용을 담아 [IO.File]::WriteAllText 로 저장하면 돼요. 작은따옴표 묶음은 안의 $ 나 ” 를 PowerShell 이 건드리지 않게 해 줘요.
$json = @'
{ "json": { "command": "vscode-json-language-server", "args": ["--stdio"], "extensionToLanguage": { ".json": "json" } } }
'@
[IO.File]::WriteAllText("$PWD\json-lsp\.lsp.json", $json)
경로 앞에 $PWD 를 붙인 데도 이유가 있어요. [IO.File] 은 PowerShell 이 지금 서 있는 폴더가 아니라 프로그램이 처음 켜진 폴더를 기준으로 삼을 때가 있어서, 엉뚱한 자리에 파일이 생길 수 있어요. 지금 폴더를 가리키는 $PWD 를 붙이면 그런 일이 없어요.
필드 더 보기
.lsp.json 의 서버 설정에는 command 와 extensionToLanguage 말고도 필드가 열두 개 더 있어요. 모르는 필드 이름을 적으면 검사에서 떨어지는 엄격한 형식이라, 오타가 바로 문제가 돼요.

| 필드 | 하는 일 | 언제 손보나 |
|---|---|---|
| startupTimeout | 켜지길 기다릴 밀리초 | 자바처럼 늦게 켜지는 서버 |
| requestTimeout | 답을 기다릴 밀리초(기본 60초) | 큰 프로젝트에서 답이 늦을 때 |
| diagnostics | 고친 뒤 진단을 대화에 넣을지 | 탐색만 쓰고 진단은 끌 때 |
| env | 서버에 줄 환경 변수 | 서버가 따로 설정을 읽을 때 |
| restartOnCrash | 죽으면 다시 켤지(기본 켬) | 자꾸 죽는 서버를 멈춰 둘 때 |
출처: 클로드 코드 문서 Plugin manifest reference 의 lspServers 표. requestTimeout 은 2.1.288 부터. 10월 9일 확인.
공식 자바 플러그인(jdtls-lsp)과 코틀린 플러그인은 실제로 startupTimeout 을 120000(2분)으로 두고 있어요. 공식 마켓플레이스의 목록 파일을 열어 보면 플러그인마다 이 설정이 그대로 적혀 있어서, 내 플러그인을 만들 때 예시로 삼기 좋아요. 환경 변수는 프로그램이 켜질 때 읽는 이름이 붙은 값이에요. 같은 항목들을 plugin.json 의 lspServers 키에 바로 적어도 되고, 그러면 .lsp.json 의 서버에 더해진다고 적혀 있어요.
막힐 때
먼저 짚을 건 검사 명령이 이 파일을 안 본다는 점이에요. 문서는 claude plugin validate 가 .lsp.json 을 읽지 않는다고 적었어요. 이 PC 에서 extensionToLanguage 를 없는 필드 이름(extensions)으로 바꿔 일부러 틀리게 만들어 봤더니, validate 는 그대로 통과했고 claude plugin details 도 LSP servers (1) json 을 그대로 보여 줬어요. 문서에 따르면 이런 파일은 세션을 켤 때 통째로 건너뛰고, /plugin 의 Errors 탭에 Invalid LSP server config for “.lsp.json” 이 뜬다고 해요. 검사가 통과했다고 안심하지 말고 한 번 켜서 진단 줄을 꼭 확인하세요.

또 하나는 이 PC 에서 겪은 일이에요. 문서 명령대로 typescript 를 버전 숫자 없이 깔면 10월 9일에는 7.0.2 가 깔렸어요. 이 버전에는 typescript-language-server 6.0.1 이 기대는 tsserver 파일이 없었고, 언어 서버에 물어보니 진단도 정의도 빈 답이 왔어요. typescript@6(6.0.3)을 같이 깔고 다시 물으니 정상으로 나왔어요. 언어 서버는 7.0.2 와 짝지어 둔 채, 프로젝트 폴더 안에만 typescript@6 을 깔아 둔 경우에도 정상으로 나왔어요. 프로젝트에 자기 typescript 가 있는 분은 겪지 않을 일이고, 빈 연습 폴더에서 처음 시험해 볼 때 걸리기 쉬워요. 클로드 코드 대화 창에서 같은 일이 나는지는 로그인이 필요해 확인하지 못했어요.

npm install -g typescript-language-server typescript@6
진단 줄이 안 뜨는데 Errors 탭이 비어 있다면 이 경우를 의심해 볼 만해요. 아래 표는 문서와 이 PC 시험에서 나온 것을 묶었어요.
| 보이는 것 | 이유 | 고치는 법 |
|---|---|---|
| Executable not found in $PATH | 언어 서버가 PATH 에 없음 | 깔고 PATH 확인 뒤 새 세션 |
| not found in marketplace | 공식 마켓플레이스가 아직 없음 | marketplace add 뒤 다시 깔기 |
| Invalid LSP server config | .lsp.json 필드가 틀림 | 필드 이름·확장자 점 확인 |
| is not used for .ts files | 두 서버가 같은 확장자 | 한쪽 플러그인 끄기 |
| 임포트를 못 찾는다는 진단 | 모노레포 설정 문제 | 클로드 코드 쪽은 고칠 것 없음 |
| 진단 줄이 안 뜸, 오류 없음 | typescript 7 과 짝이 안 맞음(이 PC) | typescript@6 같이 깔기 |
출처: 클로드 코드 문서 Code intelligence plugins·Plugin components·Troubleshoot plugins, 이 PC 시험 출력. 10월 9일 확인.
언어 서버를 깐 뒤에도 이미 켜 둔 클로드 코드는 예전 PATH 를 들고 있어요. 문서는 바이너리를 깐 터미널이 아닌 다른 터미널에서 claude 를 켰다면, PATH 에 그 폴더가 잡힌 터미널에서 새 세션을 열라고 해요. 그래도 안 되면 claude --debug 로 켜서 LSP server 이름 failed to start 줄을 찾아보세요. 끝에 이유가 같이 찍혀요.
코덱스·안티그래비티는
같은 일을 OpenAI 의 코덱스 CLI 와 구글의 안티그래비티 CLI(예전 제미나이 CLI)에서 하면 어떨까요. CLI 는 Command Line Interface 의 줄임말로, 터미널에서 글자로 다루는 프로그램을 말해요. 두 회사의 공식 문서에서 LSP, language server, diagnostic 을 같은 날 찾아봤어요.
| 무엇 | 클로드 코드 | 코덱스 CLI | 안티그래비티 CLI |
|---|---|---|---|
| 언어 서버 연결 | LSP 플러그인(.lsp.json) | 공식 안내 없음 | 공식 안내 없음 |
| 고친 뒤 오류 받기 | 진단이 자동으로 들어옴 | 공식 안내 없음 | 공식 안내 없음 |
| 이름으로 코드 찾기 | LSP 도구(읽기 전용) | 공식 안내 없음 | /codesearch 는 글자 검색 |
| 고친 뒤 검사 명령 돌리기 | PostToolUse 훅 | PostToolUse 훅(apply_patch) | PostToolUse 훅 |
출처: 클로드 코드 문서 Code intelligence plugins·Hooks, OpenAI 코덱스 문서 Hooks·Config reference(learn.chatgpt.com), 안티그래비티 문서 Code search·Lifecycle hooks. 10월 9일 확인.
코덱스 문서에는 언어 서버를 연결하는 설정이 없었어요. 대신 훅 문서에 파일을 고치는 apply_patch 도구가 끝난 뒤 도는 PostToolUse 훅이 있어서, 고친 뒤 검사 명령(예: tsc --noEmit)을 돌려 결과를 돌려주는 길은 열려 있어요. 훅은 정해진 때 자동으로 도는 명령이에요. 훅이 돌려준 글(additionalContext)은 모델이 읽는 대화에 더해진다고 적혀 있어요. 다만 언어 서버처럼 이름으로 정의를 찾아 주지는 않아요.

안티그래비티 CLI 문서에도 언어 서버 얘기는 없었어요. 비슷해 보이는 /codesearch 명령은 사람이 쓰는 검색 창이에요. 작업 폴더 전체를 정규식(글자 패턴 찾기 규칙)으로 찾아 파일별로 보여 주는 것이라, 기호로 찾는 LSP 와는 달라요. 훅은 안티그래비티 CLI 에도 PostToolUse 가 있고, 문서는 훅의 용도로 린터 실행과 진단 기록을 들었어요. 린터는 코드의 실수나 스타일을 짚어 주는 검사 프로그램이에요.

제 생각에는 코드를 AI 에게 고치게 하는 일이 잦고, 고친 뒤 “돌려 보니 안 된다”를 몇 번 겪으셨다면 지금은 클로드 코드의 LSP 플러그인이 가장 손이 덜 가요. 언어 서버 하나와 플러그인 한 줄이면 되니까요. 코덱스나 안티그래비티를 쓰신다면 고친 뒤 검사 명령을 돌리는 훅으로 비슷한 효과를 낼 수 있어요. 언어 서버를 MCP 서버로 감싸 연결하는 방법도 있지만 공식 안내가 아니라 여기서는 다루지 않았어요. MCP 서버 붙이는 법은 코덱스 MCP 글과 안티그래비티 MCP 글에, 세 도구를 한 번에 비교한 글은 클로드 코드·코덱스·제미나이 CLI 비교 글에 있어요.
한국에서 되나
| 질문 | 답 |
|---|---|
| 한국에서 되나 | 됨(Anthropic 지원 국가 목록에 South Korea) |
| 무슨 요금제 | 클로드 코드를 쓰는 요금제. LSP 만 막는 요금제 안내는 문서에 없음 |
| 어디서 도나 | 내 컴퓨터의 터미널 세션. 클라우드 세션은 안 됨 |
| 한국어 문서 | 있음(code.claude.com/docs/ko/plugins/code-intelligence) |
| 버전 숫자 | LSP 도구 2.0.74, 윈도우 수정 2.1.74, Ctrl+O 펼치기 2.1.121. 이 글은 2.1.292 |
출처: 클로드 코드 문서 Code intelligence plugins·Tools reference·Changelog, anthropic.com 지원 국가 목록. 10월 9일 확인.
변경 기록에는 2.1.74 버전에서 “윈도우에서 파일 주소가 잘못 만들어져 LSP 서버가 안 돌던 것”을 고쳤다고 적혀 있어요. 윈도우에서 쓰신다면 claude --version 으로 버전 숫자부터 보세요. 언어 서버는 무료 프로그램이고, 플러그인에 따로 드는 돈은 없어요.
다음에 볼 글
플러그인을 깔고 끄는 기본은 클로드 코드 플러그인 설치 글, 내 플러그인을 팀에 공유하는 법은 플러그인 마켓플레이스 만들기 글, 고친 뒤 검사 명령을 자동으로 돌리는 법은 훅 글에 있어요. 처음 쓰는 분은 클로드 코드 사용법 처음부터를 먼저 보세요. 나머지 요령은 사용량 아끼는 법 모음에 차례로 있어요.
이 글의 내용은 2026년 10월 9일, 클로드 코드 2.1.292 기준이에요. 공식 플러그인 목록과 언어 서버 버전은 자주 바뀌니, 글과 다르게 움직이면 공식 문서의 지금 내용과 /plugin 의 Errors 탭을 먼저 보세요.
같이 보면 좋은 글: 클로드 코드 플러그인 설치하는 법: /plugin 으로 깔고 끄고 지우기, 직접 만들기까지
같이 보면 좋은 글: 클로드 코드 사용량 아끼는 법: 대화·캐시·서브에이전트부터 스킬·훅·권한 설정까지
같이 보면 좋은 글: AI 비교 2026: 클로드·챗GPT·제미나이 요금제·한도·기능 표
이 글이 들어간 총정리: 터미널 코딩 AI 처음 시작하기
참고한 자료
2026년 10월 9일에 확인했어요. 클로드 코드 문서는 영어 문서와 한국어 문서(/docs/ko/)를 같이 봤어요.
- Code intelligence plugins (클로드 코드 공식 문서, 언어 표·세 단계·권장 대화상자·문제 해결)
- 코드 인텔리전스 플러그인 (클로드 코드 공식 한국어 문서, 캡처한 페이지)
- Add components to a plugin, LSP servers (클로드 코드 공식 문서, .lsp.json 형식·validate 가 안 읽음·확장자 충돌)
- Plugin manifest reference, lspServers (클로드 코드 공식 문서, 서버 설정 필드 표)
- Tools reference, LSP tool behavior (클로드 코드 공식 문서, 일곱 가지 일·권한 규칙)
- Troubleshoot plugins (클로드 코드 공식 문서, 언어 서버가 안 켜질 때·메모리·모노레포, 공식 마켓플레이스 등록)
- Set up Claude Code in a monorepo or large codebase (클로드 코드 공식 문서, 코드 인텔리전스로 파일 읽기 줄이기)
- Changelog (클로드 코드 공식 변경 기록, 2.0.74·2.1.74·2.1.121·2.1.243·2.1.288)
- anthropics/claude-plugins-official (Anthropic 공식 마켓플레이스 저장소, typescript-lsp·pyright-lsp 안내 글과 lspServers 설정)
- Supported countries (Anthropic, South Korea)
- Hooks (OpenAI 코덱스 공식 문서, PostToolUse 와 apply_patch)
- Config reference (OpenAI 코덱스 공식 문서, 언어 서버 설정 필드 없음)
- Code search command (안티그래비티 공식 문서, /codesearch)
- Lifecycle hooks (안티그래비티 공식 문서, PostToolUse)
광고 · 쿠팡 추천 상품
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.


