Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
JS_TS_MCP_CACHE_DIRNoOverrides the cache directory used for the SQLite cache and search index.~/.cache/js-ts-mcp
JS_TS_MCP_POLITENESS_DISABLEDNoSet to 1 to turn off robots.txt, the throttle, retries, conditional GET and the host allowlist at once. Use at your own risk.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
health_checkA

Check that the server is up and report its version.

js_docsA

Fetch an MDN Web Docs or TypeScript handbook page as markdown.

identifier resolution order:

  1. "mdn:" like "mdn:Web/JavaScript/Reference/Global_Objects/Array" → fetched directly from the MDN docs path;

  2. "ts:" like "ts:intro" or "ts:2/generics" → fetched directly as a TypeScript handbook page;

  3. plain names like "Promise" → resolved through the search index: only the top-score candidates are considered; a single distinct path wins, ties prefer mdn Web/JavaScript/Reference pages over mdn Web/API pages over other mdn pages over typescript pages (within the winning tier a parent page beats its subpages); ambiguous or missing matches return an error dict suggesting js_search().

topic (a heading like "Methods") keeps only that heading section plus title/description; if no such section exists the full content is returned with a "note" listing the available headings. max_tokens truncates the final markdown to roughly that many tokens (estimated as len(text)//4), cut at a line boundary, and sets "truncated": true when applied.

On failure returns {"ok": False, "error", "suggestion"} — try js_search() to find the exact page, or use the mdn:/ts: prefix.

js_searchA

Search MDN Web Docs and the TypeScript handbook by name/path.

Ranks entries of the cached search index (every query token must match; exact name > startswith > substring in name > substring in path). Returns {"ok": True, "query", "results": [{source, name, path, score}], "index_count", "stale"}. When the index is unavailable returns {"ok": False, "error", "suggestion"} — retry later.

npm_packageA

Look up a package on the npm registry (metadata + readme).

Returns name, resolved version, description, license, homepage, repository URL, keywords, engines, dependencies and the readme as markdown. When version is given the lookup is pinned to that release; otherwise the latest version is used. Metadata is cached for 1 day keyed by name+version; failures are never cached.

npm no longer puts the README in the packument — for modern packages the readme field is an empty string — so the document is fetched from the package's GitHub repository. When it is found, readme_source names the exact file (e.g. github:colinhacks/zod@HEAD/packages/zod/README.md); when it is not, readme_markdown stays null and note says why. Only github.com repositories are followed; gitlab/bitbucket packages and repos with no repository URL get the note, not a guess.

max_tokens truncates the README to roughly that many tokens (estimated as len(text)//4), cut at a line boundary, and sets "truncated": true when applied. The cache keeps the full README, so the same entry can answer a later call with a larger max_tokens.

On failure returns {"ok": False, "error", "suggestion"}.

js_statusA

Real health check: search index, local cache and upstream endpoints.

The cache check gains read_only: true plus read_only_reason when the database cannot be written (P5). It stays an "ok" check on purpose: a cache that only reads is a degraded optimisation, not a sick server, so overall does not change.

Probes developer.mozilla.org, typescriptlang.org and registry.npmjs.org with a light GET (8s timeout each, through the politeness layer — no curl subprocess). Never raises; returns {"server", "version", "checks": {...}, "politeness": {...}, "overall": "ok"|"degraded"|"error"} where overall is "error" when the search index is unavailable, "degraded" when any check fails, and "ok" otherwise. The "politeness" block holds the layer's counters (robots cache state, throttle delays, budget use, conditional-GET hits) and is not a check: it never changes "overall".

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation4/5

js_docs/js_search and npm_package have clearly distinct purposes, but health_check and js_status overlap in concept; the description of js_status as the 'Real health check' helps, though an agent could still hesitate over which to call first.

Naming Consistency4/5

Mostly consistent snake_case with domain prefixes (js_*, npm_*), but health_check lacks a prefix and breaks the js_ family pattern, a minor deviation.

Tool Count5/5

Five tools is well-scoped for a focused docs/registry server: search, fetch, package lookup, and health probes are each justified without bloat.

Completeness3/5

The surface covers docs search/fetch and exact npm package lookup, but there is no npm package search by keyword or broader registry discovery, a notable gap for a js/ts knowledge server with no general web fallback.

Maintenance

ActivityMaintained
ResponsivenessNo issues