Using the MCP Server
The tree-sitter-language-pack MCP server exposes ts-pack's parsing and
code-intelligence capabilities as MCP tools, so an MCP-compatible client (Claude
Code, Claude Desktop) can parse source, extract structure, and detect languages
directly, with no CLI invocation or glue code.
How it runs in this plugin
The plugin auto-registers the server. Its command is the bundled launcher
scripts/mcp-launch.sh, which execs ts-pack mcp. On first run the launcher
resolves a ts-pack binary: it reuses one already on PATH or cached in the
plugin's bin/, then tries npx/uvx, then Homebrew, then downloads a prebuilt
from the tool's latest GitHub release. Override the channel with
TS_PACK_LAUNCHER=auto|npx|uvx|brew|download.
The mcp subcommand ships in a recent release of the tool. If an older
ts-pack is already on PATH, it may not expose mcp yet — upgrade the binary
(brew upgrade, re-download, or rebuild) to pick it up.
To run it manually:
ts-pack mcp # for Claude Code / Claude Desktop (stdio)
The tools
Parsing and code intelligence:
- parse — syntax tree from
source; requires an explicit language, with
optional format (sexp or json). It does not detect language from a path —
use detect_language first if you only have a path.
- process — code intelligence: structure, imports, exports, symbols, docstrings, comments, diagnostics, chunks. Use
all flag to enable all features.
- detect_language — identify language by
path or content (those are
the only two parameters; extension detection is implicit in path).
Language and cache management:
- list_languages — available, downloaded, or manifest languages; optional filter by name.
- info — show language availability and cache status.
- download — prefetch parsers: specific languages, language groups, all, or fresh updates.
- cache_dir — return the cache directory path.
- clean_cache — remove all cached parsers.
Resources
ts-pack://languages — catalog of all known languages.
ts-pack://languages/downloaded — currently cached languages.
ts-pack://language/{name} — per-language metadata template.
Prompt and completions
- analyze-code — code-analysis prompt (args:
language, optional focus).
- Language-name autocomplete — available language names in completions.
When to prefer MCP over the CLI or SDK
- Prefer MCP inside an agent session: the agent calls parsing directly as a
tool, with no shell-out and no process management.
- Prefer the CLI for one-shot parsing/extraction and shell/CI pipelines.
- Prefer the SDK when embedding parsing in application code or running custom
tree-sitter queries.
1---2name: using-the-mcp-server-103description: Use when parsing source, extracting code structure, or detecting a language through the tree-sitter-language-pack MCP server's tools, rather than shelling out to the ts-pack CLI. Covers the tool surface, the auto-installing launcher, and when MCP beats the CLI or SDK.4---56# Using the MCP Server78The `tree-sitter-language-pack` MCP server exposes `ts-pack`'s parsing and9code-intelligence capabilities as MCP tools, so an MCP-compatible client (Claude10Code, Claude Desktop) can parse source, extract structure, and detect languages11directly, with no CLI invocation or glue code.1213## How it runs in this plugin1415The plugin auto-registers the server. Its command is the bundled launcher16`scripts/mcp-launch.sh`, which execs `ts-pack mcp`. On first run the launcher17resolves a `ts-pack` binary: it reuses one already on `PATH` or cached in the18plugin's `bin/`, then tries `npx`/`uvx`, then Homebrew, then downloads a prebuilt19from the tool's latest GitHub release. Override the channel with20`TS_PACK_LAUNCHER=auto|npx|uvx|brew|download`.2122The `mcp` subcommand ships in a recent release of the tool. If an older23`ts-pack` is already on `PATH`, it may not expose `mcp` yet — upgrade the binary24(`brew upgrade`, re-download, or rebuild) to pick it up.2526To run it manually:2728```bash29ts-pack mcp # for Claude Code / Claude Desktop (stdio)30```3132## The tools3334**Parsing and code intelligence:**3536- **parse** — syntax tree from `source`; requires an explicit `language`, with37 optional `format` (`sexp` or `json`). It does not detect language from a path —38 use `detect_language` first if you only have a path.39- **process** — code intelligence: structure, imports, exports, symbols, docstrings, comments, diagnostics, chunks. Use `all` flag to enable all features.40- **detect_language** — identify language by `path` or `content` (those are41 the only two parameters; extension detection is implicit in `path`).4243**Language and cache management:**4445- **list_languages** — available, downloaded, or manifest languages; optional filter by name.46- **info** — show language availability and cache status.47- **download** — prefetch parsers: specific languages, language groups, all, or fresh updates.48- **cache_dir** — return the cache directory path.49- **clean_cache** — remove all cached parsers.5051## Resources5253- `ts-pack://languages` — catalog of all known languages.54- `ts-pack://languages/downloaded` — currently cached languages.55- `ts-pack://language/{name}` — per-language metadata template.5657## Prompt and completions5859- **analyze-code** — code-analysis prompt (args: `language`, optional `focus`).60- **Language-name autocomplete** — available language names in completions.6162## When to prefer MCP over the CLI or SDK6364- **Prefer MCP** inside an agent session: the agent calls parsing directly as a65 tool, with no shell-out and no process management.66- **Prefer the CLI** for one-shot parsing/extraction and shell/CI pipelines.67- **Prefer the SDK** when embedding parsing in application code or running custom68 tree-sitter queries.