---
title: "Microsoft Power BI MCP server for AI agents - actionlake"
description: "Give Claude 282 Microsoft Power BI actions through one MCP server: reports, groups, apps. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/microsoft-power-bi
updated: 2026-10-11
---

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.

[Connect Microsoft Power BI free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

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
```

- 282 actions in one signed file
- 147 read look, never change
- 103 write create and update
- 32 wait for a yes destructive, 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_id` Entra application (client) id
   - `client_secret` Entra client secret
   - `tenant_id` Your 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 call
   check { 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_id` `client_secret`

**Setup fields**

`tenant_id`

**Limits we pace to**

200 calls an hour, per connection

**API covered**

Microsoft Power BI API v1.0`api.powerbi.com/v1.0/myorg`

**Built from**

Microsoft Power BI's documentation, read 19 September 2026[OpenAPI spec (GitHub)](https://raw.githubusercontent.com/microsoft/PowerBI-CSharp/master/sdk/swaggers/swagger.json) [learn.microsoft.com](https://learn.microsoft.com/en-us/rest/api/power-bi/)

**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.

- **147** read look, never change
- **103** write create and update
- **32** destructive wait 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.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `powerbi.reports.get_reports_in_group` Returns a list of reports from the specified workspace | Returns a list of reports from the specified workspace. | read | `analytics.report.list` 37 connectors |
| `powerbi.groups.get_group_users` Returns a list of users that have access to the specified workspace | Returns a list of users that have access to the specified workspace. | read | `identity.role_assignment.list` 41 connectors |
| `powerbi.apps.get_reports` Returns a list of reports from the specified app | Returns a list of reports from the specified app. | read | `analytics.report.list` 37 connectors |
| `powerbi.datasets.get_dataset_users` Returns a list of principals that have access to the specified dataset | Returns a list of principals that have access to the specified dataset. | read | `identity.role_assignment.list` 41 connectors |
| `powerbi.datasets.get_datasets` Returns a list of datasets from My workspace | Returns a list of datasets from My workspace. | read | `analytics.dataset.list` 28 connectors |
| `powerbi.push_datasets.get_tables` Returns a list of tables within the specified dataset from My workspace | Returns a list of tables within the specified dataset from My workspace. | read | `analytics.dataset.list` 28 connectors |
| `powerbi.scorecards.get` Returns a list of scorecards from a workspace | Returns a list of scorecards from a workspace. | read | `analytics.dashboard.list` 22 connectors |
| `powerbi.apps.get_dashboards` Returns a list of dashboards from the specified app | Returns a list of dashboards from the specified app. | read | `analytics.dashboard.list` 22 connectors |
| `powerbi.reports.rebind_report` Rebinds the specified report from My workspace to the specified dataset | Rebinds the specified report from My workspace to the specified dataset. | write | `analytics.report.update` 16 connectors |
| `powerbi.reports.take_over_in_group` Transfers ownership of the data sources for the specified paginated report (RDL) to the current authorized use | Transfers ownership of the data sources for the specified paginated report (RDL) to the current authorized user. | write | `analytics.report.update` 16 connectors |
| `powerbi.reports.update_report_content` Updates the content of the specified report from My workspace with the content of a specified source report | Updates the content of the specified report from My workspace with the content of a specified source report. | write | `analytics.report.update` 16 connectors |
| `powerbi.reports.delete_report` Deletes the specified report from My workspace | Deletes the specified report from My workspace. | destructive | `analytics.report.delete` 16 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. Read read
   Returns a list of reports from My workspace in Microsoft Power BI and tell me what stands out.
   calls `powerbi.reports.get_reports`
2. Plan read
   Inventory everything inside a workspace in Microsoft Power BI.
   calls `powerbi.groups.get_group` `powerbi.reports.get_reports_in_group` `powerbi.datasets.get_datasets_in_group` `powerbi.dashboards.get_dashboards_in_group` `powerbi.dataflows.get_dataflows` +1 more
3. Plan read
   Audit what the tenant has published to the web in Microsoft Power BI.
   calls `powerbi.admin.published_to_web` `powerbi.admin.get_apps_as_admin` `powerbi.admin.get_dashboards_as_admin` `powerbi.admin.get_reports_as_admin` `powerbi.admin.get_activity_events`
4. Write write
   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.
   calls `powerbi.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 decides Grant _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 decides Deploy 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 decides Permanently 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 workspace `powerbi.reports.delete_report`
- Deletes the specified report from the specified workspace `powerbi.reports.delete_report_in_group`
- Deletes the specified user permissions from the specified workspace `powerbi.groups.delete_user_in_group`
- Removes user permissions from the specified deployment pipeline `powerbi.pipelines.delete_pipeline_user`
- Removes the specified user from the specified data source `powerbi.gateways.delete_datasource_user`
- Removes user permissions from the specified workspace `powerbi.admin.delete_group_user_as_admin`
- Removes user permissions from a specified deployment pipeline `powerbi.admin.delete_pipeline_user_as_admin`
- Grants user permissions to the specified workspace `powerbi.admin.add_user_as_admin`
- Deletes the specified dataset from My workspace `powerbi.datasets.delete_dataset`
- Deletes all rows from the specified table within the specified dataset from My workspace `powerbi.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.

do powerbi.reports.delete_report confirm_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: "lead@example.com" },
    { match: "powerbi.reports.delete_report_in_group", approver: "lead@example.com" },
    { match: "powerbi.groups.delete_user_in_group", approver: "lead@example.com" }
  ]
}
```

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.

- 1 upstream call per action all 282 Microsoft Power BI actions
- 27 actions page each page of a long list is one call
- 145 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Microsoft Power BI action.

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

**Bi 282**

- `powerbi.admin.get_capacity_users_as_admin` Returns a list of users that have access to the specified workspace read
- `powerbi.admin.get_group_users_as_admin` Returns a list of users that have access to the specified workspace read
- `powerbi.admin.get_reports_in_group_as_admin` Returns a list of reports from the specified workspace read
- `powerbi.apps.get_reports` Returns a list of reports from the specified app read
- `powerbi.groups.get_group_users` Returns a list of users that have access to the specified workspace read
- `powerbi.reports.get_reports` Returns a list of reports from My workspace read
- 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](https://actionlake.com/console/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.

## More connectors like Microsoft Power BI

Shares the most action names with

- [PostHog 36](https://actionlake.com/connectors/posthog)
- [Grafana 33](https://actionlake.com/connectors/grafana)
- [Preset 15](https://actionlake.com/connectors/preset)
- [Honeycomb 10](https://actionlake.com/connectors/honeycomb)
- [Domo 10](https://actionlake.com/connectors/domo)
- [Microsoft Fabric 9](https://actionlake.com/connectors/microsoft-fabric)

Joins with, on shared entities

- [Boomi Enterprise Platform 2](https://actionlake.com/connectors/boomi-enterprise-platform)
- [Google Analytics 4 2](https://actionlake.com/connectors/google-analytics-4)
- [Google Tag Manager 2](https://actionlake.com/connectors/google-tag-manager)
- [Azure Resource Graph 2](https://actionlake.com/connectors/azure-resource-graph)
- [Slack 1](https://actionlake.com/connectors/slack)
- [Gusto 1](https://actionlake.com/connectors/gusto)

Browse

- [All Observability & analytics connectors](https://actionlake.com/connectors/category/observability-and-analytics)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Microsoft Power BI; the name is the vendor's own. Counts are from the Microsoft Power BI service file, version 1.0.0.

## Give your agent Microsoft Power BI today.

[Connect Microsoft Power BI free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

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

---

Source: https://actionlake.com/connectors/microsoft-power-bi
More: https://actionlake.com/llms.txt
