Skip to main content
Glama
Jubast
by Jubast

live-docs-mcp

A local-only MCP server that gives AI coding agents up-to-date documentation for a specific library or tool while they're implementing a feature — a context7-style capability that runs entirely on your machine, with no hosted backend.

Usage

Add it to your MCP client's server config, the same way you'd add any other npx-based MCP server:

{
  "mcpServers": {
    "live-docs": {
      "command": "npx",
      "args": ["-y", "live-docs-mcp"]
    }
  }
}

Related MCP server: docs-mcp

Tools

  • search_library({ query }) — find a documented library by name or alias. Returns { id, name, description, score, versions? }[]versions lists the available version keys when a library has more than one documented version.

  • search_docs({ libraryId, topic, version?, limit? }) — search a library's documentation by topic, using the id from search_library. If the library has multiple versions, version is required — omitting it (or passing one that doesn't match) returns an error listing the available keys; passing one for a library that isn't versioned is also an error. Returns { version?, results: { heading, snippet, sourceUrl, score }[] }version is present only when the library is versioned.

How it works

Each supported library has a config entry (docsUrl, llmsTxtUrl, llmsFullTxtUrl, githubUrl, npmPackage, ...). When search_docs is called, the server fetches documentation for that library in this order, using the first one that resolves:

  1. llmsFullTxtUrl

  2. llmsTxtUrl

  3. docsUrl, if it points directly at a markdown file

  4. The repo's readme from githubUrl, as a last resort — README.md by default, or the exact path set in githubReadmePath if the repo uses a different filename or casing (e.g. Readme.md)

githubBranch is required whenever githubUrl is set — there is no default-branch guessing of any kind. A config with githubUrl and no githubBranch fails to load.

Beyond that first "seed" page, the server also resolves and fetches additional pages, up to a fixed cap: markdown links found within an llmsTxtUrl/llmsFullTxtUrl seed (restricted to links on the same origin as the seed), and/or files under a configured githubDocsPath in the library's GitHub repo. Both sources are best-effort — a failed extra page is simply skipped and never breaks the request.

Fetched content is cached on disk (in your OS's standard cache directory) for 24 hours by default, so repeat lookups are instant. Override the TTL with the LIVE_DOCS_MCP_TTL_MS environment variable (milliseconds).

Multiple versions

A library with more than one actively-documented version (e.g. Express 4.x and 5.x) can declare a versions map instead of its own flat source fields — each version gets its own independent docsUrl/llmsTxtUrl/llmsFullTxtUrl/githubUrl/githubBranch/githubDocsPath:

{
  "id": "widget",
  "name": "Widget",
  "versions": {
    "v1": { "docsUrl": "https://widget.dev/v1/docs.md" },
    "v2": { "docsUrl": "https://widget.dev/v2/docs.md" }
  }
}

versions and the flat source fields are mutually exclusive on one entry — set one or the other, never both. A versions map must have at least one entry. There is no default version: search_docs always requires an explicit version for a versioned library.

Adding your own libraries

Built-in libraries live in this package. To add or override an entry — for an internal/private library, or to patch a built-in's URLs — create a JSON file at your OS's standard config directory, e.g. on Linux: ~/.config/live-docs-mcp/tools.json:

[
  {
    "id": "my-internal-lib",
    "name": "My Internal Lib",
    "docsUrl": "https://docs.internal.example.com/my-lib",
    "llmsTxtUrl": "https://docs.internal.example.com/my-lib/llms.txt",
    "githubUrl": "https://github.com/acme/my-lib",
    "githubBranch": "develop",
    "githubDocsPath": "docs"
  }
]
  • githubBranch — the branch or tag to use for GitHub-based fetches. Required whenever githubUrl is set — there is no default branch guessing.

  • githubDocsPath — a path within the repo (relative to its root) to search for additional markdown docs, e.g. "docs".

  • githubReadmePath — the exact path to the repo's readme file, if it isn't README.md (e.g. "Readme.md"). Optional; defaults to "README.md".

An entry whose id matches a built-in overrides that built-in's fields; any other id is added alongside the built-ins. The merged result is re-validated as a whole, so combining an override with a built-in in a way that violates the schema (e.g. adding versions to a builtin that already has flat fields set, or vice versa) causes the entire user config file to be rejected — with an error logged to stderr — falling back to built-ins only, rather than silently applying a partial or broken merge.

Upgrading note: if your existing override sets githubUrl without githubBranch, it now fails to load — the old implicit main/master fallback no longer exists. Add an explicit githubBranch to fix it.

Development

npm install
npm test        # run the test suite
npm run build   # compile to dist/
npm run dev     # run the server directly from source via tsx

Available Tools

2 tools
search_docsC

Search a library's documentation by topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
topicYes
versionNoExact version key from search_library's "versions" array (e.g. "5x"). Required if the library has multiple versions; omit it otherwise.
libraryIdYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only search operation but does not describe return format, pagination behavior, error conditions, or any side effects. This is a minimal disclosure that leaves the agent largely uninformed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler or redundancy. It is appropriately front-loaded and easy to parse, though it sacrifices informative content for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with four parameters, no output schema, and no annotations, the description is too sparse. It does not explain how the search behaves, what result data looks like, or how 'limit' interacts with results. The version parameter's schema description is helpful but addresses only one aspect; overall the description is insufficient for confident invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (only 'version' has a description), and the tool description itself adds no parameter meaning. It does not clarify 'topic', 'libraryId', or 'limit' semantics. The description fails to compensate for the low schema coverage, leaving three of four parameters effectively undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Search a library's documentation by topic.' It clearly indicates this tool searches inside a library's documentation, which implicitly differentiates it from the sibling tool search_library. However, it does not explicitly name or contrast with the sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus search_library, nor any exclusions. The only usage hint comes from the schema's version parameter description, which is about a specific parameter, not tool selection. There is no explicit 'when-to-use' or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_libraryC

Find a documented library by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the search intent and gives no information about whether the operation is read-only, how matches are ranked, whether pagination applies, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant wording. It is appropriately concise for a simple one-parameter search tool, though it sacrifices some helpful contextual detail for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter lookup tool this is minimally viable: an agent can infer the intended call. But with no output schema, no annotation context, and an unaddressed sibling tool, the description leaves gaps around expected return value and when to prefer this over search_docs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides only a bare string with minLength 1 and no description, so the phrase 'by name' adds meaningful semantics by indicating the query should be a library name. However, it does not clarify whether matching is exact, partial, case-insensitive, or fuzzy, leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Find') and resource ('documented library') and specifies the lookup mechanism ('by name'). It is distinguishable from the sibling search_docs at the resource level, though 'documented library' is slightly ambiguous about whether it means libraries of documentation or documentation about libraries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool instead of search_docs, nor any contextual hints such as prerequisites or result handling. The sibling tool is not mentioned, leaving the agent to infer the difference from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.0
    • First observedsearch_docs
    • First observedsearch_library

TDQS

B3/5.0
Disambiguation5/5

search_library targets finding a library by name, while search_docs targets searching within a library's documentation by topic. The two tools have clearly distinct purposes and are complementary rather than overlapping.

Naming Consistency5/5

Both tool names follow the same search_<noun> snake_case pattern. The naming is predictable and clearly indicates action and target.

Tool Count3/5

Two tools is on the low end for a documentation-focused server, but each tool covers a distinct step in the lookup workflow. It feels minimal yet coherent.

Completeness2/5

The surface is limited to search operations; there is no way to list libraries, retrieve full documentation content, or navigate doc structure. Agents may be able to find relevant topics but cannot fetch the actual documentation content.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that provides tools to fetch live, version-accurate documentation, changelogs, examples, and method signatures for npm and PyPI packages, preventing AI coding agents from hallucinating stale APIs.
    21
    ISC
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides a local MCP server for searching and retrieving documentation from 22+ open-source projects, enabling AI coding assistants to access up-to-date docs without network dependency.
    11
    2
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Local MCP server that indexes documentation from URLs/files into a vector database, enabling coding agents to search and use up-to-date library and API documentation.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jubast/live-docs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server