mcp-engine-ai-readines…
Use when preparing or assessing a Power BI semantic model for Copilot, Fabric data agents, or natural-language Q&A — clear…
Use when a DAX query, measure, or visual is slow, when interpreting analyze timings, Storage Engine / Formula Engine splits, or query plans, when VertiPaq storage size or cardinality drives cost, or when the user wants a tuning pass or before/after benchmark. For wrong values,
$ npx -y skills add maxanatsko/mcp-engine-public --skill mcp-engine-dax-performance --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/mcp-engine-dax-performanceContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when a DAX query, measure, or visual is slow, when interpreting analyze timings, Storage Engine / Formula Engine splits, or query plans, when VertiPaq storage size or cardinality drives cost, or when the user wants a tuning pass or before/after benchmark. For wrong values,
name: mcp-engine-dax-performance description: Use when a DAX query, measure, or visual is slow, when interpreting analyze timings, Storage Engine / Formula Engine splits, or query plans, when VertiPaq storage size or cardinality drives cost, or when the user wants a tuning pass or before/after benchmark. For wrong values, use mcp-engine-dax-debugging; for writing new queries, use mcp-engine-query; for a whole-model assessment, use mcp-engine-model-quality.
Optimization of correct-but-slow queries: measure, change one thing, re-measure. Never claim a speedup without an identical before/after comparison.
1. **Baseline** — `run_query` `{ "operation": "analyze", "query": "<slow query>", "spec": { "runs": 5, "clear_cache": true } }`. On Desktop, call this cold-cache only when the response has no `clear_cache failed` limitation; otherwise fix cache clearing or start a separate warm-cache run with `clear_cache: false`, discard run 1, and use the median of runs 2–5. On Service XMLA, cache clearing is unavailable: record that limitation, discard run 1 as warm-up, and use the median of runs 2–5 as the warm-cache baseline. The Service Storage Engine / Formula Engine split comes from discarded run 1, so use it only as diagnostic triage, not as baseline or before/after evidence. Record run variance. For very fast queries (<10ms) increase `runs` — noise dominates. 2. **Triage** — classify with [performance-remediation-playbook](references/performance-remediation-playbook.md) section A: SE-heavy, FE-heavy, or model-size pressure. Interpretation rules for timings live in [query-performance-guide](references/query-performance-guide.md). 3. **Capture the plan when operators matter** — add `"include_query_plan": true` to spec (Pro); decode unfamiliar operators with [dax-query-plan-reference](references/dax-query-plan-reference.md). 4. **Check storage when SE-heavy or memory-bound** — `run_query` `{ "operation": "vertipaq", "spec": { "table": "<table>", "include_cardinality": true } }`; remediation options in [vertipaq-optimization-guide](references/vertipaq-optimization-guide.md). 5. **Hypothesize and change one thing** — the playbook's symptom table maps each diagnosis to its fix. Route the edit: measure rewrite → `mcp-engine-semantic-authoring`; model shape, columns, or relationships → `mcp-engine-schema-authoring` (or `mcp-engine-refactoring` when consumers are involved). If a named skill is not installed, make the edit from the tool's `inputSchema` and the model's conventions, or ask the user to add that skill. 6. **Re-measure identically** — same query text, connection kind, `runs`, and cache treatment. On Service XMLA, again discard run 1 and compare the median of the remaining identical warm runs. Keep the change only when the comparison shows it; revert otherwise and try the next hypothesis. 7. **Protect the win** — pin the result with a connection-appropriate `performance_budget` definition. On Desktop with verified cache clearing, validate `manage_tests` `{ "operation": "validate", "spec": { "id": "<test-id>", "name": "<name>", "type": "performance_budget", "spec": { "query": "<tuned query>", "runs": { "cold": 1, "warm": 3 } }, "assert": { "kind": "performance", "total_ms": { "max": <cold-and-warm-budget> } } } }`. On Service XMLA, validate `{ "operation": "validate", "spec": { "id": "<test-id>", "name": "<name>", "type": "performance_budget", "spec": { "query": "<tuned query>", "runs": { "cold": 1, "warm": 3 } }, "assert": { "kind": "performance", "warm_ms": { "max": <warm-budget> } } } }`: the unsupported `cold` slot is the unasserted warm-up, while `warm_ms.max` covers only the following three runner timings. Derive the Service threshold from the maximum post-warm-up timing plus approved headroom, not from the discarded first run or the analyze median. Then call `{ "operation": "put" }` with the same complete `spec`, followed by `{ "operation": "run" }` so regressions surface in test runs. Never apply a Desktop `total_ms` budget to Service results.
After a tuning pass, report:
1. The query tuned and the baseline numbers (total, SE/FE split, runs). 2. Each hypothesis tried, the change made, and its measured effect. 3. The final before/after comparison for kept changes. 4. Changes reverted and why. 5. The `performance_budget` test added, with its id.
The SemanticOps MCP (formerly MCP Engine) is a Power BI tool that lets AI assistants like Claude interact with your Power BI models programmatically: read your model structure, run DAX queries, modify your semantic model, and perform advanced analytics - all through natural conversation.
Use when preparing or assessing a Power BI semantic model for Copilot, Fabric data agents, or natural-language Q&A — clear…
Use when starting a SemanticOps MCP session, connecting to a Power BI model, checking the current connection, applying saved…
Use when a Power BI measure or query returns wrong values, unexpected blanks, inflated or duplicated totals, a total row that…
Use when the user asks for a model audit, model quality review, scorecard, bad-practices or best-practices assessment, or a…
Use when a user types onboarding, asks to set up SemanticOps MCP, wants help choosing Free vs Pro, or wants licensing, modes,…
Use when writing or fixing DAX query text, choosing between run_query operations, validating results, testing RLS access for…