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 project
To 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 URL
The lightdash-mcp-server supports two transport modes: Stdio (default) and HTTP.
- Start the MCP server:
npx lightdash-mcp-server
- Edit your MCP configuration json:
...
"lightdash": {
"command": "npx",
"args": [
"-y",
"lightdash-mcp-server"
],
"env": {
"LIGHTDASH_API_KEY": "<your PAT>",
"LIGHTDASH_API_URL": "https://<your base url>"
}
},
...
- Start the MCP server in HTTP mode:
npx lightdash-mcp-server -port 8080
This starts the server using StreamableHTTPServerTransport, making it accessible via HTTP at http://localhost:8080/mcp
.
- Configure your MCP client to connect via HTTP:
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 scripts
- Fork the repository
- Create your feature branch
- Run tests and linting:
npm run lint
- Commit your changes
- Push to the branch
- Create a Pull Request