PlugWiki
cclsp logo

cclsp MCP Server: Setup for Claude Code, Cursor and Other Apps

CommunityLocal
Getnpmcclspktnyt/cclsp

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.

Install cclsp MCP

Claude Code

  1. 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. 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_definition

  • Finds 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_references

  • Finds 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_implementation

  • Searches 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_symbols

  • Shows 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_hover

  • Lists 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_diagnostics

  • Lists 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_calls

  • Lists 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_calls

  • Renames 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_symbol

  • Renames 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_strict

  • Restarts 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_server

  • Used 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-onlyNo read-only mode is documented. The rename tools have a dry run option, but they write by default.
Sign-in and keysNo 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

GitHubnpmIssues

Sources

Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.

Show all 2
  1. github.com · github.com
  2. www.npmjs.com · npmjs.com

Facts from the official MCP registry, GitHub, npm, PyPI and the Docker catalog. Updated Nov 2, 2026.