lichtblick-docs-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LICHTBLICK_DOCS_SOURCE | No | URL or local Docusaurus build/ directory to read llms.txt and pages from | value of LICHTBLICK_DOCS_SITE_URL |
| LICHTBLICK_DOCS_SITE_URL | No | Public docs URL; llms.txt links are resolved against it | https://lichtblick-suite.github.io/docs/ |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Authoritative, up-to-date reference for Lichtblick (an open-source visualization and diagnosis tool for robotics data, forked from Foxglove Studio) and for its extension API, the npm package @lichtblick/suite.
When to use these tools:
For ANY question about Lichtblick: panels (3D, Image, Plot, Raw Messages, Map, ...), data sources (ROS 1/2, MCAP, rosbridge, Foxglove WebSocket, remote files), layouts, settings, extensions, custom panels, message converters, topic aliases or camera models.
Call docs_search or extension_api_get BEFORE using web search or answering from memory. Your training data may be outdated, and Foxglove Studio documentation and APIs differ from Lichtblick's.
Only fall back to web search if these tools return nothing relevant, and say so.
How to use them:
docs_search with a few keywords, then docs_fetch the most relevant page path to read it in full.
When writing or reviewing extension or panel code, call extension_api_get for every @lichtblick/suite type you use (e.g. PanelExtensionContext, RenderState, ExtensionContext, SettingsTreeNode) and use the exact signatures it returns. Use extension_api_list if you do not know the symbol name.
docs_list shows every available page when searching is not enough.
Always cite the documentation URL returned by the tools in your answer.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| docs_listA | Lists every page of the official Lichtblick documentation and guides with its path and summary. Use it to discover what is documented when docs_search is not enough; then read a page with docs_fetch. |
| docs_searchA | Full-text search over the official Lichtblick documentation and guides (panels, data sources, layouts, settings, extensions, custom panels, message converters). Use this BEFORE web search for any Lichtblick question. Returns matching sections with page path, URL and snippet; read the full page with docs_fetch. |
| docs_fetchA | Returns the full markdown of an official Lichtblick documentation page, by path (as returned by docs_search or docs_list) or by URL. Prefer this over fetching the website. |
| extension_api_listA | Lists every type, interface and constant exported by @lichtblick/suite, the Lichtblick extension API. Use it to find the right symbol name, then call extension_api_get. |
| extension_api_getA | Returns the exact TypeScript declaration and doc comments of a symbol exported by @lichtblick/suite, e.g. PanelExtensionContext, ExtensionContext, RenderState, SettingsTreeNode, MessageEvent. Always use it instead of memory when writing Lichtblick extension or panel code: the API differs from Foxglove Studio's. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Browser Support | Lichtblick is designed to work optimally on Chrome web browser. Below is the list of supported browsers and their minimum versions. |
| Frameworks | This section of the documentation provides a guide on how to connect Lichtblick to various data sources and understand the supported data formats a... |
| MCAP | Load local and remote [MCAP files](https://mcap.dev). |
| PX 4 | Load local PX 4 ULog (`ulg`) files for visualization. |
| ROS 1 | Load local and remote ROS 1 (`.bag`) files, or connect directly to a live ROS 1 stack. |
| ROS 2 | Load local and remote [MCAP](./mcap.md) files containing ROS 2 data, or connect directly to a live ROS 2 stack. |
| Rosbridge | |
| Schema encodings | Both MCAP-based and websockets sources support several message and schema encodings. |
| Velodyne | |
| Connecting to Data | To begin visualizing data, navigate to the Lichtblick dashboard and select a data source option. |
| Live Data | Connect to live data sources using Lichtblick's WebSocket, Rosbridge, and Velodyne Lidar integrations for real-time streaming. You can also load re... |
| Local Data | Lichtblick enables you to load local data files for visualization. |
| Multiple files | |
| Experimental Features | |
| Custom Camera Models | Add support for lenses or projections not covered by the built-in pinhole model (e.g., fisheye). When a camera stream’s calibration (`CameraInfo`) ... |
| ExtensionContext | The `ExtensionContext` is passed to your `activate()` function and lets you register everything your extension provides. Think of it as your toolbo... |
| ExtensionModule | The ExtensionModule is the entry point of a Lichtblick extension. Your bundle must export a single `activate()` function. Lichtblick calls this fun... |
| Extension API | The [`@lichtblick/suite`](https://www.npmjs.com/package/@lichtblick/suite) package provides type definitions and helpers for building Lichtblick ex... |
| Message Converters | Message converters transform messages from one schema to another. In Lichtblick, converters are schema-based (not topic-based): you map a source sc... |
| Other types | All public types live in `@lichtblick/suite` — see the package for the authoritative source: https://www.npmjs.com/package/@lichtblick/suite |
| PanelExtensionContext | The `PanelExtensionContext` is passed to your panel’s `initPanel()` function. It is how your panel interacts with Lichtblick: subscribe to data, re... |
| Settings API | Use the Settings API to attach per-topic settings UI to [message converters](./message-converters) (scoped by panel type). This lets users adjust c... |
| Settings Tree | Use a Settings Tree to render a simple settings UI for your panel or [message converter](./message-converters). You describe fields and groups as a... |
| Topic Aliases | Topic aliases let your extension expose friendlier or standardized topic names without changing the data source. Panels can subscribe to an alias, ... |
| Extensions | Extend Lichtblick's capabilities with custom extensions to better support your team's unique workflows. Build bespoke panels, convert custom messag... |
| Local Development | Develop and test your **Lichtblick extensions locally** using the official scaffolding tool. |
| Publishing Extensions | Publishing extensions is a **work in progress** for Lichtblick. |
| Getting Started | Lichtblick empowers robotics teams to efficiently explore, collaborate on, and interpret their robots' data, leading to smarter iterations and fast... |
| Settings | Here you can find the general settings that allows you to configure core preferences, such as language, appearance, and default behaviors. These se... |
| Alerts | Lichtblick's alert system surfaces issues that occur during data playback, live connections, and panel processing so the user always knows when som... |
| Annotating ROS Enum Fields | ROS messages do not natively support enumerations, but Lichtblick provides two ways to treat constant values as enums: using a separate enum messag... |
| Favorite Layouts | Mark personal and shared layouts as favorites to keep them at the top of the Layouts sidebar and load them automatically when Lichtblick opens. |
| Visualization | Lichtblick offers a comprehensive suite of visualization tools to help you analyze and interpret your robotics data effectively. |
| Layouts | Lichtblick layouts enable users to design and save customized workspaces tailored to specific tasks or workflows. These layouts can be reused for r... |
| Message Path Syntax | In Lichtblick, message path syntax is utilized to precisely access specific data within your messages. |
| ArrowPrimitive | Represents a visual arrow used to indicate direction or orientation in 3D space. |
| Built-in types | Primitive types are the building blocks of Foxglove's supported message schemas. |
| CameraCalibration | Contains intrinsic and extrinsic calibration parameters for a camera. |
| CircleAnnotation | A circle annotation on a 2D image. |
| Color | A color represented in RGBA format. |
| CompressedImage | A compressed image. |
| CompressedVideo | A single frame of a compressed video bitstream. |
| CubePrimitive | A primitive representing a cube or rectangular prism. |
| CylinderPrimitive | A primitive representing a cylinder, elliptic cylinder, or truncated cone. |
| LineType | An enumeration that defines how a set of input points is connected to form lines. |
| LogLevel | The severity level assigned to a log entry. |
| NumericType | The data type used to represent a numeric value. |
| PointsAnnotationType | Defines how a set of points should be rendered as an annotation. |
| PositionCovarianceType | Describes how the position covariance data was obtained or estimated. |
| SceneEntityDeletionType | An enumeration that specifies the scope of entities targeted by a `SceneEntityDeletion` command. |
| FrameTransform | A transform between two reference frames in 3D space. |
| FrameTransforms | An array of [`FrameTransform`](./frame-transform.md) messages. |
| GeoJSON | GeoJSON data for annotating maps. |
| Grid | A 2D grid of data. |
| ImageAnnotations | Array of annotations for a 2D image. |
| Message Schemas | Lichtblick relies on structured message formats to ensure accurate data visualization and processing. By adhering to Lichtblick's schema standards,... |
| KeyValuePair | A key with its associated value. |
| LaserScan | Single scan from a planar laser range-finder |
| LinePrimitive | A primitive representing a series of points connected by lines. |
| LocationFix | A navigation satellite fix for any Global Navigation Satellite System |
| Log | A log message |
| ModelPrimitive | A primitive representing a 3D model file loaded from an external URL or embedded data. |
| PackedElementField | A field present within each element in a byte array of packed elements. |
| PointCloud | A collection of N-dimensional points, which may contain additional fields with information like normals, intensity, etc. |
| Point2 | A point representing a position in 2D space. |
| Point3 | A point representing a position in 3D space. |
| PointsAnnotation | An array of points on a 2D image. |
| PoseInFrame | A position and orientation for an object or reference frame in 3D space. |
| Pose | A position and orientation for an object or reference frame in 3D space. |
| PosesInFrame | An array of timestamped poses for an object or reference frame in 3D space. |
| Quaternion | A [quaternion](https://eater.net/quaternions) representing a rotation in 3D. |
| RawImage | A raw image. |
| SceneEntityDeletion | An instruction to delete entities that were previously added to the scene. |
| SceneEntity | A graphical object within a 3D scene. An entity can consist of several primitives that all operate within the same coordinate frame. |
| SceneUpdate | A message used to modify the set of entities rendered in a 3D scene. |
| SpherePrimitive | A primitive that describes a spherical or ellipsoidal shape. |
| TextAnnotation | A textual annotation overlaid on a 2D image. |
| TextPrimitive | A primitive used to display a text label in a 3D scene. |
| TriangleListPrimitive | A primitive that defines a collection of triangles or a surface constructed from a triangular mesh. |
| Vector2 | A directional vector defined in two-dimensional space. |
| Vector3 | A directional vector defined in three-dimensional space. |
| Migrate from Other Tools | Lichtblick streamlines robotics development by integrating commonly used developer tools into modular panels—providing a unified development enviro... |
| Open via CLI | Easily open local files using the command line by installing the Lichtblick desktop application. This allows you to quickly access .mcap files with... |
| 3D Panel | Visualize robots and environments in 3D — markers, entities, point clouds, URDFs, transforms and more. |
| Delta Measure Mode | Compare values at two points in Plot and State Transitions panels. |
| Gauge Panel | The Gauge Panel in Lichtblick allows you to visualize numeric values from incoming topic [message paths](/visualization/message-path-syntax.md) on ... |
| Image Panel | Display raw and compressed images, as well as compressed videos. |
| Panels | Panels in Lichtblick are flexible, modular elements that allow you to visualize and interact with data. You can customize and organize these panels... |
| Indicator Panel | The Indicator Panel in Lichtblick displays a color-coded label to indicate threshold values in your data. It is useful for providing at-a-glance st... |
| Map Panel | Display GPS and GeoJSON data on a world map. |
| Playback Performance Panel | The Playback Performance panel provides a real-time visualization of playback performance metrics during the execution of a playback session. It di... |
| Plot | The Plot Panel in Lichtblick is a user interface component designed to facilitate the visualization and control of plotting data. It allows to view... |
| Raw Messages | The **Raw Messages** panel in Lichtblick is a powerful debugging and inspection tool that enables users to visualize raw [ROS](/connecting-to-data/... |
| State Transitions | Visualize discrete value changes over time using the State Transitions panel. |
| Teleoperation Panel | The Teleoperation Panel allows you to remotely control your robot by sending [geometry\_msgs/Twist](https://docs.ros.org/en/api/geometry_msgs/html/... |
| User Scripts Panel | User Scripts enable you to create synthetic topics in Lichtblick by processing and reshaping existing messages. These scripts are especially useful... |
| Playback | Lichtblick enables seamless navigation through both local and remote datasets using its playback controls. |
| Shortcuts | Use keyboard shortcuts to efficiently navigate the Lichtblick visualization interface. |
| Synchronizing Instances | The _Lichtblick Sync_ feature allows users to synchronize playback actions—such as **play**, **pause**, **seek**, and **play until**—across multipl... |
| Variables | Variables in Lichtblick allow users to define global values that can be reused across multiple panels within a layout. This feature simplifies upda... |
| Create Custom Camera Model | Build a custom camera model extension to handle specialized camera configurations not supported by the standard camera models in Lichtblick. |
| Create Custom Panel | Build a custom panel extension to visualize and interact with your robotics data in ways that best suit your workflow. |
| Create Custom WebSocket Server | Build a WebSocket server using the Foxglove WebSocket Protocol to stream real-time robotics data to Lichtblick. |
| Create Message Converter | Build a message converter extension to transform custom messages into Foxglove-supported schemas for visualization in built-in panels. |
| Create Topic Alias | Build a topic alias extension to create alternative names for topics, simplifying complex hierarchies or standardizing naming conventions. |
| Introduction | Welcome to the Lichtblick Guides section! Here you'll find comprehensive, step-by-step tutorials for extending Lichtblick's capabilities and integr... |
TDQS
Scored across 5 tools
Each tool has a distinct role: docs_list browses the page index, docs_search finds sections by keyword, docs_fetch reads a full page, and the two extension_api tools split symbol discovery from symbol retrieval. The descriptions explicitly state the hand-off relationships (list/search → fetch, list → get), leaving no realistic misselection.
Names follow a predictable resource_action pattern in snake_case, split into two clean namespaces: docs_* (list/search/fetch) and extension_api_* (list/get). The only variance is fetch vs get across the two namespaces, which is justified by their different semantics (full page vs symbol declaration).
Five tools is tightly scoped to the two jobs of the server: documentation lookup and extension API reference. Every tool earns its place, with no redundant or filler operations.
The docs surface is complete (enumerate, search, retrieve) and the API surface covers symbol enumeration and declaration lookup. A minor gap is that the extension API can only be queried by exact symbol name after listing, with no full-text/typeahead search over declarations, which could slow discovery for loosely-named symbols.