Skip to main content
Glama
lichtblick-suite

lichtblick-docs-mcp

Official

lichtblick-docs-mcp POC

MCP server exposing the Lichtblick documentation and the @lichtblick/suite extension API to AI agents

Tools

Tool

Purpose

docs_search

Full-text search over docs and guides, returns sections with URL anchor

docs_fetch

Full markdown of a page, by path or URL

docs_list

All pages with path and summary, optionally filtered by section

extension_api_get

TypeScript declaration and doc comments of a @lichtblick/suite symbol

extension_api_list

All symbols exported by @lichtblick/suite

Each page is also exposed as an MCP resource: lichtblick-docs://<path>.

Related MCP server: DocFlow MCP Server

How it works

  • Docs: on first use, reads llms.txt from the docs site (generated by docusaurus-plugin-llms), fetches each page's .md route (generated by docusaurus-plugin-copy-page-button) and builds an in-memory MiniSearch index of ##/### sections. No build step or release is needed when the docs change.

  • Extension API: parses the TypeScript sources shipped in the pinned @lichtblick/suite dependency, following the re-exports of src/index.ts.

  • Transport: stdio. The client spawns the process; no port is opened. All tools are read-only.

Quick start

Requires Node.js 22.12+.

npm install
npm run build
npm run inspect   # optional: MCP Inspector UI

Open this folder in VS Code; .vscode/mcp.json registers the built server. Start it from MCP: List Servers and use the tools in Copilot Chat agent mode.

Configuration

Variable

Default

Description

LICHTBLICK_DOCS_SITE_URL

https://lichtblick-suite.github.io/docs/

Public docs URL; llms.txt links are resolved against it

LICHTBLICK_DOCS_SOURCE

value of LICHTBLICK_DOCS_SITE_URL

URL or local Docusaurus build/ directory to read llms.txt and pages from

To test unpublished docs, build the docs repo and point LICHTBLICK_DOCS_SOURCE at its build/ folder.

Development

npm test          # vitest
npm run typecheck
npm run dev       # tsc --watch

Known limitations

  • docusaurus-plugin-llms writes file-based URLs into llms.txt and ignores slug/id front matter, so pages that override them (for example initial-information, 3d-panel, guides/introduction) are listed but cannot be fetched and are skipped from the index.

  • The extension API only covers what @lichtblick/suite exports; it is updated by bumping the dependency.

  • Not published; distribution (npx), CI and versioning are out of scope for the PoC.

Available Tools

5 tools
docs_fetchFetch a Lichtblick documentation pageA
Read-only

Returns the full markdown of a documentation page, by path (from docs_search/docs_list) or URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYese.g. 'docs/extensions/extension-api/panel-extension-context'

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, so safety is covered. The description goes beyond that by disclosing the return format — the full markdown body, not a summary or snippet — which matters for context budgeting. It still omits size/truncation behavior and whether an invalid path errors gracefully.

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

Conciseness5/5

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

A single sentence that front-loads the return type and resource before the input forms. No filler, no restatement of the title.

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

Completeness4/5

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

There is no output schema, so the description carries responsibility for return values and does address them ('full markdown'). For a one-parameter read-only fetch tool that is nearly complete; only edge behavior on an invalid path or oversized document is unaddressed.

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

Parameters4/5

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

Schema description coverage is 100% on the single 'path' parameter, so the baseline is 3. The description adds real value by stating where path values originate (docs_search/docs_list) and by mentioning URL as an accepted form, though that URL option is not reflected in the schema and could confuse an agent.

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?

States a specific verb and resource — 'Returns the full markdown of a documentation page' — and specifies the two input forms (path or URL). The parenthetical '(from docs_search/docs_list)' implicitly positions this as the retrieval step after discovery, but it never explicitly contrasts itself with siblings like extension_api_get, which fetches a different resource type.

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

Usage Guidelines3/5

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

The description implies the workflow by naming docs_search/docs_list as the source of paths, which tells an agent to discover first and fetch second. However, it gives no explicit when-to-use guidance against extension_api_get/extension_api_list, which cover a distinct lookup surface, and no prerequisites or exclusions.

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

docs_listList Lichtblick documentation pagesB
Read-only

Lists the pages of the Lichtblick documentation with their path and summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNoOnly list pages of this section, e.g. "Documentation" or "Guides".

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description does add useful behavioral context by naming the returned fields (path and summary), which matters since there is no output schema. However, it says nothing about ordering, pagination, result limits, or scope of the listing.

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

Conciseness5/5

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

A single front-loaded sentence with no filler, and it efficiently packs in both the action and the return shape. Nothing could be trimmed without losing information.

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

Completeness4/5

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

For a one-parameter, read-only list tool with no output schema, the essential information (what is listed, what each entry contains) is present. It falls just short of complete because pagination behavior and the relationship to the sibling search/fetch tools remain unstated.

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?

Schema description coverage is 100% for the single optional 'section' parameter, so the schema fully documents it, including examples ("Documentation", "Guides"). The description adds nothing about the filter, so the baseline of 3 applies.

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?

States a specific verb ("Lists") and resource ("pages of the Lichtblick documentation") plus the fields returned (path, summary). It is clear what the tool does, but it never contrasts itself with docs_search or docs_fetch, so the agent must infer the listing-vs-searching distinction from the name alone.

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?

No when-to-use or when-not-to-use guidance is given, and the sibling tools docs_search and docs_fetch are not mentioned. The agent can only infer from the word "Lists" that this is the enumeration/browse entry point rather than a query or fetch tool.

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

extension_api_getGet a @lichtblick/suite API symbolA
Read-only

Returns the TypeScript declaration and doc comments of a symbol exported by @lichtblick/suite, e.g. PanelExtensionContext, ExtensionContext, RenderState, SettingsTreeNode.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesExported symbol name (case-insensitive).

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read, and there is no output schema, so the description's statement that it returns the TypeScript declaration plus doc comments is genuinely useful behavioral context. However, it says nothing about failure behavior for an unknown or mis-cased symbol, which is the main operational unknown for a lookup tool.

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

Conciseness5/5

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

A single front-loaded sentence: the return contract comes first and the illustrative examples follow. No filler, no restatement of the tool name, every clause earns its place.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so adequately by naming the declaration and doc comments. For a one-parameter read tool with a readOnly hint, the only real gap is the error/lookup-miss behavior.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents the single 'symbol' parameter, including case-insensitivity. The description still adds value by enumerating representative valid values (PanelExtensionContext, ExtensionContext, RenderState, SettingsTreeNode), which guides the agent in choosing the right input token.

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?

States a specific verb and resource: it returns the TypeScript declaration and doc comments of a symbol exported by @lichtblick/suite. The concrete symbol examples make the scope unambiguous and distinguish it from a listing tool, though it never names the sibling extension_api_list as its complement (symbol discovery).

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 explicit when-to-use guidance, no prerequisites, and no pointer to alternatives. An agent must infer that extension_api_list is the way to discover symbol names before calling this tool, and nothing states when not to use it (e.g. for general docs, where docs_fetch/docs_search apply).

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

extension_api_listList @lichtblick/suite API symbolsA
Read-only

Lists every type, interface and constant exported by @lichtblick/suite, the Lichtblick extension API.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered by structured data. The description adds scope (the complete export surface, not a filtered subset) but says nothing about whether entries carry signatures, whether results are paginated, or how large the payload is — a real usability question for an 'every symbol' list.

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

Conciseness5/5

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

A single sentence with the verb and the full resource scope front-loaded, and the package-to-product expansion appended without waste. No filler, no restatement of the tool name.

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

Completeness4/5

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

For a zero-parameter, read-only enumeration tool with no output schema, the description conveys enough to call it correctly: what universe of symbols is returned. It falls slightly short only in not clarifying the shape of the returned list or its relationship to extension_api_get.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. Nothing described implies hidden inputs.

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?

States a specific verb (lists) and resource (every type, interface and constant exported by @lichtblick/suite), plus expands the package name into the human-readable 'Lichtblick extension API'. It never names the sibling extension_api_get, so the list-vs-detail distinction is only implied by 'every' versus a singular get.

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 when-to-use guidance, no statement of prerequisites, and no pointer to extension_api_get for retrieving a single symbol's details. The agent must infer that this is the discovery entry point before drilling into extension_api_get.

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.

  1. 5 tool updatesv0.0.0
    • First observeddocs_fetch
    • First observeddocs_list
    • First observeddocs_search
    • First observedextension_api_get
    • First observedextension_api_list

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct action on a distinct resource: docs_list (browse index), docs_search (full-text query), docs_fetch (retrieve by path/URL), and extension_api_list/get for the API reference. The list/search/fetch boundary is clearly spelled out (fetch takes a path from list/search), leaving no realistic misselection.

Naming Consistency5/5

All five names follow a strict snake_case namespace_verb pattern (docs_list, docs_search, docs_fetch, extension_api_list, extension_api_get). The docs_ vs extension_api_ prefixes cleanly separate the two sub-areas while staying internally consistent.

Tool Count5/5

Five tools is a well-scoped set for a read-only documentation server, with each tool earning its place at a distinct granularity of access. No redundant or filler tools.

Completeness4/5

Browsing, searching, and fetching docs plus listing/fetching API symbols covers the core read-only workflows with no dead ends. The only minor gap is that there is no search over the extension API surface -- an agent must list all exported symbols or already know the symbol name to use extension_api_get.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Exposes SQLite database query tools and markdown document resources over JSON-RPC 2.0 stdio transport, enabling AI assistants to read and search documents and execute read-only SQL queries.
    8
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Serves documentation for Git repositories via MCP, providing tools to search docs, retrieve feature details, WIP status, and full context. Enables LLM agents to access human and LLM-optimized documentation through stdio or SSE transports.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Lets AI agents search and read a folder of Markdown documentation at query time, exposing heading-level search, whole-page or section retrieval, and page listing as tools and resources over stdio or Streamable HTTP. Can run as a CLI, a hosted endpoint, or a library inside an existing Node or Next.js site.
    3
    706 npm
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI models to search and retrieve up-to-date technical documentation for popular agent frameworks via web search and page extraction. It supports both stdio and SSE transports.
    -