LSP-MCP
lsp-mcp
언어 인텔리전스를 위한 가장 완벽한 MCP 서버입니다. 탐색, 진단, 리팩토링 및 포맷팅을 다루는 22개의 도구를 제공합니다. 7개 언어에 대해 CI 검증을 거쳤으며, LSP 3.17 사양을 직접 준수하여 구축되었습니다.
일반적인 MCP-LSP 브리지와 달리, lsp-mcp는 지속적인 언어 서버 세션을 유지합니다. 에이전트는 호출 간에 컨텍스트를 잊어버리는 콜드 스타트 방식의 스텁이 아니라, 실시간 진단 및 파일 간 인식을 갖춘 완전히 인덱싱된 작업 공간에서 작동합니다.
lsp-mcp를 선택해야 하는 이유
lsp-mcp | 일반적인 대안 | |
언어 (CI 검증됨) | 7 | 1–2 |
도구 | 22 | 3–5 |
LSP 사양 준수 | 3.17, 사양에 맞춰 구축 | 임시 구현 |
연결 모델 | 지속적 | 요청별 연결 |
파일 간 참조 | ✓ | 거의 없음 |
실시간 진단 구독 | ✓ | ✗ |
테스트 커버리지 | 76% 문장, 86% 함수 | 거의 테스트되지 않음 |
빠른 시작
{
"mcpServers": {
"lsp": {
"type": "stdio",
"command": "npx",
"args": ["blackwell-systems/LSP-MCP", "<language-id>", "<path-to-lsp-binary>", "<lsp-args>"]
}
}
}TypeScript:
{ "args": ["blackwell-systems/LSP-MCP", "typescript", "typescript-language-server", "--stdio"] }Go:
{ "args": ["blackwell-systems/LSP-MCP", "go", "gopls"] }Rust:
{ "args": ["blackwell-systems/LSP-MCP", "rust", "rust-analyzer"] }다중 언어 지원
아래의 모든 언어는 모든 CI 실행 시 통합 테스트를 거칩니다. start_lsp, open_document, get_diagnostics, get_info_on_location 모두 실제 언어 서버 바이너리를 기준으로 검증되었습니다:
언어 | 서버 | 설치 |
TypeScript / JavaScript |
|
|
Python |
|
|
Go |
|
|
Rust |
|
|
Java |
| |
C / C++ |
|
|
PHP |
|
|
도구
모든 도구는 먼저 start_lsp가 호출되어야 합니다.
세션
도구 | 설명 |
| 프로젝트 루트와 함께 언어 서버 시작 |
| MCP 서버를 재시작하지 않고 서버 재시작 |
| 추적을 위해 파일 열기 (위치 쿼리 전 필수) |
| 파일 추적 중지 |
분석
도구 | 설명 |
| 오류 및 경고 — 전체 프로젝트의 경우 |
| 특정 위치의 호버 정보 (타입 시그니처, 문서) |
| 특정 위치의 코드 완성 제안 |
| 호출 지점의 함수 시그니처 및 활성 매개변수 |
| 범위에 대한 빠른 수정 및 리팩토링 |
| 파일 내 모든 심볼 (함수, 클래스, 변수) |
| 작업 공간 전체에서 이름으로 심볼 검색 |
탐색
도구 | 설명 |
| 작업 공간 전체에서 심볼에 대한 모든 참조 |
| 심볼이 정의된 곳으로 이동 |
| 심볼의 타입 정의로 이동 |
| 인터페이스나 추상 메서드의 모든 구현으로 이동 |
| 심볼의 선언으로 이동 (정의와 구분됨 — 예: C/C++ 헤더) |
리팩토링
도구 | 설명 |
| 작업 공간 전체에서 심볼 이름을 변경하기 위한 |
| 커밋 전 이름 변경 가능 여부 검증 |
| 파일에 대한 |
| 디스크에 |
| 서버 측 명령 실행 (예: 코드 액션에서) |
유틸리티
도구 | 설명 |
| 런타임에 로그 상세 수준 변경 |
권장 에이전트 워크플로우:
start_lsp(root_dir="/your/project")
open_document(file_path=..., language_id=...)
get_diagnostics() # whole project, no file_path
get_info_on_location(...) / get_references(...)
close_document(...)언어 ID: typescript, typescriptreact, javascript, javascriptreact, python, go, rust, java, c, cpp, php
리소스
진단 리소스는 실시간 구독을 지원합니다. 진단 정보가 변경되면 서버가 notifications/resources/updated를 전송합니다.
스킴 | 설명 |
| 열려 있는 모든 파일 |
| 특정 파일 (구독 가능) |
| 위치 호버 |
| 위치 코드 완성 |
LSP 3.17 준수
lsp-mcp는 LSP 3.17 사양을 직접 구현하며 실제 언어 서버와의 통합 테스트를 통해 검증되었습니다. 커버리지 포함 사항:
전체 수명 주기 (
initialize→initialized→shutdown) 및 정상적인 SIGINT/SIGTERM 처리진행 상황 프로토콜 — 작업 공간 준비 감지는 참조를 보내기 전에 모든
$/progress토큰이 완료될 때까지 대기서버 시작 요청 (
workspace/configuration,window/workDoneProgress/create, 동적 등록) — 모두 올바르게 응답하여 이러한 응답에 작업 공간 로딩을 의존하는 서버의 차단을 해제올바른 JSON-RPC 프레이밍, 오류 코드 처리, 호버/완성/코드 액션/진단 전반에 걸친 응답 형태 정규화
전체 메서드 커버리지 매트릭스 및 사양 섹션 참조는 docs/lsp-conformance.md를 확인하세요.
확장 기능
언어별 확장 기능은 도구, 프롬프트, 리소스 핸들러를 추가하며 시작 시 언어 ID에 따라 자동으로 로드됩니다.
확장 기능을 추가하려면 src/extensions/<language-id>.ts를 생성하고 getToolHandlers, getToolDefinitions, getResourceHandlers, getSubscriptionHandlers, getPromptDefinitions, getPromptHandlers 중 일부를 구현하세요. 모든 기능은 언어 ID별로 네임스페이스가 지정됩니다.
개발
git clone https://github.com/blackwell-systems/LSP-MCP.git
cd LSP-MCP && npm install && npm run build
npm test # all unit test suites
npm run test:multi-lang # 7-language integration test (requires language servers)커버리지: 약 76% 문장, 약 86% 함수. MCP 트래픽을 검사하려면: claude --mcp-debug.
라이선스
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/blackwell-systems/LSP-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server