Skip to main content
Glama

powerbi-mcp

用于 Power BI MCP 访问的内部 Node.js 服务。它旨在与 Next.js 应用并行运行(通常在 PM2 下),并仅从 Next.js 服务器层调用。

本项目并非 Google Ads MCP 仓库的复制品。它遵循相同的专注型 MCP 后端理念,但专为 Power BI/Fabric、直接 JSON-RPC 调用以及已在 PBI 机器人 POC 中验证过的代理/工具迭代而定制。

功能概述

  • 使用用户持有者令牌 (bearer token) 调用 Fabric Power BI MCP 端点。

  • 通过 JSON-RPC 列出并执行 MCP 工具。

  • 发现 Power BI 工作区和语义模型,以获得更好的模型提示词。

  • 运行兼容 OpenAI 的代理循环,该循环可以调用 Power BI MCP 工具。

  • 为 Next.js 后端公开内部 HTTP 端点。

  • 附带名为 powerbi-mcp 的 PM2 进程配置。

端点

  • GET /health

  • POST /internal/mcp/tools

  • POST /internal/mcp/call

  • POST /internal/powerbi/catalog

  • POST /internal/chat

  • POST /internal/chat/json

浏览器/代理兼容路由也可在 /api/* 下使用:

  • GET /api/auth/status

  • GET /api/auth/login

  • GET /api/auth/callback

  • GET /api/auth/logout

  • POST /api/mcp/tools

  • POST /api/mcp/call

  • POST /api/powerbi/catalog

  • POST /api/chat

  • POST /api/chat/json

所有内部路由均接受以下形式的用户 Power BI 访问令牌:

  • Authorization: Bearer <power-bi-access-token>

  • x-powerbi-access-token: <power-bi-access-token>

  • JSON 请求体字段 accessToken

如果配置了 INTERNAL_API_KEY,还需发送:

x-internal-api-key: <your-internal-key>

安装

cd powerbi-mcp
npm install
cp .env.example .env
npm run check

.env 中填入您的 LiteLLM/兼容 OpenAI 的网关设置。 对于浏览器路由,请将您的 Azure 重定向 URI 设置为 Next.js 代理回调,例如:

http://localhost:3000/api/powerbi-mcp/auth/callback

本地运行

npm run dev

默认服务 URL 为 http://127.0.0.1:3101

使用 PM2 运行

pm2 start ecosystem.config.js
pm2 status

预期的进程名称:

powerbi-mcp

Next.js 嵌入式路由

请将 Next.js 路由文件保留在此后端仓库之外。在此工作区中,它们位于同级文件夹中:

../powerbi-analyst-next-dropin/app

将这些文件复制到实际的 ads-next/app 目录中:

  • app/Power_BI_Analyst/page.tsx

  • app/api/powerbi-mcp/[...path]/route.ts

然后浏览至:

/Power_BI_Analyst

Next.js 代理调用此后端的地址为:

http://127.0.0.1:3101/api/*

Next.js 服务器示例

仅从服务器路由、服务器操作或 API 处理程序中调用此服务。除正常的身份验证流程外,请勿将 Power BI 访问令牌暴露给浏览器端代码。

const response = await fetch("http://127.0.0.1:3101/internal/chat/json", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-internal-api-key": process.env.POWERBI_MCP_INTERNAL_API_KEY,
    "Authorization": `Bearer ${powerBiAccessToken}`
  },
  body: JSON.stringify({
    message: "Show total sales this month vs last month",
    history: []
  })
});

const data = await response.json();

对于流式 UI 响应,请调用 /internal/chat/api/chat;它会返回服务器发送的事件 (SSE):

data: {"token":"..."}
data: [DONE]

注意事项

  • 本服务同时支持通过 /internal/* 进行令牌转发,以及通过 /api/auth/* 进行浏览器会话流。

  • 除非您有意将其置于私有网络边界之后,否则在生产环境中请绑定到 127.0.0.1

  • 在部署前设置 INTERNAL_API_KEY,以确保只有受信任的内部调用者可以使用该服务。

A
license - permissive license
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/ketangupta1-ai/powerbi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server