数据分析协议服务器

Lightdash MCP Server是一个基于模型上下文协议(MCP)的服务器,用于连接AI助手与Lightdash分析平台,支持数据发现、图表创建和仪表板管理。

  • by poddubnyoleg
  • Python
  • 本地部署
  • 24 星标
  • 更新于
在 GitHub 查看 poddubnyoleg/lightdash_mcp

使用说明

Lightdash MCP服务器

使用模型上下文协议(MCP)将Claude、Cursor和其他AI助手连接到Lightdash分析。

一种用于交互的模型上下文协议(MCP)服务器 Lightdash,使LLM能够以编程方式发现数据、创建图表和管理仪表板。

特性

此MCP服务器为完整的数据分析工作流程提供了一套全面的工具:

  • 发现:探索数据目录,查找表/探索,并理解模式
  • 查询:执行具有完整过滤器、指标和聚合支持的查询
  • 图表管理:创建、读取、更新和删除具有复杂可视化的图表
  • 仪表盘管理:使用图块、过滤器和布局构建和管理仪表板
  • 资源组织:为内容组织创建和管理空间

安装

先决条件

  • Python 3.10+
  • Lightdash实例(云或自托管)
  • Lightdash个人访问令牌(从您的Lightdash配置文件设置中获取)

pip快速入门(推荐)

pip install lightdash-mcp

快速开始使用uvx

uvx lightdash-mcp

pipx快速入门

pipx run lightdash-mcp

从源代码安装

git clone https://github.com/poddubnyoleg/lightdash_mcp.git
cd lightdash_mcp
pip install .

谷歌云IAP支持

如果你的Lightdash实例落后 谷歌云身份感知代理 (例如,Cloud Run with --iap),与一起安装 iap 额外:

pip install lightdash-mcp[iap]
# or from source
pip install .[iap]

集 IAP_ENABLED=true.服务器将签署JWT(观众 {LIGHTDASH_URL}/*)通过IAM凭据API并将其附加为 Proxy-Authorization: Bearer <jwt> 在每一个请求。这 Authorization: ApiKey Lightdash保留了标题。

支持服务帐户凭据和用户凭据(应用程序默认凭据/ADC):

服务帐户凭据 (Cloud Run、GCE等中的默认设置):

  • 运行时服务帐户需要 roles/iam.serviceAccountTokenCreator 本身
  • 运行时服务帐户需要 roles/iap.httpsResourceAccessor 在Cloud Run服务上

用户凭据(ADC) (例如。 gcloud auth application-default login):

  • 集 IAP_SA 发送到服务帐户电子邮件以模拟签名JWT
  • 用户需要 roles/iam.serviceAccountTokenCreator 在目标服务帐户上
  • 目标服务帐户需要 roles/iap.httpsResourceAccessor 在Cloud Run服务上

配置

环境变量

服务器需要以下环境变量:

变量 必填 描述 示例
LIGHTDASH_TOKEN ✅ 您的Lightdash个人访问令牌 ldt_abc123...
LIGHTDASH_URL ✅ Lightdash实例的基本URL https://app.lightdash.cloud
CF_ACCESS_CLIENT_ID ❌ Cloudflare访问客户端ID(如果位于CF访问之后) -
CF_ACCESS_CLIENT_SECRET ❌ Cloudflare访问客户端密码(如果位于CF访问之后) -
LIGHTDASH_PROJECT_UUID ❌ 默认项目UUID(回退到第一个可用项目) 3fc2835f-...
IAP_ENABLED ❌ 启用Google Cloud IAP身份验证(true/1) true
IAP_SA ❌ 使用用户凭据(ADC)时IAP的服务帐户电子邮件 sa@project.iam.gserviceaccount.com

获取您的Lightdash代币

  1. 登录您的Lightdash实例
  2. 首选 设置 → 个人访问令牌
  3. 点击 生成新令牌
  4. 复制令牌(以开头 ldt_)

使用Claude Desktop

将以下内容添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "lightdash": {
      "command": "uvx",
      "args": ["lightdash-mcp"],
      "env": {
        "LIGHTDASH_TOKEN": "ldt_your_token_here",
        "LIGHTDASH_URL": "https://app.lightdash.cloud",
        "LIGHTDASH_PROJECT_UUID": "your-project-uuid"
      }
    }
  }
}

使用克劳德代码(CLI)

创建或编辑 .mcp.json 在项目根目录中:

{
  "mcpServers": {
    "lightdash": {
      "type": "stdio",
      "command": "lightdash-mcp",
      "env": {
        "LIGHTDASH_URL": "https://your-lightdash-instance.com",
        "LIGHTDASH_TOKEN": "ldt_your_token_here",
        "LIGHTDASH_PROJECT_UUID": "your-project-uuid"
      }
    }
  }
}

重新启动Claude Code并运行 /mcp 验证服务器是否显示为已连接。

备注:不要承诺 .mcp.json 如果它包含机密,请将其添加到 .gitignore.

与其他MCP客户端一起使用

运行前导出环境变量:

export LIGHTDASH_TOKEN="ldt_your_token_here"
export LIGHTDASH_URL="https://app.lightdash.cloud"
lightdash-mcp

可用工具

📊 发现和元数据

工具 说明
list-projects 列出所有可用的Lightdash项目
get-project 获取特定项目的详细信息
list-explores 列出项目中所有可用的探索/表格
get-explore-schema 获取特定探索的详细模式(维度、指标、连接)
list-spaces 列出项目中的所有空间(文件夹)
get-custom-metrics 获取项目中定义的自定义指标

📈 图表管理

工具 说明
list-charts 列出所有已保存的图表,可选择按名称筛选
search-charts 按名称或描述搜索图表
get-chart-details 获取特定图表的完整配置
create-chart 使用度量查询和可视化配置创建新的已保存图表
update-chart 更新现有图表的配置(名称、描述、查询、可视化)
run-chart-query 执行图表查询并检索数据
delete-chart 删除已保存的图表

📋 仪表盘管理

工具 说明
list-dashboards 列出项目中的所有仪表板
create-dashboard 创建一个新的仪表板(空白或带有互动程序)
duplicate-dashboard 使用新名称克隆现有仪表板
get-dashboard-tiles 使用可选的完整配置从仪表板获取所有互动程序
get-dashboard-tile-chart-config 获取特定仪表板互动程序的完整图表配置
get-dashboard-code 以代码形式获取完整的仪表板配置
create-dashboard-tile 在仪表板上添加新互动程序(图表、标记或织机)
update-dashboard-tile 更新互动程序属性(位置、大小、内容)
rename-dashboard-tile 重命名仪表板互动程序
delete-dashboard-tile 从仪表板上删除互动程序
update-dashboard-filters 更新仪表板级别过滤器
run-dashboard-tiles 同时执行仪表板上的一个、多个或所有图块

🔍 查询执行

工具 说明
run-chart-query 执行已保存图表的查询并返回数据
run-dashboard-tiles 运行仪表板磁贴的查询(支持批量执行)
run-raw-query 对任何探索执行特别指标查询

🗂️ 资源管理

工具 说明
create-space 创建一个新空间来组织图表和仪表板
delete-space 删除空白

项目结构

.
├── pyproject.toml              # Package configuration
├── lightdash_mcp/              # Main package
│   ├── __init__.py             # Package init
│   ├── server.py               # MCP server entry point
│   ├── lightdash_client.py     # Lightdash API client
│   └── tools/                  # Tool implementations
│       ├── __init__.py         # Auto-discovery and tool registry
│       ├── base_tool.py        # Base tool interface
│       └── *.py                # Individual tool implementations
├── README.md
└── LICENSE

发展

添加新工具

服务器会自动从中发现并注册工具 tools/ 目录。要添加新工具,请执行以下操作:

  1. 创建一个新文件 在 lightdash_mcp/tools/ (例如。, my_new_tool.py)

  2. 定义工具:

    from pydantic import BaseModel, Field
    from .base_tool import ToolDefinition
    from .. import lightdash_client as client
    
    class MyToolInput(BaseModel):
        param1: str = Field(..., description="Description of param1")
    
    TOOL_DEFINITION = ToolDefinition(
        name="my-new-tool",
        description="Description of what this tool does",
        input_schema=MyToolInput
    )
    
    def run(param1: str) -> dict:
        """Execute the tool logic"""
        result = client.get(f"/api/v1/some/endpoint/{param1}")
        return result
    
  3. 重新启动服务器 -该工具将自动注册

工具注册表

工具通过以下方式自动发现 tools/__init__.py,其中:

  • 扫描 tools/ Python模块目录
  • 导入每个模块(不包括实用模块)
  • 按其注册工具 TOOL_DEFINITION.name

测试

您可以通过导入单个工具来测试它们:

from tools import tool_registry

# List all registered tools
print(tool_registry.keys())

# Test a specific tool
result = tool_registry['list-projects'].run()
print(result)

故障排除

身份验证错误

如果你看到 401 Unauthorized 错误:

  • 验证您的 LIGHTDASH_TOKEN 是正确的,并且以 ldt_
  • 检查令牌是否未过期
  • 确保您在Lightdash中拥有必要的权限

连接错误

如果您看到连接错误:

  • 验证 LIGHTDASH_URL 是正确的
  • 对于Lightdash Cloud:使用 https://app.lightdash.cloud
  • 对于自托管:使用 https://your-domain.com
  • 如果在Cloudflare Access之后,请确保 CF_ACCESS_CLIENT_ID 和 CF_ACCESS_CLIENT_SECRET 已设定
  • 如果在Google Cloud IAP之后,请确保 IAP_ENABLED=true 已设置,请安装 pip install lightdash-mcp[iap],并验证服务帐户是否具有 serviceAccountTokenCreator 本身

未找到工具

如果工具未显示:

  • 检查文件是否在 tools/ 目录
  • 确保文件具有 TOOL_DEFINITION 变量
  • 验证该文件不在中的排除列表中 tools/__init__.py
  • 重新启动MCP服务器

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 使用适当的测试添加您的更改
  4. 提交拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

支持

对于问题和疑问: