Skip to content

Connectors · Observability & analytics

Microsoft Power BI MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Microsoft Power BI and the rest of your systems. It gives your agent 282 Microsoft Power BI actions (147 reads, 103 writes and 32 that wait for a confirmation) and holds the Microsoft Power BI credential itself, so the agent never does. It paces Microsoft Power BI's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "powerbi.reports.get_reports",  intent: "check which Microsoft Power BI account is connected"}# Returns a list of reports from My workspace · read · 1 upstream call
  • 282actionsin one signed file
  • 147readlook, never change
  • 103writecreate and update
  • 32wait for a yesdestructive, confirmed first

Set up

Connect Microsoft Power BI in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Microsoft Power BI.

    OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in. actionlake stores what you paste write-only, sealed under your tenant's key.

    • client_idEntra application (client) id
    • client_secretEntra client secret
    • tenant_idYour Microsoft Power BI tenant id
    account { op: "connections.requirements", service: "powerbi" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "powerbi.reports.get_reports" }# returns a list of reports from my workspace · read · 1 upstream callcheck { action: "powerbi.reports.rebind_report", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Microsoft Power BI at a glance

Sign-in
OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in.
You provide
client_idclient_secret
Setup fields
tenant_id
Limits we pace to
200 calls an hour, per connection
API covered
Microsoft Power BI API v1.0api.powerbi.com/v1.0/myorg
Built from
Microsoft Power BI's documentation, read 19 September 2026OpenAPI spec (GitHub)learn.microsoft.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
145 of 147 reads, for up to an hour; a write clears what it affects
Ready-made plans
9 in the store
Shared entities
3, so ask can line Microsoft Power BI up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Microsoft Power BI.

282 actions in 1 area. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 147readlook, never change
  • 103writecreate and update
  • 32destructivewait for a confirmation
  1. Bi

    282

    147 read · 103 write · 32 destructive

    Returns a list of reports from the specified workspace · Returns a list of users that have access to the specified workspace · Returns a list of reports from the specified app · Returns a list of reports from My workspace

Top actions

The Microsoft Power BI API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 101 of Microsoft Power BI's 105 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
powerbi.reports.get_reports_in_groupReturns a list of reports from the specified workspaceReturns a list of reports from the specified workspace.readanalytics.report.list37 connectors
powerbi.groups.get_group_usersReturns a list of users that have access to the specified workspaceReturns a list of users that have access to the specified workspace.readidentity.role_assignment.list41 connectors
powerbi.apps.get_reportsReturns a list of reports from the specified appReturns a list of reports from the specified app.readanalytics.report.list37 connectors
powerbi.datasets.get_dataset_usersReturns a list of principals that have access to the specified datasetReturns a list of principals that have access to the specified dataset.readidentity.role_assignment.list41 connectors
powerbi.datasets.get_datasetsReturns a list of datasets from My workspaceReturns a list of datasets from My workspace.readanalytics.dataset.list28 connectors
powerbi.push_datasets.get_tablesReturns a list of tables within the specified dataset from My workspaceReturns a list of tables within the specified dataset from My workspace.readanalytics.dataset.list28 connectors
powerbi.scorecards.getReturns a list of scorecards from a workspaceReturns a list of scorecards from a workspace.readanalytics.dashboard.list22 connectors
powerbi.apps.get_dashboardsReturns a list of dashboards from the specified appReturns a list of dashboards from the specified app.readanalytics.dashboard.list22 connectors
powerbi.reports.rebind_reportRebinds the specified report from My workspace to the specified datasetRebinds the specified report from My workspace to the specified dataset.writeanalytics.report.update16 connectors
powerbi.reports.take_over_in_groupTransfers ownership of the data sources for the specified paginated report (RDL) to the current authorized useTransfers ownership of the data sources for the specified paginated report (RDL) to the current authorized user.writeanalytics.report.update16 connectors
powerbi.reports.update_report_contentUpdates the content of the specified report from My workspace with the content of a specified source reportUpdates the content of the specified report from My workspace with the content of a specified source report.writeanalytics.report.update16 connectors
powerbi.reports.delete_reportDeletes the specified report from My workspaceDeletes the specified report from My workspace.destructiveanalytics.report.delete16 connectors

Try it

Prompts to paste into Claude.

Each one names the Microsoft Power BI actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Returns a list of reports from My workspace in Microsoft Power BI and tell me what stands out.

    callspowerbi.reports.get_reports

  2. Planread

    Inventory everything inside a workspace in Microsoft Power BI.

    callspowerbi.groups.get_grouppowerbi.reports.get_reports_in_grouppowerbi.datasets.get_datasets_in_grouppowerbi.dashboards.get_dashboards_in_grouppowerbi.dataflows.get_dataflows+1 more

  3. Planread

    Audit what the tenant has published to the web in Microsoft Power BI.

    callspowerbi.admin.published_to_webpowerbi.admin.get_apps_as_adminpowerbi.admin.get_dashboards_as_adminpowerbi.admin.get_reports_as_adminpowerbi.admin.get_activity_events

  4. Writewrite

    Rebinds the specified report from My workspace to the specified dataset in Microsoft Power BI. Show me exactly what you will send before you save it.

    callspowerbi.reports.rebind_report

The plan store

Ready-made plans for Microsoft Power BI.

9 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

  1. Review a gateway's datasources and who can use them

    Use it when An admin is reviewing gateway connections before a credential rotation or an access review.

    Effect
    read
    Steps
    3 · loops
    Needs
    gateway id
    Install
    powerbi-gateway-datasource-review
  2. Audit what the tenant has published to the web

    Use it when An admin or auditor asks what content is publicly exposed or shared across the whole Power BI tenant.

    Effect
    read
    Steps
    5
    Install
    powerbi-tenant-sharing-audit
  3. Inventory everything inside a workspace

    Use it when Someone asks what is in a workspace, or who has access to it, before a migration or a review.

    Effect
    read
    Steps
    6
    Needs
    group id
    Install
    powerbi-workspace-content-inventory
  4. Clone a report into another workspace and point it at a dataset

    Use it when A report needs to be duplicated into another workspace, for example promoting a template or spinning up a per-customer copy.

    Effect
    write
    Steps
    4
    Needs
    group id, report id, target workspace id, target dataset id and new name
    Install
    powerbi-clone-report-to-workspace
  5. Export a report to a file and poll until it is ready

    Use it when Someone wants a PDF or PPTX copy of a Power BI report to send on or file away.

    Effect
    write
    Steps
    4
    Needs
    group id and report id
    Install
    powerbi-export-report-to-pdf
  6. Refresh every dataset in a workspace and wait for the results

    Use it when Someone needs the data in a workspace brought up to date right now rather than waiting for the schedule.

    Effect
    write
    Steps
    4 · loops
    Needs
    group id
    Install
    powerbi-refresh-workspace-datasets
  7. Create a workspace and add the team to it

    Use it when A new team or project needs its own Power BI workspace with members set up in one go.

    A person decidesGrant access right access to workspace name for number of members people.

    Effect
    write
    Steps
    5 · loops
    Needs
    name and members
    Install
    powerbi-onboard-workspace-for-team
  8. Deploy a pipeline stage after review

    Use it when Content in a Power BI deployment pipeline is ready to move from one stage to the next.

    A person decidesDeploy every artifact from stage source stage order of pipeline displayName to the next stage.

    Effect
    write
    Steps
    6
    Needs
    pipeline id and source stage order
    Install
    powerbi-promote-through-pipeline
  9. Retire a report after checking what it is wired to

    Use it when A report is believed obsolete and should be deleted, but only after its dependencies are understood.

    A person decidesPermanently delete report report id, which has number of items pages and number of items active subscriptions.

    Effect
    destructive
    Steps
    5
    Needs
    group id and report id
    Install
    powerbi-decommission-report
install a plan
account { op: "plans.install", slug: "powerbi-gateway-datasource-review" }
# then ask for it by name; a schedule can run it on a timetable

Governance for Microsoft Power BI

Destructive actions wait for a yes.

32 Microsoft Power BI actions are destructive. The first 10:

  • Deletes the specified report from My workspacepowerbi.reports.delete_report
  • Deletes the specified report from the specified workspacepowerbi.reports.delete_report_in_group
  • Deletes the specified user permissions from the specified workspacepowerbi.groups.delete_user_in_group
  • Removes user permissions from the specified deployment pipelinepowerbi.pipelines.delete_pipeline_user
  • Removes the specified user from the specified data sourcepowerbi.gateways.delete_datasource_user
  • Removes user permissions from the specified workspacepowerbi.admin.delete_group_user_as_admin
  • Removes user permissions from a specified deployment pipelinepowerbi.admin.delete_pipeline_user_as_admin
  • Grants user permissions to the specified workspacepowerbi.admin.add_user_as_admin
  • Deletes the specified dataset from My workspacepowerbi.datasets.delete_dataset
  • Deletes all rows from the specified table within the specified dataset from My workspacepowerbi.push_datasets.delete_rows

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

dopowerbi.reports.delete_reportconfirm_policy: human

Deletes the specified report from My workspace?

intent: the user asked me to deletes the specified report from My workspace

run suspended · waiting for a named person · key powerbi-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "powerbi-agent",  allowed_actions: ["powerbi.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "powerbi.reports.delete_report", approver: "[email protected]" },    { match: "powerbi.reports.delete_report_in_group", approver: "[email protected]" },    { match: "powerbi.groups.delete_user_in_group", approver: "[email protected]" }  ]}
Illustrative. Scoped to Microsoft Power BI only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Microsoft Power BI costs on actionlake.

Every Microsoft Power BI action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Microsoft Power BI refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 282 Microsoft Power BI actions
  • 27actions pageeach page of a long list is one call
  • 145reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Microsoft Power BI action.

282 actions by area: the id your agent calls, what it does, and its effect.

Bi282
  • powerbi.admin.get_capacity_users_as_adminReturns a list of users that have access to the specified workspaceread
  • powerbi.admin.get_group_users_as_adminReturns a list of users that have access to the specified workspaceread
  • powerbi.admin.get_reports_in_group_as_adminReturns a list of reports from the specified workspaceread
  • powerbi.apps.get_reportsReturns a list of reports from the specified appread
  • powerbi.groups.get_group_usersReturns a list of users that have access to the specified workspaceread
  • powerbi.reports.get_reportsReturns a list of reports from My workspaceread
  • and 276 more in this area

This index shows a sample of each area. All 282 actions, with their inputs and prices, are in the catalogue, which a free sandbox key can search.

Questions

The Microsoft Power BI MCP server, answered.

Is there a Microsoft Power BI MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 282 Microsoft Power BI actions, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Microsoft Power BI.

What do I need to connect Microsoft Power BI?

Entra application (client) id and Entra client secret. Plus your tenant id. The free call account { op: "connections.requirements", service: "powerbi" } lists exactly what to paste.

Can an AI agent delete or change things in Microsoft Power BI?

Only if its key allows it, and only with an explicit confirmation. 32 Microsoft Power BI actions are destructive, including deletes the specified report from My workspace, deletes the specified report from the specified workspace and deletes the specified user permissions from the specified workspace. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Microsoft Power BI API limit?

actionlake paces every call to the limits in the Microsoft Power BI service file: 200 calls an hour per connection. Repeated reads are answered from cache (145 Microsoft Power BI actions can be), which never reaches Microsoft Power BI.

What does a Microsoft Power BI action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (27 Microsoft Power BI actions page). Cache hits, searches, dry runs and calls Microsoft Power BI refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Microsoft Power BI API does it cover?

The Microsoft Power BI API v1.0 at api.powerbi.com/v1.0/myorg. It is built from Microsoft Power BI's documentation as read on 19 September 2026. 282 actions in 1 area, each one in the signed service file (version 1.0.0).

Does actionlake keep my Microsoft Power BI data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Microsoft Power BI credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Microsoft Power BI today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.