Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>LSP MCPNew to Visual Studio Code? Get it now.
LSP MCP

LSP MCP

CJL

|
621 installs
| (0) | Free
LSP MCP Server for VSCode
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

VSCode LSP MCP

LSP MCP Icon

VS Marketplace Version VS Marketplace Installs VS Marketplace Rating GitHub Stars License TypeScript

English | 中文

🔍 Overview

VSCode LSP MCP is a Visual Studio Code extension that exposes Language Server Protocol (LSP) features through the Model Context Protocol (MCP).

Extension ID: cjl.lsp-mcp — open Extensions (Ctrl+Shift+X / Cmd+Shift+X) and search for cjl.lsp-mcp to find this plugin precisely.

This allows AI assistants and external tools to utilize VSCode's powerful language intelligence capabilities without direct integration.

vscode-ext demo

VSCode LSP Server MCP server

🌟 Why This Extension?

Large language models like Claude and Cursor struggle to understand your codebase accurately because:

  • They rely on regex patterns to find symbols, leading to false matches
  • They can't analyze import/export relationships properly
  • They don't understand type hierarchies or inheritance
  • They have limited code navigation capabilities

This extension bridges that gap, providing AI tools with the same code intelligence that VSCode uses internally!

⚙️ Features

  • 🔄 LSP Bridge: Converts LSP features into MCP tools
  • 🔌 Multi-Instance Support: Automatically handles port conflicts for multiple VSCode windows
  • 🧠 16 LSP operations covering navigation (definition, declaration, implementation, references), documentation (hover, completions), structure (document/workspace symbols, call hierarchy), and manipulation (rename)
  • ☕ Java dependency source: Get decompiled Java class source via jdt:// URI (from jdtls), so AI can read library implementations
  • 📄 Dual output format: JSON for machine processing, Markdown for LLM-friendly reading

🛠️ Exposed MCP Tools

Operation Description
hover Get hover information (documentation, type, etc.) at a position
definition Get the definition location of a symbol
declaration Get the declaration location of a symbol
implementation Get the implementation location(s) of a symbol
references Find all references to a symbol
completions Get intelligent code completion suggestions
document_symbols Get the symbol outline (tree) of a document
workspace_symbols Search for symbols across the entire workspace by query
class_file_contents Get decompiled Java class source via jdt:// URI (from jdtls), to read library/dependency implementations
rename Rename a symbol across the workspace
symbol_at_position Get symbol metadata (name, kind, range) at a position
incoming_calls Find all callers of a symbol
outgoing_calls Find all callees (calls made by) a symbol

All operations are invoked through the single execute_lsp MCP tool with a unified input format:

  • operation — which LSP operation to execute
  • uri — file path or URI string (supports both plain paths and file:///jdt:// URIs)
  • line — line number (1-based, matching editor display). Required for position-dependent operations
  • character — character offset (1-based, matching editor display). Required for position-dependent operations
  • newName — required only for rename
  • query — required only for workspace_symbols

1-based positions: Both input and output use 1-based line/character values, matching what your editor displays. VS Code shows Ln 9, Col 16 → pass line: 9, character: 16. Output positions can be used directly as input for the next call — no conversion needed.

📋 Configuration

Key Description Type Default
lsp-mcp.enabled Enable or disable the LSP MCP server. boolean true
lsp-mcp.port Port for the LSP MCP server. number 9527
lsp-mcp.maxRetries Maximum number of port retry attempts when the default port is occupied. number 10
lsp-mcp.cors.enabled Enable or disable CORS (Cross-Origin Resource Sharing). boolean true
lsp-mcp.cors.allowOrigins Allowed origins for CORS. Use * to allow all origins, or provide a comma-separated list of origins (e.g., http://localhost:3000,http://localhost:5173). string *
lsp-mcp.cors.withCredentials Whether to allow credentials (cookies, authorization headers) in CORS requests. boolean false
lsp-mcp.cors.exposeHeaders Headers that browsers are allowed to access. Provide a comma-separated list of headers (e.g., Mcp-Session-Id). string Mcp-Session-Id
lsp-mcp.maxResults Maximum number of items returned for list-type results (completions, workspace_symbols, etc.). Prevents excessive token usage. number 200
lsp-mcp.outputFormat Output format for LSP operation results. json for machine-readable JSON, markdown for LLM-friendly Markdown. string json

🔗 Integration with AI Tools

Cursor

Config file: ~/.cursor/mcp.json (e.g. %USERPROFILE%\.cursor\mcp.json on Windows)

{
  "mcpServers": {
    "lsp": {
      "url": "http://127.0.0.1:9527/mcp"
    }
  }
}

OpenCode

Config file: ~/.config/opencode/opencode.jsonc

{
  "mcp": {
    "lsp-mcp": {
      "type": "remote",
      "url": "http://127.0.0.1:9527/mcp",
      "enabled": true
    }
  }
}

Claude Code

Config file: ~/.claude.json

{
  "mcpServers": {
    "lsp-mcp": {
      "type": "http",
      "url": "http://127.0.0.1:9527/mcp"
    }
  }
}

Gemini | IFlow

Config file: ~/.gemini/settings.json

{
  "mcpServers": {
    "lsp-mcp": {
      "type": "streamable-http",
      "httpUrl": "http://127.0.0.1:9527/mcp"
    }
  }
}

Codex

Config file: ~/.codex/config.toml

[mcp_servers.lsp-mcp]
url = "http://127.0.0.1:9527/mcp"

Roo Code

{
  "mcpServers": {
    "lsp": {
      "type": "streamable-http",
      "url": "http://127.0.0.1:9527/mcp",
      "disabled": false
    }
  }
}

💻 Development

  • Clone the repository
  • Run pnpm install
  • Run pnpm run update to generate metadata
  • Press F5 to start debugging
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft