mcpField
T
typescript-lsp

typescript-lsp

github.com/clickhouseDevelopment33051 installsUpdated 1d ago
Repository

About typescript-lsp

A skill documenting use of the TypeScript language server in the clickhouse-js workspace, for developers needing interactive code intelligence. It covers startup, project configuration discovery, and verified LSP capabilities.

Key features

  1. 01Start LSP over stdio
  2. 02Select nearest tsconfig.json automatically
  3. 03Query hover details and definitions
  4. 04Find references and workspace symbols
  5. 05Provide completions and pushed diagnostics

Use cases

  1. 01Inspect inferred signatures and JSDoc
  2. 02Navigate definitions across workspace packages
  3. 03Search symbols and their references
  4. 04Get file diagnostics and completions

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/clickhouse/clickhouse-js --skill typescript-lsp

After installing, type/typescript-lspin Claude Code to confirm it loaded.

Details

From the project README

TypeScript Language Server in clickhouse-js

typescript-language-server is declared as a root devDependency, so after npm install (see the setup skill) it is available via npx and uses the workspace-local typescript (6.x) compiler, matching CI exactly.

The server (6.x) requires Node.js >= 22.22.2, newer than the repository's Node 20 minimum; on Node 20 npm install only warns, but the server isn't supported there.

Starting the server

From the repo root:

npx typescript-language-server --stdio

It speaks LSP (JSON-RPC, Content-Length-framed) over stdio. There is no extra configuration: each packages/* workspace, tests/clickhouse-test-runner, examples/node, and examples/web has its own tsconfig.json, and the server picks the nearest one per opened file automatically.

Protocol essentials

  1. Send initialize with rootUri/workspaceFolders pointing at the repo root, then the initialized notification.
  2. Send textDocument/didOpen with the full file text for every file you want to query (the server reads dependencies from disk on its own; only files you query positions in need to be opened).
  3. Positions are 0-based (line and character).

Verified capabilities (typescript-language-server 5.x, TS 6.x)

RequestNotes
textDocument/hoverReturns the full inferred signature + JSDoc markdown
textDocument/definitionResolves across workspace packages via source, not dist/
textDocument/referencesWithin the opened file's project
workspace/symbole.g. query ClickHouseClient finds class + re-exports
textDocument/completionContext-aware member completions
DiagnosticsPush only (textDocument/publishDiagnostics notifications, sent ~1–3s after didOpen). The pull textDocument/diagnostic request is not supported (-32601) — wait for the push notification instead.

Tips

  • If your environment provides built-in LSP/code-intelligence tooling, point it at npx typescript-language-server --stdio with the repo root as the workspace folder.
  • For one-off scripted queries, spawn the server from Node, frame messages with Content-Length: <bytes>\r\n\r\n<json>, and match responses by id.
  • A full workspace typecheck is still npm run build && npm run typecheck (build first — some workspaces import compiled dist/ outputs); the LSP is for targeted, interactive queries, not for CI-equivalent validation.

Comments

Markdown supported