Skip to content
| Marketplace
Sign in
Visual Studio Code>Data Science>Power BI Analyst MCP (PII-safe)New to Visual Studio Code? Get it now.
Power BI Analyst MCP (PII-safe)

Power BI Analyst MCP (PII-safe)

Hồng Anh Trần

|
10 installs
| (0) | Free
Hỏi Copilot về dữ liệu Power BI: xem cấu trúc model, chạy DAX, phân tích kết quả. Email, số điện thoại, họ tên, địa chỉ được hash trước khi AI đọc.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Power BI Analyst MCP (PII-safe)

Hỏi Copilot Chat về dữ liệu Power BI của bạn mà không để lộ thông tin cá nhân của khách hàng cho AI.

Extension này kết nối khung chat AI của VS Code (GitHub Copilot Chat ở chế độ Agent, hoặc bất kỳ chat nào hỗ trợ MCP) với các semantic model trên Power BI. AI có thể xem cấu trúc bảng, cột, measure, tự viết và chạy DAX, rồi phân tích kết quả. Trước khi kết quả tới tay AI, các thông tin cá nhân như email, số điện thoại, họ tên, địa chỉ đều được thay bằng mã ẩn danh.

Extension cộng đồng, không chính thức. Không liên kết với và không được Microsoft bảo trợ.


Tính năng

🔒 Hash thông tin cá nhân trước khi AI đọc

Mọi kết quả truy vấn được quét ngay trên máy bạn. Thông tin cá nhân được thay bằng một mã cố định dạng pii_673e1d1f072d785a:

Cột Power BI trả về AI nhìn thấy
Customer[Email] anna@example.com pii_673e1d1f072d785a
Customer[Email] ANNA@example.com pii_673e1d1f072d785a (cùng một mã)
Customer[Name] Anna Hansen pii_c535badbc8bca5d2
Order[Note] call +45 12 34 56 78 call pii_db23a812ab1ba8c6
Product[Name] Nike Air Nike Air (không phải thông tin cá nhân, giữ nguyên)
Revenue 120.5 120.5

Cùng một giá trị luôn ra cùng một mã, nên AI vẫn đếm số khách hàng, nhóm, xếp hạng và join được bình thường, chỉ là không biết khách hàng đó là ai.

Metadata vẫn xem được đầy đủ: tên bảng, tên cột, measure, mô tả và kiểu dữ liệu.

📊 Phân tích dữ liệu bằng ngôn ngữ tự nhiên

Bạn đặt câu hỏi nghiệp vụ. AI tự tìm app và dataset phù hợp, đọc cấu trúc model, viết DAX, chạy truy vấn rồi giải thích kết quả.

📁 Kết quả lớn không làm tràn khung chat

Kết quả tới 50 dòng được trả thẳng vào chat. Kết quả lớn hơn (tối đa 100.000 dòng theo giới hạn của Power BI) được lưu thành file CSV trên máy bạn, AI đọc dần từng trang khi cần. File CSV lưu xuống cũng đã được hash.

🕘 Lịch sử truy vấn tích luỹ theo thời gian

Mỗi truy vấn chạy thành công được ghi lại trên máy: câu hỏi là gì, dùng DAX nào, kết quả lưu ở đâu. Ở các phiên sau, AI tìm lại lịch sử này để dùng lại công việc đã làm.

🏠 Chạy hoàn toàn trên máy bạn

Không đi qua dịch vụ trung gian nào. Truy vấn đi thẳng từ máy bạn tới Power BI REST API bằng chính tài khoản của bạn, nên bạn chỉ thấy dữ liệu mà quyền Power BI của bạn cho phép. Chỉ đọc: không tạo, sửa hay xoá được gì trong Power BI.


Yêu cầu

VS Code Bản 1.101 trở lên
AI chat GitHub Copilot Chat (chế độ Agent) hoặc extension chat khác có hỗ trợ MCP
uv Cài uv. uv tự tải Python nếu máy chưa có.
Power BI Giấy phép Pro, Premium Per User hoặc Premium capacity
Azure app registration Miễn phí, mất khoảng 5 phút, không cần client secret. Xem hướng dẫn bên dưới.

Bắt đầu sử dụng

1. Tạo Azure app registration (làm một lần, cả tổ chức dùng chung được)

  1. Vào portal.azure.com → Microsoft Entra ID → App registrations → New registration. Đặt tên, ví dụ Power BI Analyst, rồi bấm Register.

  2. Authentication → Add a platform → Mobile and desktop applications → tích chọn https://login.microsoftonline.com/common/oauth2/nativeclient.

  3. Authentication → Advanced settings → đặt Allow public client flows thành Yes → Save.

  4. API permissions → Add a permission → Power BI Service → Delegated permissions, thêm:

    • Dataset.Read.All
    • Workspace.Read.All
    • App.Read.All

    Nếu tổ chức yêu cầu, nhờ admin bấm cấp quyền (grant consent).

  5. Ở trang Overview, sao chép Application (client) ID và Directory (tenant) ID.

Admin Power BI cũng phải bật cài đặt tenant Dataset Execute Queries REST API (Admin portal → Tenant settings → Integration settings).

2. Cấu hình extension

Mở Command Palette (Ctrl+Shift+P / Cmd+Shift+P), chạy Power BI Analyst: Open Settings rồi điền:

  • Client ID: Application (client) ID lấy ở bước 1
  • Tenant ID: Directory (tenant) ID lấy ở bước 1

Hoặc thêm trực tiếp vào settings.json:

{
  "powerbiAnalyst.clientId": "00000000-0000-0000-0000-000000000000",
  "powerbiAnalyst.tenantId": "11111111-1111-1111-1111-111111111111"
}

3. Bắt đầu chat

  1. Mở Copilot Chat và chuyển sang chế độ Agent.
  2. Bấm biểu tượng tools, kiểm tra Power BI Analyst đã được bật.
  3. Hỏi: "Đăng nhập Power BI và liệt kê các app của tôi."
  4. AI sẽ trả về một đường link và một mã dùng một lần. Mở link, nhập mã, đăng nhập bằng tài khoản công ty, rồi báo lại cho AI là đã xong.

Các phiên sau bạn không phải đăng nhập lại. Lần khởi động đầu tiên hơi lâu vì uv cần cài các thư viện cho server.


Câu hỏi mẫu

  • "Tôi có quyền truy cập những app và dataset Power BI nào?"
  • "Giải thích từng measure trong dataset Sales và lập từ điển dữ liệu."
  • "Cho tôi doanh thu theo thị trường và danh mục sản phẩm trong quý 1/2025."
  • "Năm ngoái có bao nhiêu khách hàng đặt hàng quá 3 lần?"
  • "Tìm 20 khách hàng có giá trị trọn đời cao nhất và so sánh tỷ lệ hoàn hàng của họ." (khách hàng hiện dưới dạng mã)
  • "Điều gì đang kéo biên lợi nhuận ở EMEA đi xuống? Xem xu hướng theo danh mục và kênh bán."
  • "Tìm lại truy vấn GMV theo thị trường tôi chạy tuần trước và chạy lại cho tháng này."

Cài đặt của extension

Cài đặt Mặc định Mô tả
powerbiAnalyst.clientId (trống) Bắt buộc. Application (client) ID của Azure app registration.
powerbiAnalyst.tenantId organizations Directory (tenant) ID hoặc tên miền, ví dụ contoso.onmicrosoft.com. Nên đặt khi app là single-tenant (hầu hết các tổ chức).
powerbiAnalyst.piiColumns (trống) Thêm mẫu tên cột cần hash, cách nhau bằng dấu phẩy, cộng vào danh sách có sẵn. Ví dụ: loyaltyid,vatnumber,companyname.
powerbiAnalyst.outputDir ~/powerbi_output Thư mục chứa file CSV kết quả lớn, lịch sử truy vấn và khoá PII tự sinh.
powerbiAnalyst.uvPath uv Đường dẫn đầy đủ tới uv nếu uv không có trong PATH.

Extension tự nhận khi bạn đổi cài đặt; VS Code có thể hỏi bạn khởi động lại server.

Lệnh

Lệnh Tác dụng
Power BI Analyst: Open Settings Mở nhanh phần cài đặt của extension.
Power BI Analyst: Set PII Hash Key Lưu khoá bí mật dùng để hash vào kho bảo mật của VS Code. Để trống để xoá khoá.
Power BI Analyst: Open Output Folder Mở thư mục chứa file CSV kết quả và lịch sử truy vấn.

Các tool AI được dùng

Tool Tác dụng
authenticate Đăng nhập bằng mã thiết bị (device code).
logout Xoá phiên đăng nhập đã lưu.
list_apps Các app Power BI bạn truy cập được. Đây là điểm bắt đầu.
list_datasets Các dataset (semantic model) trong workspace của một app.
get_dataset_info Thông tin dataset và lịch sử refresh gần đây.
list_tables Các bảng hiển thị trong dataset.
list_columns Các cột, kèm kiểu dữ liệu và cờ khoá.
list_measures Các measure, kèm bảng, mô tả và định dạng.
execute_dax Chạy truy vấn DAX. PII được hash; kết quả lớn được lưu ra CSV.
read_query_result Đọc từng trang của file CSV đã lưu.
search_query_history Tìm truy vấn cũ theo từ khoá, dataset hoặc ngày.
delete_query_log_entry Xoá một mục sai hoặc gây hiểu nhầm khỏi lịch sử.

Cách nhận diện thông tin cá nhân

1. Theo tên cột. Một cột bị coi là thông tin cá nhân khi tên cột (không phân biệt hoa thường, bỏ qua dấu cách và ký hiệu) chứa một trong các mẫu:

email · phone · mobilenumber · firstname · lastname · fullname · customername · address · street · zipcode · postalcode · postcode · birth · ssn · iban

…cộng với các mẫu bạn thêm trong powerbiAnalyst.piiColumns. Mọi giá trị trong các cột này đều bị hash, kể cả giá trị số.

2. Theo giá trị. Địa chỉ email và số điện thoại quốc tế (bắt đầu bằng +) bị hash ở bất cứ đâu chúng xuất hiện trong ô chữ, kể cả khi tên cột trông vô hại. AI không thể lách bằng cách đổi tên cột trong DAX.

Thuật toán hash là HMAC-SHA256 với khoá bí mật, nên không thể dịch ngược mã về giá trị gốc hay tra bảng.

Dùng chung mã trong một nhóm

Mặc định mỗi máy tự sinh một khoá ngẫu nhiên, nên cùng một khách hàng sẽ ra mã khác nhau trên mỗi máy. Nếu đồng nghiệp cần mã giống nhau, ví dụ để so sánh kết quả, hãy thống nhất một khoá bí mật và mỗi người chạy lệnh Power BI Analyst: Set PII Hash Key. Chia sẻ khoá qua kênh bảo mật và đừng bao giờ dán khoá vào khung chat.

Cần lưu ý

  • Tên người nằm trong cột văn bản tự do (ghi chú, bình luận) không được nhận diện. Hãy thêm các cột đó vào powerbiAnalyst.piiColumns.
  • Mẫu quá rộng có thể bắt nhầm cột không chứa thông tin cá nhân, ví dụ address cũng khớp với ShippingAddressCountry.
  • Lọc theo giá trị thật, ví dụ Customer[Email] = "anna@example.com", vẫn chạy được trong Power BI, nhưng kết quả chỉ hiện mã.
  • Muốn bảo vệ chắc chắn từ nguồn, hãy dùng thêm Object-Level Security của Power BI.

Dữ liệu & quyền riêng tư

Dữ liệu Lưu ở đâu
Token đăng nhập ~/.powerbi_mcp_token_cache.bin, mã hoá bằng Keychain (macOS), DPAPI (Windows) hoặc LibSecret (Linux)
Kết quả truy vấn lớn (CSV đã hash) powerbiAnalyst.outputDir (mặc định ~/powerbi_output)
Lịch sử truy vấn powerbi_query_log.jsonl trong cùng thư mục
Khoá PII tự sinh .pii_hash_key trong cùng thư mục (chỉ chủ sở hữu đọc được)
Khoá PII dùng chung Secret Storage của VS Code

Các file này không tự động bị dọn. Bạn có thể xoá thư mục bất cứ lúc nào.


Xử lý sự cố

Vấn đề Cách khắc phục
Báo "set your Azure app Client ID" Điền powerbiAnalyst.clientId.
Báo "uv was not found" Cài uv, khởi động lại VS Code, hoặc đặt powerbiAnalyst.uvPath là đường dẫn đầy đủ tới uv.
Không thấy tool Power BI trong Copilot Chat Chuyển sang chế độ Agent và bật tool trong danh sách tools. Với tài khoản GitHub Enterprise/Business, admin phải cho phép MCP servers in Copilot.
Lỗi AADSTS50059 hoặc đăng nhập nhầm tổ chức Đặt powerbiAnalyst.tenantId là Directory (tenant) ID của bạn.
Lỗi AADSTS7000218 / invalid_client Trong app registration, đặt Allow public client flows thành Yes.
Lỗi AADSTS65001 / cần cấp quyền Admin phải grant consent cho các API permission.
Lỗi 403 khi chạy DAX Bạn cần quyền Build trên dataset. Kiểm tra AI đã dùng workspace ID lấy từ list_apps.
execute_dax lỗi với tất cả mọi người Admin Power BI phải bật Dataset Execute Queries REST API.
Server không khởi động được Chạy MCP: List Servers → Power BI Analyst → Show Output để xem log.

Giới hạn

  • Chỉ đọc. Không tạo hay sửa được nội dung Power BI.
  • Giới hạn của Power BI API: 100.000 dòng hoặc 1.000.000 giá trị mỗi truy vấn, 120 truy vấn mỗi phút cho mỗi người dùng.
  • Chỉ hỗ trợ DAX (không có MDX hay DMV).
  • list_tables, list_columns và list_measures dùng hàm DAX INFO.VIEW.*, yêu cầu model Import hoặc DirectQuery có bật quyền đọc XMLA.

Ghi công & giấy phép

Phát triển dựa trên powerbi-analyst-mcp của Martin Brummerstedt, bổ sung tính năng hash PII và tích hợp VS Code. Giấy phép MIT.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft