Lightdash MCP服务器
    ](https://github.com/poddubnyoleg/lightdash_mcp/stargazers)
使用模型上下文协议(MCP)将Claude、Cursor和其他AI助手连接到Lightdash分析。
一种用于交互的模型上下文协议(MCP)服务器 Lightdash,使LLM能够以编程方式发现数据、创建图表和管理仪表板。
特性
此MCP服务器为完整的数据分析工作流程提供了一套全面的工具:
- 发现:探索数据目录,查找表/探索,并理解模式
- 查询:执行具有完整过滤器、指标和聚合支持的查询
- 图表管理:创建、读取、更新和删除具有复杂可视化的图表
- 仪表盘管理:使用图块、过滤器和布局构建和管理仪表板
- 资源组织:为内容组织创建和管理空间
安装
先决条件
- Python 3.10+
- Lightdash实例(云或自托管)
- Lightdash个人访问令牌(从您的Lightdash配置文件设置中获取)
pip快速入门(推荐)
pip install lightdash-mcp快速开始使用uvx
uvx lightdash-mcppipx快速入门
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 在每一个请求。这 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代币
- 登录您的Lightdash实例
- 首选 设置 → 个人访问令牌
- 点击 生成新令牌
- 复制令牌(以开头
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/ 目录。要添加新工具,请执行以下操作:
- 创建一个新文件 在
lightdash_mcp/tools/(例如。,my_new_tool.py)
- 定义工具:
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- 重新启动服务器 -该工具将自动注册
工具注册表
工具通过以下方式自动发现 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服务器
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 使用适当的测试添加您的更改
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
支持
对于问题和疑问:
