local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Integrates with Python language server (pyright) to provide code intelligence, including definitions, references, diagnostics, and code lens for Python codebases
Integrates with Rust language server (rust-analyzer) to provide code intelligence, including definitions, references, diagnostics, and code lens for Rust codebases
Integrates with TypeScript language server (tsserver) to provide code intelligence, including definitions, references, diagnostics, and code lens for TypeScript codebases
MCP 언어 서버
언어 서버를 실행하고 해당 서버와 통신하기 위한 도구를 제공하는 MCP(모델 컨텍스트 프로토콜) 서버입니다.
동기 부여
파일 시스템 서버를 갖춘 Claude 데스크톱은 작은 프로젝트에서는 마법처럼 느껴집니다. 하지만 몇 개의 파일을 추가하고 임포트하면 문제가 생기기 시작합니다. 이 프로젝트를 통해 대규모 프로젝트에서도 그런 경험을 제공하고 싶습니다.
언어 서버는 LLM이 종종 어려움을 겪는 유형, 관계, 정확한 기호 참조 제공 등의 작업에 탁월합니다. 이 프로젝트는 이러한 도구를 LLM에 도입하는 것을 목표로 합니다. LSP는 MCP에도 좋은 영향을 미치는 것으로 보이는데, 이 둘을 함께 활용하는 것은 어떨까요?
상태
⚠️ 사전 베타 품질 ⚠️
저는 다음 언어 서버로 이 서버를 테스트했습니다.
- pyright(파이썬)
- tsserver(타입스크립트)
- gopls (가다)
- 녹 분석기(Rust)
하지만 더 많은 것들과 호환이 가능해야 합니다.
도구
read_definition
: 코드베이스에서 모든 심볼(함수, 유형, 상수 등)의 전체 소스 코드 정의를 검색합니다.find_references
: 코드베이스 전체에서 심볼의 모든 사용법과 참조를 찾습니다.get_diagnostics
: 경고 및 오류를 포함하여 특정 파일에 대한 진단 정보를 제공합니다.get_codelens
: 코드에 대한 추가 컨텍스트와 작업에 대한 코드 렌즈 힌트를 검색합니다.execute_codelens
: 코드 렌즈 작업을 실행합니다.apply_text_edit
: 프로그래밍 방식으로 파일에 여러 텍스트를 편집할 수 있습니다.
이면에서 이 MCP 서버는 언어 서버의 workspace/applyEdit
요청에 따라 작동하여 리팩터링 요청, 가져오기 추가, 코드 포맷팅 등과 같은 작업을 적용할 수 있습니다.
각 도구는 줄 번호나 추가 컨텍스트를 포함하는 등 출력을 사용자 정의하는 다양한 옵션을 지원합니다. 자세한 사용법은 도구 설명서를 참조하세요. apply_text_edit
정확한 편집을 수행하려면 줄 번호가 필요합니다.
에 대한
이 코드베이스는 gopls 의 편집된 코드를 활용하여 LSP 통신을 처리합니다. 자세한 내용은 ATTRIBUTION을 참조하세요.
mcp-go는 MCP 통신에 사용됩니다.
필수 조건
Go 설치: https://golang.org/doc/install 의 지침을 따르세요.
이 서버를 가져오거나 업데이트하세요:
지엑스피1
코드베이스에 언어 서버를 설치하세요.
- Python(pyright):
npm install -g pyright
- TypeScript(tsserver):
npm install -g typescript typescript-language-server
- Go(gopls):
go install golang.org/x/tools/gopls@latest
- Rust (rust-analyzer):
rustup component add rust-analyzer
- 또는 모든 언어 서버를 사용하세요
설정
Claude Desktop 설정(또는 유사한 MCP 지원 클라이언트)에 다음 구성과 같은 것을 추가하세요.
바꾸다:
/Users/you/dev/yourcodebase
에 프로젝트의 절대 경로를 입력합니다./opt/homebrew/bin/pyright-langserver
에 언어 서버 경로를 추가합니다(which
명령어를 사용하여 찾음, 예:which pyright-langserver
)--
뒤에 있는 모든 인수는 언어 서버에 인수로 전송됩니다.- 모든 env 변수는 언어 서버로 전달됩니다. 일부 변수는 언어 서버에 필요할 수 있습니다. 예를 들어,
gopls
제대로 작동하려면GOPATH
와GOCACHE
필요했습니다. LOG_LEVEL
은 선택 사항입니다. 아래를 참조하세요.
개발
저장소를 복제합니다.
개발 종속성 설치:
짓다:
테스트 실행:
테스트 스냅샷 업데이트:
로컬 바이너리를 사용하도록 Claude Desktop(또는 유사한 프로그램)을 구성하세요.
변경 후 다시 빌드합니다.
피드백
포함하다
자세한 LSP 및 애플리케이션 로그를 얻으려면 LOG_LEVEL
DEBUG로 설정하세요. 모든 구성 요소에 대한 자세한 로깅이 활성화됩니다. wire:DEBUG
로 LOG_COMPONENT_LEVELS
추가하면 원시 LSP JSON 메시지가 표시됩니다. 이슈를 열 때 가능한 한 많은 정보를 포함해 주세요.
제가 주목하는 특징은 다음과 같습니다.
- [x] 정의 읽기
- [x] 참조 얻기
- [x] 편집 적용
- [x] 진단 받기
- [x] 코드 렌즈
- [ ] 호버 정보
- [ ] 코드 작업
- [ ] 컨텍스트 및 취소의 더 나은 처리
- [ ] 공통 언어에 대한 LSP 서버 구성 옵션 및 사전 설정 추가
- [ ] 도구(페이지 매김 등)에 대한 보다 일관되고 확장 가능한 API를 만듭니다.
- [ ] 정의나 참조를 읽을 때 진단, 코드 렌즈, 호버, 코드 작업을 결합하여 더 높은 수준의 추상화 도구를 만듭니다.
This server cannot be installed
언어 서버를 운영하고 통신 도구를 제공합니다. 언어 서버는 LLM이 종종 어려움을 겪는 유형, 관계, 정확한 기호 참조 제공 등의 작업에 탁월합니다.