BI Portal Report Builder MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BI Portal Report Builder MCP Serverlist available datasets for reporting"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
BI Portal — Report Builder MCP Server
An MCP server exposing the BI Portal's self-service Report Builder to MCP clients (Claude Desktop, Claude Code, or any other MCP-speaking agent): list datasets, run ad-hoc queries, create/edit/submit draft reports, and view saved dashboards.
Why this is its own repo, not part of backend/
It's a thin HTTP client of the backend's REST API — no backend Python imports, no
direct Postgres access. Everything it does goes through the exact same
/api/explore/*, /api/reports/*, and /api/dashboards/* endpoints the React UI
uses, so every RBAC check the backend already enforces applies automatically; this
server can't become a second, independently-drifting authorization path. Being a
separate repo means it deploys, versions, and can break independently of the backend
and UI — see the root docs/architecture.md for the fuller
rationale on why this was cut out as its own service while Report Builder's actual
query logic stayed in the backend.
Related MCP server: powerbi-mcp-proxy
Two identity modes
Every tool call is attributed to whichever Bearer token this process is configured with — the server itself doesn't know or care which mode is active, only the backend does.
delegated(default) — acts as a real logged-in human, inheriting exactly their roles. Mint a token from the backend while your portal session is live:curl -X POST http://localhost:8000/auth/token \ -H "Content-Type: application/json" \ -b "session=<your browser's session cookie>" \ -d '{"label": "my MCP client"}'The response's
tokenfield (pat_...) is shown once — copy it intoBI_PORTAL_TOKEN.fixed— acts as a standing service identity (e.g. aFinanceReportGen-scoped account) independent of who's driving the agent. An Admin mints one:curl -X POST http://localhost:8000/api/admin/service-identities \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <an Admin's pat_ token>" \ -d '{"name": "mcp-reportsgen", "groups": ["FinanceReportGen"]}'The response's
tokenfield (svc_...) is shown once — copy it intoBI_PORTAL_TOKEN.
Setup
python3.12 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env # fill in BI_PORTAL_BASE_URL / BI_PORTAL_AUTH_MODE / BI_PORTAL_TOKEN
pytest # runs against a mocked backend, no live server neededRun directly over stdio (what most desktop MCP clients expect):
python -m mcp_bi_portal.serverExample Claude Desktop / Claude Code MCP client config:
{
"mcpServers": {
"bi-portal-report-builder": {
"command": "/path/to/mcp-server/.venv/bin/python",
"args": ["-m", "mcp_bi_portal.server"],
"env": {
"BI_PORTAL_BASE_URL": "http://localhost:8000",
"BI_PORTAL_AUTH_MODE": "delegated",
"BI_PORTAL_TOKEN": "pat_..."
}
}
}
}Tools
Tool | Backend endpoint |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Review/approve is deliberately not exposed — the tool surface is scoped to
authoring, not the full REST API. (For a fixed ReportGen-style identity this is also
enforced server-side, not just by omission here: require_domain_review_access
rejects any identity that isn't in a domain's admin_group_name.)
Deployment
MCP servers for desktop/CLI clients are conventionally a local subprocess over stdio,
launched by the client itself — there's no standing network service by default, unlike
backend/ui. See deployment/README.md for the optional
streamable-http path and why the K8s manifests for this service are marked optional.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityAmaintenanceMCP server for creating, editing, and evaluating Power BI (.pbix/.pbit) files without Power BI Desktop. Supports 101 tools including report creation, data sources, DAX measures, and file manipulation.12MIT
- Alicense-qualityDmaintenanceA self-hosted MCP server that proxies MCP clients to Power BI, using your own Entra tenant and Azure subscription. It enables DAX queries, workspace listing, and dataset management while preserving user-specific row-level security.2MIT
- Flicense-qualityDmaintenanceMCP server for managing Microsoft Fabric Reports with lifecycle management, filtering, and content manipulation.8
- Alicense-qualityCmaintenanceMCP server for building and inspecting Power BI report visuals by editing PBIR files on disk, enabling page, chart, slicer, and layout management.MIT
Related MCP Connectors
Provide seamless access to Appfolio Property Manager Reporting API through a standardized MCP serv…
MCP server for AI access to Swagger by SmartBear.
MCP server for medicare-coverage
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/biplatform-demo/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server