daxops-mcp
by cyphonica
README.md
# daxops-mcp
> Build Power BI dashboards from your data, straight from Claude Code (or any MCP client).
`daxops-mcp` is a small, self-contained **MCP server** that lets a [DaxOps](https://daxops.com) account
holder drive their DaxOps cloud from an AI agent: upload your own data and generate Power BI `.pbix`
dashboards, describe what you want in plain English with the AI prompter, browse the built-in Solution
starters, and manage saved dashboards - all authenticated with your **DaxOps license key**.
---
## Install
Requirements: **Node 18+**.
You do not need to clone anything. The published package runs straight from npm.
**Run on demand with `npx` (recommended):**
```bash
npx -y daxops-mcp
```
**Or install it globally:**
```bash
npm i -g daxops-mcp
daxops-mcp
```
Either way the server reads your license key from the `DAXOPS_LICENSE_KEY` environment variable and
refuses to start without it (see below). You will normally never run it by hand - Claude Code launches it
for you from the config snippet.
### Where to get your license key
Copy it from your DaxOps account page: **<https://daxops.com/account>**. It is the same key the DaxOps
desktop app uses. Keep it secret.
---
## Add it to Claude Code
The simplest path - register the published package (Claude Code runs it via `npx`):
```bash
claude mcp add daxops --env DAXOPS_LICENSE_KEY=<your key> -- npx -y daxops-mcp
```
### Or paste this into your Claude Code / `.mcp.json` config
```json
{
"mcpServers": {
"daxops": {
"command": "npx",
"args": ["-y", "daxops-mcp"],
"env": { "DAXOPS_LICENSE_KEY": "<your key>" }
}
}
}
```
### Local development / from a checkout
If you are working from a clone of this repo instead of the published package, build it once
(`npm install && npm run build`) and point the config at the built entry point:
```json
{
"mcpServers": {
"daxops": {
"command": "node",
"args": ["/absolute/path/to/daxops/mcp/dist/index.js"],
"env": { "DAXOPS_LICENSE_KEY": "<your key>" }
}
}
}
```
---
## Configuration (environment)
| Variable | Required | Default | Meaning |
| --- | --- | --- | --- |
| `DAXOPS_LICENSE_KEY` | **yes** | - | Your DaxOps license key (from <https://daxops.com/account>). The server refuses to start without it. |
| `DAXOPS_BASE_URL` | no | `https://daxops.com` | The DaxOps site origin (override only for a staging instance). |
---
## Tools
| Tool | What it does |
| --- | --- |
| `daxops_list_solutions` | List the built-in Solution starters (id, title, industry, description, KPIs). |
| `daxops_list_themes` | List the brand colour themes you can pass to a build. |
| `daxops_upload_data` | Upload local `.csv/.xlsx/.xls` files; returns a `sourceId` plus a detected-model summary. |
| `daxops_introspect` | Show the detected model (tables, columns, relationships, measures, suggested pages) for a `sourceId` or `solution`. |
| `daxops_build` | Build a `.pbix` from a `sourceId` or `solution` (optional pages/branding), poll to done, and download it to disk. |
| `daxops_ai_build` | **Headline tool.** Describe the dashboard in plain English; the AI agent designs and builds it, then downloads the `.pbix`. Uses AI credits. |
| `daxops_download` | Download a finished build's `.pbix` by job id (e.g. one that was still running earlier). |
| `daxops_list_dashboards` | List your saved dashboard definitions. |
| `daxops_save_dashboard` | Save a reusable dashboard definition (name + solution/sourceId + pages/brand). |
| `daxops_open_dashboard` | Fetch one saved dashboard's full definition by id. |
| `daxops_delete_dashboard` | Delete a saved dashboard by id. |
Some tools (data upload, model introspection, saved dashboards) require the **+Validation** feature on
your DaxOps plan; without it the API returns a clear "this is a +Validation feature" message, surfaced as
the tool error.
### Example prompts
- *"Use `daxops_ai_build` to make a multi-page sales report from my uploaded CSVs - an exec overview with KPI cards, a sales trend, and breakdowns by brand and by retailer."*
- *"Upload `sales.csv` and `regions.xlsx`, then introspect the model and tell me what pages you'd suggest."*
- *"List the Solution starters, then build the CFO overview with the `ocean` theme and save it to `cfo.pbix`."*
- *"List my saved dashboards and rebuild the one called 'Monthly Exec Pack'."*
### Typical flow
1. `daxops_list_solutions` - or `daxops_upload_data { paths: ["sales.csv", "regions.xlsx"] }` to get a `sourceId`.
2. `daxops_ai_build { prompt: "an exec sales overview with YoY growth and a region map", sourceId: "..." }`
- or `daxops_build { solution: "finance/cfo-overview", theme: "ocean", title: "CFO Overview" }`.
3. The `.pbix` is saved to disk (default `./daxops-<title>.pbix`, or your `outPath`).
Async builds return a job id immediately; the build/AI tools poll until the job is `done` (a couple of
minutes is normal) and then download the `.pbix`. If a poll times out, the job id is reported so you can
retry with `daxops_download`.
---
## Security
- Your license key is read **only** from the `DAXOPS_LICENSE_KEY` environment variable and is sent only as
an `Authorization: Bearer` header to your DaxOps site over HTTPS. It is **never** printed in tool output,
errors, or logs (server logs go to stderr; stdout carries only the MCP protocol).
- Your data is processed on DaxOps' servers in **Auckland, New Zealand**, and the uploaded data is
**deleted after the build completes**. Only the `.pbix` you download is kept.
---
## License
This is commercial software. Use of `daxops-mcp` requires an active DaxOps account and license key, and is
governed by the DaxOps Terms of Service at <https://daxops.com>. All rights reserved. It is not open-source
and may not be redistributed.
---
## Develop
```bash
npm install
npm run dev # tsx watch
npm run typecheck # tsc --noEmit
npm run build # tsc -> dist/
```
TDQS
A4.2/5.0
Scored across 11 tools
Disambiguation4/5
Most tools are distinct, but daxops_build and daxops_ai_build both create dashboards with slight differences, which could cause confusion. However, descriptions clarify the AI vs manual approach.
Naming Consistency5/5
All tools follow a consistent 'daxops_verb_noun' pattern in snake_case, with clear actions like build, list, delete, upload.
Tool Count5/5
11 tools cover the full pipeline of uploading data, introspecting models, building dashboards, managing saved definitions, and listing resources. No excess or deficiency.
Completeness5/5
The tool surface supports end-to-end dashboard creation: upload, introspect, build (manual/AI), download, and manage saved dashboards. No obvious gaps for the stated domain.
Maintenance
ActivityStale
ResponsivenessNo issues