Lightdash MCP Server
lightdash-mcp-서버
Lightdash 에 접근하는 MCP(Model Context Protocol) 서버입니다.
이 서버는 Lightdash API에 대한 MCP 호환 액세스를 제공하여 AI 어시스턴트가 표준화된 인터페이스를 통해 Lightdash 데이터와 상호 작용할 수 있도록 합니다.
특징
사용 가능한 도구:
list_projects- Lightdash 조직의 모든 프로젝트를 나열합니다.get_project- 특정 프로젝트의 세부 정보를 가져옵니다list_spaces- 프로젝트의 모든 공간 나열list_charts- 프로젝트의 모든 차트를 나열합니다list_dashboards- 프로젝트의 모든 대시보드 나열get_custom_metrics- 프로젝트에 대한 사용자 정의 메트릭 가져오기get_catalog- 프로젝트에 대한 카탈로그 가져오기get_metrics_catalog- 프로젝트에 대한 메트릭 카탈로그 가져오기get_charts_as_code- 프로젝트에 대한 코드로 차트 가져오기get_dashboards_as_code- 프로젝트의 대시보드를 코드로 가져오기
Related MCP server: Metabase MCP Plus
빠른 시작
설치
Smithery를 통해 설치
Smithery를 통해 Claude Desktop에 Lightdash MCP 서버를 자동으로 설치하려면:
지엑스피1
수동 설치
npm install lightdash-mcp-server구성
Lightdash API 자격 증명으로 .env 파일을 만듭니다.
LIGHTDASH_API_KEY=your_api_key
LIGHTDASH_API_URL=https://app.lightdash.cloud # or your custom Lightdash instance URL용법
MCP 서버를 시작합니다.
곧장:
npx lightdash-mcp-server또는 설치된 모듈을 node로 실행합니다.
MCP 구성 JSON을 편집하세요.
...
"lightdash": {
"command": "npx",
"args": [
"-y",
"lightdash-mcp-server"
],
"env": {
"LIGHTDASH_API_KEY": "<your PAT>",
"LIGHTDASH_API_URL": "https://<your base url>"
}
},
...개발
사용 가능한 스크립트
npm run dev- 핫 리로딩을 사용하여 개발 모드로 서버 시작npm run build- 프로덕션을 위한 프로젝트 빌드npm run start- 프로덕션 서버 시작npm run lint- 린팅 검사 실행(ESLint 및 Prettier)npm run fix- 린팅 문제를 자동으로 수정합니다npm run examples- 예제 스크립트 실행
기여하다
저장소를 포크하세요
기능 브랜치를 생성하세요
테스트 및 린팅 실행:
npm run lint변경 사항을 커밋하세요
지점으로 밀어 넣기
풀 리퀘스트 만들기
Available Tools
13 toolslightdash_get_analyticsC
Get analytics for a specific table in the data catalog
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. | |
| table | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. However, it only states the high-level purpose without disclosing behavioral traits (e.g., read-only, authentication needs, error behaviors, or side effects).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is under-specified rather than concise. It omits critical information that would help an agent, making it insufficient for effective use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, output schema, and incomplete parameter descriptions, the description should provide more context (e.g., return format, error handling, typical use cases). It falls short, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only projectUuid has a description). The tool description does not add meaning to the parameters, such as acceptable values for 'table' or relationship to the project. Baseline of 3 is not justified due to missing compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb (Get) and resource (analytics for a specific table in the data catalog). It distinguishes from siblings like lightdash_get_catalog or lightdash_get_metadata, though 'analytics' remains somewhat vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternative siblings, nor does it mention prerequisites or contexts. A simple statement without any usage direction limits the agent's ability to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_get_catalogC
Get catalog for a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility. It only states the operation is a 'get' but does not mention read-write behavior, required permissions, error conditions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is too terse—a single, vague sentence. While brevity is valued, it lacks essential structure or elaboration that would help an agent use it correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and the presence of similar sibling tools, the description is incomplete. It does not explain what the catalog consists of or how it differs from closely related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, and the schema already provides a clear description. The tool description adds no additional meaning beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get catalog for a project' uses a specific verb and resource, but 'catalog' is ambiguous without context; it does not explain what the catalog contains. It partially distinguishes from siblings like get_metrics_catalog but doesn't clarify the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. There is no indication of when to use this tool versus siblings like lightdash_get_metrics_catalog or lightdash_get_project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_get_charts_as_codeC
Get charts as code for a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits such as whether it is read-only, what format 'as code' entails, or any side effects. The agent lacks critical context to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at 6 words, but it is appropriately front-loaded and has no wasted words. A slightly longer description could improve clarity without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and the presence of sibling tools, the description is incomplete. It does not explain what 'as code' means or how the output differs from listing charts, leaving the agent underinformed for proper invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and explains the single parameter clearly. The description adds no additional meaning beyond the schema, so it meets the baseline for parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Get', the resource 'charts as code', and scope 'for a project', making the purpose clear. However, it does not differentiate from siblings like lightdash_list_charts or lightdash_get_dashboards_as_code, which might cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives like lightdash_list_charts or lightdash_get_dashboards_as_code. No prerequisites or context for proper usage are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_get_custom_metricsC
Get custom metrics for a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description should disclose behavioral traits. It only states the action without mentioning if it is read-only, any side effects, or permissions needed, which is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and to the point, consisting of a single phrase. It is not verbose, but could benefit from slight expansion for better clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description is minimally adequate. However, it lacks details about the return format or behavior, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description. The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'custom metrics' for a project, making the purpose clear. It distinguishes from siblings like lightdash_get_metrics_catalog, but does not elaborate on what custom metrics are, so slightly below top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as lightdash_get_metrics_catalog or other list tools. The description lacks context on prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_get_dashboards_as_codeC
Get dashboards as code for a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits like read-only or any side effects. A GET operation likely is read-only, but this is not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and to the point, but lacks any structural elements like usage hints or parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description is minimally adequate but does not explain what 'as code' means or the output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter well-described in the schema. The description adds no additional context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves dashboards in a code format, but doesn't differentiate from similar siblings like lightdash_get_charts_as_code or lightdash_list_dashboards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, such as when dashboards as code is needed versus listing dashboards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_get_metadataB
Get metadata for a specific table in the data catalog
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. | |
| table | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It only states 'Get metadata' implying a read operation, but lacks details on authentication needs, rate limits, side effects, or what the metadata contains. The description is overly minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that communicates the core purpose without any unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should provide more context about the returned metadata (e.g., fields, structure). It does not sufficiently compensate for these gaps, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (projectUuid has a description, table does not). The description does not add any parameter semantics beyond what is in the schema, so it neither helps nor harms. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'metadata for a specific table' within the data catalog, distinguishing it from sibling tools like lightdash_get_catalog (which likely retrieves the entire catalog) and lightdash_get_metrics_catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as lightdash_get_catalog or lightdash_get_metrics_catalog. There is no mention of prerequisites or context for invoking the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_get_metrics_catalogB
Get metrics catalog for a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for disclosing behavior. It only states a generic 'get' operation without specifying if it is read-only, if it requires permissions, or what side effects occur. The return format and pagination are also omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence. Every word is necessary and no extraneous information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description is adequate but minimal. It does not explain what the catalog contains or how to process the results, which could be useful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single parameter with high coverage (100%). The description adds marginal value by noting how to obtain the project UUID. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and resource (metrics catalog) with a scope (for a project). However, it does not differentiate from sibling tools like lightdash_get_catalog or lightdash_get_custom_metrics, which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, constraints, or exclusive scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_get_projectA
Get details of a specific project
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks behavioral details such as read-only nature, error handling (e.g., project not found), authentication needs, or rate limits. This is a significant gap for a tool that likely involves a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is appropriately front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no output schema), the description is adequate but could be improved by mentioning the return type or that it provides full project details. The lack of annotations increases the burden on the description, which it does not fully meet.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter description in the schema ('The UUID of the project. You can obtain it from the project list.') is adequate. The tool description adds no additional meaning beyond what the schema already provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get details of a specific project' clearly states the action (get) and resource (project), and implicitly differentiates from sibling tools like lightdash_list_projects which lists projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you have a project UUID, but does not explicitly state when to use this tool versus alternatives (e.g., list_projects to obtain the UUID). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_get_user_attributesB
Get organization user attributes
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description alone must disclose behavioral traits. It only states 'Get', implying a read operation, but fails to mention authentication needs, data scope, or any side effects. This lack of detail is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that clearly states the action. However, it could be slightly more informative without losing conciseness, e.g., by mentioning the return type.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of parameters and output schema, the description is minimal and adequate for a very simple tool. However, it does not specify what 'user attributes' includes or whether the result is a list or a single object, leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, and schema coverage is 100%. The description adds no additional meaning since there is nothing to describe. Following the baseline rule for 0 parameters, a score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get organization user attributes' uses a clear verb-resource structure, but it fails to differentiate from sibling tools like lightdash_get_analytics or lightdash_get_metadata. While the resource is specific, the lack of distinguishing details lowers the score from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention any conditions, prerequisites, or exclusions, leaving the agent to guess the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_list_chartsA
List all charts in a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'list all charts' indicating a read operation, but lacks details on pagination, ordering, error handling, or what happens if the project is invalid. The behavioral coverage is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no unnecessary words. It efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is somewhat complete but lacks details on return format or any constraints. Given low complexity, it is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with a clear description for projectUuid. The description adds no additional meaning beyond the schema, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the resource (charts), and the scope (in a project). It distinguishes from sibling tools like lightdash_list_dashboards and lightdash_list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool requires a projectUuid but does not specify when to use this tool versus alternatives like lightdash_get_charts_as_code or lightdash_list_dashboards. No explicit when-not or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_list_dashboardsA
List all dashboards in a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description only states the tool lists dashboards. It does not disclose pagination, filtering, or return format, but the operation is inherently read-only and simple. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no redundancy, directly communicating the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is mostly complete. However, it could hint at the return value (e.g., listing dashboard names or UUIDs).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully covers the single parameter with a clear description and a hint to obtain the UUID. The tool description does not add additional context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all dashboards in a project, using a specific verb and resource scope. It distinguishes from sibling tools like lightdash_list_charts and lightdash_list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., getting dashboards as code) or any prerequisites beyond the required projectUuid. The description is purely functional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_list_projectsA
List all projects in the Lightdash organization
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states the action without revealing any behavioral traits such as whether pagination occurs, authentication requirements, or potential side effects. For a list operation, additional context like response format is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and no output schema. The description is sparse but sufficient for a basic listing operation. It could be improved by mentioning the expected output structure (e.g., 'returns an array of project summaries').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the input schema has 100% coverage. The description adds no parameter information, but none is needed. Baseline for no parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'projects', with the scope 'in the Lightdash organization'. This distinguishes it from sibling tools like 'lightdash_get_project' (singular) and other list operations for different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for listing all projects, but it doesn't explicitly state when to use or when not to use, nor does it mention alternatives. Since no sibling tool directly competes, the guidance is adequate but not detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightdash_list_spacesC
List all spaces in a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectUuid | Yes | The UUID of the project. You can obtain it from the project list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'list', implying a read operation, but fails to disclose pagination, permission requirements, or whether the list is comprehensive. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. It is appropriately sized for a simple list operation, though a second sentence could clarify return format without harming brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description is incomplete. It does not specify response structure, pagination, or any edge cases. For a list tool in a suite of similar tools, this is insufficient for accurate selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, providing its meaning and how to obtain its value. The description adds no additional insight beyond the schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('spaces') with a scope ('in a project'). However, it does not differentiate from sibling tools like lightdash_list_charts or lightdash_list_dashboards, missing explicit distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The schema parameter description indirectly tells how to get the projectUuid, but there is no mention of use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v1.0.0- Added
lightdash_get_analytics - Added
lightdash_get_catalog - Added
lightdash_get_charts_as_code - Added
lightdash_get_custom_metrics - Added
lightdash_get_dashboards_as_code - Added
lightdash_get_metadata - Added
lightdash_get_metrics_catalog - Added
lightdash_get_project - Added
lightdash_get_user_attributes - Added
lightdash_list_charts - Added
lightdash_list_dashboards - Added
lightdash_list_projects - Added
lightdash_list_spaces
TDQS
Scored across 13 tools
Most tools target distinct resources (analytics, catalog, charts, dashboards, projects), but there is potential confusion between 'get_catalog' and 'get_metrics_catalog', and between 'get_analytics' and 'get_metadata' for a specific table. Descriptions help clarify, but some overlap exists.
All tools follow a consistent 'lightdash_verb_noun' pattern, using 'get_' or 'list_' prefixes. The 'as_code' suffix in two tools is a minor deviation but still fits the pattern well.
With 13 tools covering catalog, charts, dashboards, metrics, projects, spaces, and user attributes, the number is well-scoped for a read-only analytics server. It is neither too few nor too many.
The server covers many read operations (get, list) but lacks any write tools (create, update, delete), which is a notable gap for full lifecycle management in Lightdash. Agents may need write capabilities for many workflows.
Maintenance
Related MCP Connectors
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Analytics for MCP servers. Query your tool calls, first-call success, retries and schema cost.
Related MCP Servers
- FlicenseBqualityDmaintenanceAn MCP server that provides AI assistants with full access to Apache Superset instances, enabling interaction with dashboards, charts, datasets, databases, and SQL execution capabilities.34-
- AlicenseAqualityCmaintenanceAn MCP server that enables AI assistants to query databases, execute SQL, and manage Metabase resources like dashboards, cards, and collections through natural language.22MIT
- FlicenseNot gradedqualityDmaintenanceModel Context Protocol (MCP) server that gives AI assistants a safe, correct data-analyst capability over business metrics - without raw SQL improvisation.-
- AlicenseAqualityDmaintenanceA Model Context Protocol server for interacting with Lightdash, enabling AI assistants to discover data, create charts, and manage dashboards programmatically.2823MIT