v0.2 · MIT · Windows

powerbi-agent — AI Agent làm việc trực tiếp với Power BI

MCP server 16 tool + 4 skill + 6 lệnh /pbi-* (gồm quy trình phân tích KPIM & mẫu tài liệu hóa): truy vấn DAX có chính sách an toàn dữ liệu, dựng trang báo cáo đẹp theo template, và quy trình phân tích end-to-end 9 khâu. Hỗ trợ Claude Code · Codex CLI · Google Antigravity.

1Yêu cầu hệ thống

Thành phầnGhi chú
Windows 10/11Power BI Desktop chỉ có trên Windows
Python 3.11+python --version để kiểm tra
ADOMD.NETCó sẵn nếu đã cài SSMS (bản 18–22 đều được), hoặc cài Analysis Services client libraries. Trình cài tự dò mọi vị trí; ép đường dẫn bằng biến môi trường ADOMD_LIB_DIR.
Power BI DesktopBản cài thường hoặc Microsoft Store đều được
Node.js (tùy chọn)Chỉ cần nếu chạy kèm powerbi-modeling của Microsoft (mục 5)

2Cài bằng AI Agent — 1 câu lệnh (khuyến nghị)

Dán câu này vào agent của bạn (Claude Code / Codex / Antigravity):

Clone https://github.com/ducnguyen221/powerbi-agent vào ~/.mcp/powerbi-mcp rồi chạy install.ps1 trong đó (đọc script trước khi chạy), sau đó restart MCP host.

Hoặc cài tay:

git clone https://github.com/ducnguyen221/powerbi-agent "%USERPROFILE%\.mcp\powerbi-mcp"
cd "%USERPROFILE%\.mcp\powerbi-mcp"
powershell -ExecutionPolicy Bypass -File .\install.ps1

install.ps1 làm gì (in-place, chạy lại nhiều lần an toàn)

1
Dựng .venv + cài dependencies (rebuild nếu venv copy từ máy khác bị hỏng)
2
ADOMD.NET + TOM đa phiên bản (SSMS 18–22 / standalone / GAC)
3
Đăng ký MCP vào cả 3 host (Claude ~/.claude.json · Codex config.toml · Antigravity mcp_config.json) — đường dẫn suy từ vị trí thư mục, giữ nguyên server khác, backup .bak
4
Copy 3 skill powerbi-mcp + pbi-pipeline + kpim-analysis (kèm references/ + templates/) vào từng host
Tham sốÝ nghĩa
-Hosts claude,codex,antigravityChọn host (mặc định cả ba)
-SkipVenv / -SkipHostsChỉ cập nhật host / chỉ dựng venv
Cài xong phải khởi động lại host (Claude Code / Codex / Antigravity) để tool mới xuất hiện.

3Kiểm tra sau cài

claude mcp list        # phải thấy: powerbi-mcp-bridge ... ✔ Connected

Rồi mở 1 file .pbix bất kỳ trong Power BI Desktop và hỏi agent:

Liệt kê các báo cáo Power BI đang mở, cho tôi xem danh sách bảng và measure của model.
Bước tiếp theo (1 lần):/pbi-setup — agent hỏi bạn chỉ định Knowledge Dir (folder NGOÀI repo, ưu tiên Brain/knowledge base có sẵn) để lưu tri thức dự án. Sau đó: /pbi-new mở dự án · /pbi-scan quét thiết kế · /pbi-done đóng · /pbi-pack đóng gói · /pbi-recall gợi nhớ. Danh sách đầy đủ + luồng: README.

Agent gọi list_local_reportslist_tablesdescribe_table là cài đặt thành công.

416 tool có gì

NhómToolChức năng
Khám phálist_local_reportsBáo cáo Desktop đang mở (port + model ID)
list_tablesDanh sách bảng (lọc bảng hệ thống)
describe_tableCột + kiểu dữ liệu + measure của 1 bảng
Truy vấn 🛡️execute_dax_localDAX lên Desktop — qua policy an toàn dữ liệu
execute_dax_serviceDAX lên Power BI Service (cần mục 6)
Ghi modeladd_measure_localTạo/sửa measure qua TOM
add_relationship_localRelationship Many-to-One qua TOM
Template 🎨list_templatesKit báo cáo có sẵn
apply_templateDựng trang mới từ kit — style giữ nguyên 100%
distill_templateTrang đẹp → kit tái dùng (sanitize trước khi chia sẻ)
Distilldistill_model_schemaModel → blueprint Markdown + Mermaid ERD
distill_report_designQuét TRỌN báo cáo: mọi trang + theme + DESIGN + CATALOG
Knowledge OS 🧠knowledge_statusKiểm tra Knowledge Dir + hiện trạng
setup_knowledgeThiết lập Knowledge Dir user chỉ định (ngoài repo)
init_projectMở dự án mới projects/<slug>/
log_timelineGhi lịch sử/bài học vào TIMELINE.md

5Chạy kèm powerbi-modeling của Microsoft (khuyến nghị)

powerbi-agent không xây lại modeling — phần tạo/sửa hàng loạt table/column/measure/relationship, TMDL, validate DAX giao cho MCP chính chủ Microsoft:

claude mcp add powerbi-modeling -s user -- npx -y "@microsoft/powerbi-modeling-mcp@latest" --start
Phân vai (skill đã dạy agent): query + policy + template/report layer → powerbi-agent · modeling ops → powerbi-modeling. Không ghi 2 server cùng lúc lên 1 model.

6Chính sách an toàn dữ liệu 🛡️

Nguyên tắc: dữ liệu thô ở lại trong engine — chỉ kết quả tổng hợp vào context LLM. Enforce ở server:

LớpMặc địnhĐiều chỉnh
Chặn dump thô (EVALUATE 'Bảng', ALL())BẬTPOWERBI_AGGREGATE_ONLY=0 để tắt
PII blocklist (cột cấm project)Theo fileCopy policy.example.jsonpolicy.json, liệt kê cột
Audit log JSONLBẬT~/.powerbi-agent/audit/ (đổi: POWERBI_AUDIT_DIR)
Trần 200 dòng cho kết quả có cột dimensionBẬTPOWERBI_DIMENSION_ROW_CAP
Trung thực về giới hạn: đây là guard chống rò rỉ sơ ý. Bảo mật cứng = RLS trên model + service principal quyền tối thiểu. Chi tiết kiểm thử: docs/UAT-REPORT.md.

7Power BI Service (cloud — tùy chọn)

1
Tạo Azure Entra ID App Registration, cấp quyền Power BI Service API + add vào workspace
2
Copy .env.example.env, điền TENANT_ID / CLIENT_ID / CLIENT_SECRET
3
Hỏi agent: "chạy DAX này lên dataset <GUID> trên Service"execute_dax_service (token có cache)
.env KHÔNG commit, không nằm trong gói chia sẻ — trình cài không bao giờ ghi đè file thật.

8Quy trình KPIM, Template kit & pipeline 9 khâu

Luật sắt: không bao giờ để agent tự dựng layout báo cáo từ đầu — luôn apply_template từ kit đã chứng minh (kit mẫu templates/kpim-business-light đi kèm: card KPI + combo chart + pivot + slicer + map, style đầy đủ).

Trang nào bạn ưng → bảo agent distill_template đóng thành kit riêng — lần sau tái tạo đúng style đó trên dữ liệu khác.

3 skill tự cài vào host:

9Xử lý sự cố

Triệu chứngCách xử lý
Tool báo thiếu ADOMD.NETCài SSMS hoặc AS client libraries; hoặc set ADOMD_LIB_DIR tới thư mục chứa Microsoft.AnalysisServices.AdomdClient.dll
list_local_reports rỗngPower BI Desktop phải ĐANG MỞ 1 file; chờ vài giây sau khi mở để engine (msmdsrv) lên
Tool không xuất hiện trong agentRestart host; kiểm tra claude mcp list
Trang mới apply_template không thấyFile .pbip phải ĐÓNG khi apply; nếu đang mở → Đóng KHÔNG LƯU rồi mở lại (Ctrl+S phiên cũ sẽ đè mất trang)
Truy vấn bị chặn "aggregate-only"Là chủ đích (chống dump thô). Viết lại bằng SUMMARIZECOLUMNS/TOPN/measure; thực sự cần thô → POWERBI_AGGREGATE_ONLY=0
Sửa file .ps1 xong chạy lỗi lạFile .ps1 phải UTF-8 có BOM (PowerShell 5.1 + tiếng Việt)

10Mang sang máy khác / Gỡ cài

powershell -ExecutionPolicy Bypass -File .\pack.ps1   # đóng zip sạch (loại .venv/.env/.git) ra Desktop
.\uninstall.ps1                                        # gỡ khỏi host, giữ file
.\uninstall.ps1 -RemoveVenv                            # gỡ + xóa venv