
cclsp MCP Server: Setup for Claude Code, Cursor and Other Apps
Lets Claude Code, Cursor and other assistants navigate and rename code with the language servers you already use.
cclsp connects your assistant to language servers, the same engines that power go to definition in an editor. The assistant can find where something is defined, list every use, read type information, check errors and rename a symbol across files.
It runs on your computer and needs no account. You create a small config file with the setup wizard, then install a language server for each language you use. The server will not start without that config file.
Good for
- Claude Code users who want exact definitions and references instead of text search
- Developers who want safe renames across a whole project
- Teams working in TypeScript, Python, Go, Rust or other languages with a language server
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install cclsp MCP
Claude Code
- 1
Copy this prompt.
Add the cclsp MCP server to Claude Code. Run this command: claude mcp add cclsp -e CCLSP_CONFIG_PATH=<CCLSP_CONFIG_PATH> -- npx -y cclsp Ask me for CCLSP_CONFIG_PATH and only put the values in that config, nowhere else. Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node 18+, A cclsp.json config file (run: npx cclsp@latest setup), A language server for each language.
Read-only mode: No read-only mode. Ask the assistant to use dry run when renaming.
Run npx cclsp@latest setup first. It writes the config file, and you replace the config path in the setting above with its location. Install a language server for each language separately.
Built from the package data we hold. Not yet tested by us.
Tools
Jumps to where a function or class is defined
Finds where a named symbol is defined in a file. You give a name and optionally its kind, so the assistant does not have to guess line and column numbers.
Try: “Where is parseConfig defined in src/config.ts?”
Files ·
find_definitionFinds every use of a symbol in the project
Lists all places a symbol is used across the workspace, with or without its declaration.
Try: “Find every place that calls sendEmail.”
Files ·
find_referencesFinds the code that implements an interface
Returns the locations that implement an interface or abstract method.
Try: “Which classes implement the Storage interface?”
Files ·
find_implementationSearches symbols by name across the project
Searches every file in the workspace for symbols that match a name.
Try: “Find all symbols named Router.”
Files ·
find_workspace_symbolsShows the type and docs for a symbol
Returns the documentation and type information the language server shows when you hover on a symbol at a given position.
Try: “What type does the value on line 42 of api.ts have?”
Files ·
get_hoverLists errors and warnings in a file
Returns the errors, warnings and hints the language server reports for one file.
Try: “Are there any type errors in src/server.ts?”
Files ·
get_diagnosticsLists the functions that call a function
Finds every function or method that calls the one at a position. It needs prepare_call_hierarchy first.
Try: “Who calls handleRequest?”
Files ·
get_incoming_callsLists the functions a function calls
Finds every function or method that the one at a position calls. It needs prepare_call_hierarchy first.
Try: “What does handleRequest call?”
Files ·
get_outgoing_callsRenames a symbol across all files
Renames a symbol by name and applies the change to every affected file by default. It saves a .bak copy of each file first. Set dry run to preview. If several symbols match, it returns the candidates instead.
Try: “Rename getUser to fetchUser everywhere, but preview first.”
Write ·
rename_symbolRenames the symbol at an exact position
Renames the symbol at a line and character you give, for when a name matches several symbols. It applies the change by default, and dry run previews it.
Try: “Rename the symbol at line 12, column 5 of utils.ts to total.”
Write ·
rename_symbol_strictRestarts the language servers
Restarts the language servers for chosen file types, or all of them. Use it when answers look stale.
Try: “Restart the TypeScript language server.”
Runs code ·
restart_serverUsed by the assistant behind the scenes
Marks a function so you can trace its calls
Gets the call-hierarchy item at a position. Run it first, then ask for incoming or outgoing calls.
Try: “Prepare the call tree for handleRequest.”
Files ·
prepare_call_hierarchy
Read from the source code
Permissions
medium risk · 3 things to watch
Medium risk
The assistant can rename symbols across your project and edit the files directly. Ask it to preview first with a dry run, and keep your code in version control.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
Renames edit your files by default
Both rename tools change every affected file unless dry run is set. They save .bak copies, so check your version control before approving. github.com
It starts programs from your config file
The config lists commands for language servers, and cclsp runs them. Only use a config you wrote or reviewed. github.com
Restart tool stops and restarts servers
It restarts language servers you pick, or all of them. It does not touch your files. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only mode is documented. The rename tools have a dry run option, but they write by default. |
|---|---|
| Sign-in and keys | No account or key. A config file on your computer lists which language servers to run. |
Questions
Is cclsp official?
No. It is a community project by ktnyt, not made by Anthropic or by any language-server maker.
Do I need to install language servers?
Yes. cclsp uses the servers on your machine, such as typescript-language-server, pylsp or gopls. The setup wizard detects your languages and can install them after you confirm.
Why does it exit right after I add it?
It needs a config file path. Run the setup wizard first, then point the config path setting in the install box at the file it creates.
Can it change my code?
Yes. The two rename tools apply changes to all affected files unless you ask for a dry run. They keep .bak copies of changed files.
Is the README tool list complete?
No. The README documents six tools, but the published package registers 12, including hover, implementations and call hierarchy. This page lists the package.
Which languages does it support?
Any language with a language server. The setup wizard offers presets such as TypeScript, Python, Go, Rust, Java, Ruby and PHP.
Does it work in Claude Desktop?
Yes, the install box has a Claude Desktop config. The README is written for Claude Code, so that is its best-tested route.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
cclsp- Registry
- npm
- Transport
- stdio
- Auth
- None
- Version
- 0.7.0
- License
- MIT
- Last commit
- Feb 22, 2026
- Open issues
- 16
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 2Hide
- github.com · github.com
- www.npmjs.com · npmjs.com