Mcp Powerbi — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Powerbi (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Claude-compatible MCP server for discovering Fabric/Power BI workspaces and semantic models.
This repo is intentionally based around Microsoft's official powerbi-modeling-mcp:
get_catalog, list_workspaces, and list_semantic_models use the Power BI REST API for tenant/workspace discovery.list_semantic_models_in_workspace_via_modeling_mcp launches Microsoft @microsoft/powerbi-modeling-mcp and uses its XMLA/TOM auth path to enumerate semantic models inside a known workspace.That split is necessary because Microsoft Power BI Modeling MCP can connect and model/query semantic models, but it does not expose a tenant-wide workspace discovery tool.
auth_statusstart_device_logincomplete_device_loginlist_workspaceslist_semantic_modelsget_cataloglist_semantic_models_in_workspace_via_modeling_mcpget_known_workspace_catalogexecute_dax_querynpm install
npm run setup
npm run buildnpm run setup asks for:
powerbi-modeling-mcp command and argsIt writes a local .env file with mode 0600. The MCP server loads this file automatically on start.
Use the built JS after npm run build.
For this machine, start from docs/claude-desktop-config.example.json. It points the wrapper to the already installed Microsoft native binary:
/Users/ducna/.codex/mcp/powerbi-modeling-mcp/node_modules/@microsoft/powerbi-modeling-mcp-darwin-arm64/dist/powerbi-modeling-mcpGeneric service-principal config:
{
"mcpServers": {
"mcp-powerbi": {
"command": "node",
"args": ["/absolute/path/to/mcp-powerBI/dist/server.js"],
"env": {
"POWERBI_TENANT": "vnu.edu.vn",
"POWERBI_CLIENT_ID": "<app-client-id>",
"POWERBI_CLIENT_SECRET": "<client-secret-value>",
"POWERBI_MODELING_MCP_COMMAND": "/absolute/path/to/powerbi-modeling-mcp",
"POWERBI_MODELING_MCP_ARGS": "--start"
}
}
}
}For local development:
{
"mcpServers": {
"mcp-powerbi": {
"command": "npx",
"args": ["tsx", "/absolute/path/to/mcp-powerBI/src/server.ts"]
}
}
}The server checks auth in this order:
POWERBI_ACCESS_TOKENPOWERBI_TENANT, POWERBI_CLIENT_ID, POWERBI_CLIENT_SECRETstart_device_login / complete_device_loginFor production Claude usage, service principal is the most reliable option.
Power BI tenant/admin requirements:
Workspace.Read.All and Dataset.Read.All, with admin consent where required.Ask Claude:
Use mcp-powerbi to get the full catalog of workspaces and semantic models.or:
Use mcp-powerbi to list semantic models in workspace test-mcp via Microsoft Modeling MCP.The second path works when the workspace name is already known and Microsoft powerbi-modeling-mcp can authenticate to XMLA. If the workspace/model is not provided, Claude should call get_catalog first. If REST authentication is unavailable, Claude should ask the user for the workspace name instead of guessing.
For a CEO workflow, set:
POWERBI_KNOWN_WORKSPACES=test-mcp
POWERBI_DEFAULT_WORKSPACE=test-mcp
# Optional fallback only. Prefer letting Claude choose from workspace schema.
# POWERBI_DEFAULT_SEMANTIC_MODEL=hospitalThen Claude can use get_known_workspace_catalog to list models from configured workspaces without REST auth, choose the relevant semantic model from schema/context, and call execute_dax_query for follow-up business questions. The wrapper keeps the Microsoft Modeling MCP process alive, so repeated questions reuse the same process and should reduce repeated login prompts.
For the simplest CEO experience:
POWERBI_DEFAULT_WORKSPACE and POWERBI_DEFAULT_SEMANTIC_MODEL.POWERBI_KNOWN_WORKSPACES and POWERBI_DEFAULT_WORKSPACE.POWERBI_DEFAULT_SEMANTIC_MODEL as an optional fallback, not a required CEO input.execute_dax_query.The first query in a fresh session can still trigger Microsoft authentication. Follow-up queries in the same running MCP session reuse the existing Microsoft Modeling MCP process and connection.
Copy .env.example for local shell usage:
cp .env.example .envThen export values before running:
set -a
source .env
set +a
npm run devlist_workspaces uses GET https://api.powerbi.com/v1.0/myorg/groups.list_semantic_models uses GET /datasets for My workspace or GET /groups/{groupId}/datasets for a workspace.npx -y @microsoft/powerbi-modeling-mcp@latest --start by default. Override with POWERBI_MODELING_MCP_COMMAND and POWERBI_MODELING_MCP_ARGS if you have a signed local binary.docs/verification.md.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.