
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.
Features
Available tools:
list_projects
- List all projects in the Lightdash organization
get_project
- Get details of a specific project
list_spaces
- List all spaces in a project
list_charts
- List all charts in a project
list_dashboards
- List all dashboards in a project
get_custom_metrics
- Get custom metrics for a project
get_catalog
- Get catalog for a project
get_metrics_catalog
- Get metrics catalog for a project
get_charts_as_code
- Get charts as code for a project
get_dashboards_as_code
- Get dashboards as code for a project
Quick Start
Installation
Installing via Smithery
To install Lightdash MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install lightdash-mcp-server --client claude
Manual Installation
npm install lightdash-mcp-server
Configuration
Create a .env
file with your Lightdash API credentials:
LIGHTDASH_API_KEY=your_api_key
LIGHTDASH_API_URL=https://app.lightdash.cloud # or your custom Lightdash instance URL
Usage
- Start the MCP server.
Directly:
npx lightdash-mcp-server
Or, run the installed module with node.
- 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>"
}
},
...
Development
Available Scripts
npm run dev
- Start the server in development mode with hot reloading
npm run build
- Build the project for production
npm run start
- Start the production server
npm run lint
- Run linting checks (ESLint and Prettier)
npm run fix
- Automatically fix linting issues
npm run examples
- Run the example scripts
Contributing
- 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
[
{
"description": "List all projects in the Lightdash organization",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_projects"
},
{
"description": "Get details of a specific project",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
}
},
"required": [
"projectUuid"
],
"type": "object"
},
"name": "get_project"
},
{
"description": "List all spaces in a project",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
}
},
"required": [
"projectUuid"
],
"type": "object"
},
"name": "list_spaces"
},
{
"description": "List all charts in a project",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
}
},
"required": [
"projectUuid"
],
"type": "object"
},
"name": "list_charts"
},
{
"description": "List all dashboards in a project",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
}
},
"required": [
"projectUuid"
],
"type": "object"
},
"name": "list_dashboards"
},
{
"description": "Get custom metrics for a project",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
}
},
"required": [
"projectUuid"
],
"type": "object"
},
"name": "get_custom_metrics"
},
{
"description": "Get catalog for a project",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
}
},
"required": [
"projectUuid"
],
"type": "object"
},
"name": "get_catalog"
},
{
"description": "Get metrics catalog for a project",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
}
},
"required": [
"projectUuid"
],
"type": "object"
},
"name": "get_metrics_catalog"
},
{
"description": "Get charts as code for a project",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
}
},
"required": [
"projectUuid"
],
"type": "object"
},
"name": "get_charts_as_code"
},
{
"description": "Get dashboards as code for a project",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
}
},
"required": [
"projectUuid"
],
"type": "object"
},
"name": "get_dashboards_as_code"
},
{
"description": "Get metadata for a specific table in the data catalog",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
},
"table": {
"type": "string"
}
},
"required": [
"projectUuid",
"table"
],
"type": "object"
},
"name": "get_metadata"
},
{
"description": "Get analytics for a specific table in the data catalog",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectUuid": {
"type": "string"
},
"table": {
"type": "string"
}
},
"required": [
"projectUuid",
"table"
],
"type": "object"
},
"name": "get_analytics"
},
{
"description": "Get organization user attributes",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_user_attributes"
}
]