Labsco
MCP SERVER

TypeScript MCP

by mizchi

Give an agent a language server: go-to-definition, find-references and safe renames across TypeScript, Rust, Go, F#, OCaml and more.

Code Intelligence & Repository Indexing
Summary
Type-aware answers about a codebase, in place of the read-a-file-and-hope loop.

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.

What it is

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.

What you get
  • 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`
Requirements

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`.

Setup effort

One command — claude mcp add lsmcp npx -- -y @mizchi/lsmcp -p tsgo