The path the docs recommend is overview, then search, then details: `get_project_overview` to see the shape, `search_symbols` to find the thing, `get_symbol_details` to read its type, definition and callers in one call — which is what makes it cheaper than opening files. Renames go through the language server, so they land everywhere the symbol is used rather than everywhere the string appears.
Lsmcp puts Language Server Protocol capability behind MCP tools. It runs a language server for your project — presets ship for `tsgo`, `typescript`, `rust-analyzer`, `gopls`, `deno`, `moonbit`, `fsharp`, `hls` and `ocaml` — and exposes hover, references, diagnostics, renames and code actions, with a pre-built symbol index on top for fast search.
- Semantic navigation in place of grep: `lsp_get_definitions` with the option of the full body, `lsp_find_references`, `lsp_get_hover`, `lsp_get_workspace_symbols`, `lsp_get_document_symbols`
- Refactors the language server agrees with — `lsp_rename_symbol` across the codebase, `lsp_delete_symbol` with its references, `lsp_get_code_actions` for the available quick fixes
- Errors from the compiler rather than a guess: `lsp_get_diagnostics` per file, `lsp_get_all_diagnostics` for the whole project
- A fast index over the top: `get_project_overview` for structure and statistics, `search_symbols` by name or kind, `get_symbol_details` returning hover, definition and references in one call
- External library symbols — `index_external_libraries` over node_modules declaration files, `search_external_library_symbols`, `resolve_symbol`, `get_typescript_dependencies`, `parse_imports`
- Edits in place: `replace_range`, `replace_regex`, and `lsp_format_document` through the language server
- Project memories under `.lsmcp/memories/` — `write_memory`, `read_memory`, `list_memories`, `delete_memory`
Node.js 22.0.0 or higher — the index runs on Node's built-in SQLite. No account and no key. Install `@mizchi/lsmcp` next to a language server: `npm add -D @mizchi/lsmcp @typescript/native-preview`, then `npx @mizchi/lsmcp init -p tsgo` and `claude mcp add lsmcp npx -- -y @mizchi/lsmcp -p tsgo`. Any language server without a preset goes in through `--bin`. Settings live in `.lsmcp/config.json`, including `autoIndex`, `indexConcurrency`, `maxFileSize` and `memoryLimit`.
One command — claude mcp add lsmcp npx -- -y @mizchi/lsmcp -p tsgo
