Drive your DaxOps cloud account from Claude Code or any MCP client: build Power BI .pbix dashboards from your data, use the AI prompter, browse Solution starters, and manage saved dashboards, authenticated with your DaxOps license key.
DaxOps MCP demonstrates solid tool design with clear naming conventions (verb_noun pattern), comprehensive parameter schemas using Zod, and detailed descriptions. All 11 tools are explicitly registered with inputSchema and descriptions. Tool annotations (readOnlyHint, openWorldHint) are present. However, output schemas are not formally documented, responses are formatted as text summaries rather than structured JSON objects. Error handling exists but lacks recovery guidance in several tools. Parameter descriptions are generally good (60-150 chars) but some lack format constraints (e.g., brandColor accepts '#RRGGBB' but this is only mentioned in description, not as a regex pattern). The server handles async polling and file I/O well, but destructive operations (daxops_delete_dashboard) lack confirmation patterns.
Build a Power BI .pbix dashboard using the DaxOps AI prompter: describe what you want in natural language, and the AI generates the pages, measures and visuals. Polls to completion (this can take a couple of minutes). Provide exactly one of sourceId or solution.
Build a Power BI .pbix dashboard from an uploaded sourceId or a Solution starter, optionally choosing pages and branding, then download it to disk. Polls to completion (this can take a couple of minutes). Provide exactly one of sourceId or solution. If pages is omitted the engine uses the model's default pages.
Delete a saved dashboard by id (from daxops_list_dashboards). This is permanent and cannot be undone.
Download a previously-built dashboard by job id (returned by daxops_build or daxops_ai_build when polling times out). Polls to completion if the job is still running, then downloads the .pbix to disk.
Fetch a saved dashboard by id (from daxops_list_dashboards): its name, description, basis (solution or sourceId), branding (theme, title, brandColor, logo), pages, and download it to disk.
Output schemas not formally documented. Tools return text summaries via formatBuildSummary(), formatDashboards(), etc., but LLMs cannot parse structured fields. Responses should be JSON objects with typed fields (e.g., {solutions: [{id, title, industry, description, kpis}]}) so agents can extract and chain data.
Destructive operation (daxops_delete_dashboard) lacks confirmation or dry-run pattern. Agents can permanently delete dashboards without a confirmation step, risking accidental data loss.
Parameter constraints not formalized in schema. brandColor accepts '#RRGGBB' hex format, but this is only documented in description text, not as a regex pattern in the schema. LLMs cannot validate format constraints from descriptions alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Show the detected data model (tables, columns, relationships, measures, date column, dimensions, and suggested report pages) for an uploaded sourceId or a Solution starter. Provide exactly one of sourceId or solution. Requires the +Validation feature.
List your saved dashboards (id, name, basis: solution or sourceId, updated timestamp). Use an id with daxops_get_dashboard, daxops_update_dashboard or daxops_delete_dashboard.
List the built-in DaxOps Solution starters (id, title, industry, description, KPIs) you can build from with their bundled sample data. Use a returned id as the "solution" argument to daxops_build, daxops_ai_build or daxops_introspect.
List the brand colour themes (key, name, primary colour) you can pass as "theme" to a build. Requires the +Validation feature on your DaxOps plan.
Update a saved dashboard's metadata (name, description, branding: theme, title, brandColor, logo, pages). The dashboard itself (.pbix) is not rebuilt; use daxops_build or daxops_ai_build to create a new version.
Upload one or more local data files (.csv/.xlsx/.xls) to DaxOps. The engine auto-models them and returns a sourceId (an opaque handle, no credit spent) plus a summary of the detected model. Pass the sourceId to daxops_build or daxops_ai_build. Requires the +Validation feature on your DaxOps plan.
Error messages in helpers.ts (error() function) appear to return plain text. No structured error classification (retryable vs user-fixable vs fatal) or recovery guidance. E.g., 'DaxOps accepted the upload but returned no sourceId' gives no hint whether to retry or ask the user.
Async polling (pollJob) lacks explicit timeout and timeout error guidance. If a build job hangs, the agent blocks indefinitely. Should return a timeout error with job ID for later retrieval via daxops_download.