
Lightdash
STDIOMCP server for accessing Lightdash analytics and data visualization platform
MCP server for accessing Lightdash analytics and data visualization platform
A MCP(Model Context Protocol) server that accesses to Lightdash.
This server provides MCP-compatible access to Lightdash's API, allowing AI assistants to interact with your Lightdash data through a standardized interface.
Available tools:
list_projects
- List all projects in the Lightdash organizationget_project
- Get details of a specific projectlist_spaces
- List all spaces in a projectlist_charts
- List all charts in a projectlist_dashboards
- List all dashboards in a projectget_custom_metrics
- Get custom metrics for a projectget_catalog
- Get catalog for a projectget_metrics_catalog
- Get metrics catalog for a projectget_charts_as_code
- Get charts as code for a projectget_dashboards_as_code
- Get dashboards as code for a projectTo install Lightdash MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install lightdash-mcp-server --client claude
npm install lightdash-mcp-server
LIGHTDASH_API_KEY
: Your Lightdash PATLIGHTDASH_API_URL
: The API base URLThe lightdash-mcp-server supports two transport modes: Stdio (default) and HTTP.
npx lightdash-mcp-server
... "lightdash": { "command": "npx", "args": [ "-y", "lightdash-mcp-server" ], "env": { "LIGHTDASH_API_KEY": "<your PAT>", "LIGHTDASH_API_URL": "https://<your base url>" } }, ...
npx lightdash-mcp-server -port 8080
This starts the server using StreamableHTTPServerTransport, making it accessible via HTTP at http://localhost:8080/mcp
.
For Claude Desktop and other MCP clients:
Edit your MCP configuration json to use the url
field instead of command
and args
:
... "lightdash": { "url": "http://localhost:8080/mcp" }, ...
For programmatic access:
Use the streamable HTTP client transport:
import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; const client = new Client({ name: 'my-client', version: '1.0.0' }, { capabilities: {} }); const transport = new StreamableHTTPClientTransport( new URL('http://localhost:8080/mcp') ); await client.connect(transport);
Note: When using HTTP mode, ensure the environment variables LIGHTDASH_API_KEY
and LIGHTDASH_API_URL
are set in the environment where the server is running, as they cannot be passed through MCP client configuration.
See examples/list_spaces_http.ts
for a complete example of connecting to the HTTP server programmatically.
npm run dev
- Start the server in development mode with hot reloading (stdio transport)npm run dev:http
- Start the server in development mode with HTTP transport on port 8080npm run build
- Build the project for productionnpm run start
- Start the production servernpm run lint
- Run linting checks (ESLint and Prettier)npm run fix
- Automatically fix linting issuesnpm run examples
- Run the example scriptsnpm run lint