lightdash mcp server

Local 2025-08-31 23:47:42 0

MCP-compatible server that enables AI assistants to interact with Lightdash analytics data, providing tools to list and retrieve projects, spaces, charts, dashboards, and metrics through a standardized interface.


smithery badge npm version

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.

Lightdash Server MCP server

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

  1. Start the MCP server.

Directly:

npx lightdash-mcp-server
Or, run the installed module with node.

  1. 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

  1. Fork the repository
  2. Create your feature branch
  3. Run tests and linting: npm run lint
  4. Commit your changes
  5. Push to the branch
  6. 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"
  }
]