適用對象:想了解 netiCRM Connector(MCP)如何在保護個資的前提下,讓 AI 協助分析 CRM 資料的組織夥伴與資訊人員。
本章由技術團隊提供素材,說明「AI 到底看得到哪些資料、看不到哪些資料」,以及背後的權限與安全機制。若您想直接開始設定與使用,請參考下一章〈操作與設定〉(尚未公開,請稍候)。
一、Connector 是怎麼保護資料的?
很多人第一個問題是:「把 CRM 接給 AI,它會不會把我們所有捐款人、會員的個資都讀走?」
答案是不會。
netiCRM Connector 並不是把完整資料庫直接開放給 AI,而是先在系統裡建立幾個「資料櫥窗(View)」。您可以把它想像成博物館的展示櫃——櫃子裡只擺放被允許展示的資料表與欄位,其餘資料仍鎖在庫房裡,AI 看不到、也碰不到。
除此之外,還有三道把關:
- 只展示指定欄位:櫥窗只呈現分析所需的欄位。個資相關的,例如姓名、電話、Email、地址、身分證字號等「可直接識別個人身分」的資料一律不開放。
- 查詢前再檢查一次:每一筆查詢送出前,系統會再驗證一次,確認這個要求只是讀取、沒有夾帶新增/修改/刪除的動作。
- 使用唯讀帳號連線:Connector 連線資料庫時使用的是唯讀帳號,就算指令想改資料,資料庫層也不會執行。
一句話結論:AI 只能「看被允許看的統計欄位」,不能新增、不能修改、不能刪除,也讀不到姓名等個資。
二、權限驗證流程
一筆查詢從發問到回傳結果,會經過以下關卡。任何一關不通過,查詢就會被直接拒絕:
- 提出問題:使用者或 AI 助手提出分析需求。
- MCP 入口驗證:確認身分、權限與使用頻率。未通過 → 拒絕查詢。
- 轉成資料查詢:通過後,把問題轉換成資料查詢。
- 安全檢查器:只允許讀取、只允許指定的資料櫥窗與欄位。不符合 → 拒絕查詢。
- 唯讀帳號連線:以唯讀帳號連上資料庫。
- 讀取資料櫥窗:只讀取聯絡人摘要(無個資)、捐款摘要、活動摘要、會員摘要等 View。
- 回傳結果:回傳統計或分析結果。
而完整的原始資料庫,絕不直接開放給 Connector,Connector只能讀取櫥窗提供的指定欄位,
流程圖:

三、權限如何對應到可查詢的資料?
Connector 提供三個查詢工具,分別對應 CiviCRM 的三個模組權限。使用者(指的是組織為netiCRM connetor 使用所開立的netiCRM管理員帳號)原本有哪些模組權限,就只能用對應的查詢工具、看對應的資料櫥窗;沒有模組權限,就無法使用該工具。
例如「花小花」是OO基金會的行銷同仁,OO基金會的CRM系統後台設定了一個「花小花AI」帳號,只勾選了「捐款管理員」「活動管理員」,如此一來,花小花使用了設定好的claude connectors就只能讀取OO基金會CRM系統裡的捐款與活動紀錄來分析。
| 使用者權限 | 可使用的 MCP 工具 | 預設可查詢的資料櫥窗 | 若有額外權限,會再開放 |
|---|---|---|---|
MCP query + access CiviContribute |
contribution_query(捐款分析) |
聯絡人摘要、捐款摘要、定期捐款摘要、募款頁摘要、活動付款對照、會員付款對照 | 若也有 access CiviEvent:加開活動參加者、活動資料。若也有 access CiviMember:加開會員資料。 |
MCP query + access CiviEvent |
participant_query(活動參加者分析) |
聯絡人摘要、活動參加者摘要、活動摘要、活動付款對照 | 若也有 access CiviContribute:加開捐款摘要、定期捐款摘要、募款頁摘要。 |
MCP query + access CiviMember |
membership_query(會員分析) |
聯絡人摘要、會員摘要、會員付款對照 | 若也有 access CiviContribute:加開捐款摘要、定期捐款摘要、募款頁摘要。 |
只有 MCP query,但沒有以上三種模組權限 |
無法使用上述查詢工具 | 無 | 因為每個查詢工具都還需要對應的 CiviCRM 模組權限。 |
重點:Connector 的權限完全「繼承」您在 netiCRM 裡開給花小花AI帳號的權限設定。它不會擴權,只會在既有權限範圍內提供分析能力。
四、三個查詢工具與可讀資料
1. contribution_query(捐款分析工具)
| 條件 | 可讀資料 | 用途 |
|---|---|---|
基本條件:MCP query + access CiviContribute |
聯絡人摘要、捐款摘要、定期捐款摘要、募款頁摘要、活動付款對照、會員付款對照 | 分析捐款金額、日期、狀態、募款頁、定期捐款,以及判斷捐款是否與活動或會員有關。 |
另外有 access CiviEvent |
加開活動參加者摘要、活動摘要 | 可以把捐款與活動報名資料一起分析。 |
另外有 access CiviMember |
加開會員摘要 | 可以把捐款與會員資料一起分析。 |
2. participant_query(活動參加者分析工具)
| 條件 | 可讀資料 | 用途 |
|---|---|---|
基本條件:MCP query + access CiviEvent |
聯絡人摘要、活動參加者摘要、活動摘要、活動付款對照 | 分析活動報名人數、報名狀態、活動費用、活動日期等。 |
另外有 access CiviContribute |
加開捐款摘要、定期捐款摘要、募款頁摘要 | 可以把活動報名與付款、捐款資料一起分析。 |
3. membership_query(會員分析工具)
| 條件 | 可讀資料 | 用途 |
|---|---|---|
基本條件:MCP query + access CiviMember |
聯絡人摘要、會員摘要、會員付款對照 | 分析會員類型、會員狀態、加入日期、會員期間等。 |
另外有 access CiviContribute |
加開捐款摘要、定期捐款摘要、募款頁摘要 | 可以把會員資料與付款、捐款紀錄一起分析。 |
五、資料櫥窗開放了哪些欄位?
以下是每個資料櫥窗(View)對應的來源資料表,以及實際開放給 AI 的欄位。請特別注意:聯絡人摘要不含姓名、電話、Email、地址等直接識別個人身分的資料。
| 資料櫥窗 View | 來源資料表 | 開放欄位 | 這些欄位大概代表什麼 |
|---|---|---|---|
聯絡人基本摘要v_civicrm_contact |
civicrm_contact |
id, contact_type, employer_id, birth_date, prefix_id, suffix_id, gender_id, job_title, created_date, modified_date |
聯絡人編號、聯絡人類型、所屬組織、生日、稱謂、性別、職稱、建立時間、修改時間。不含姓名、電話、Email、地址等直接識別資料。 |
捐款摘要v_civicrm_contribution |
civicrm_contribution |
id, contact_id, total_amount, amount_level, receive_date, is_test, contribution_recur_id, contribution_status_id, contribution_page_id, contribution_type_id, cancel_date, receipt_date |
捐款編號、捐款人編號、金額、金額級距、收款日期、是否測試資料、是否來自定期捐款、捐款狀態、募款頁、費用類型、取消日期、收據日期。 |
定期捐款摘要v_civicrm_contribution_recur |
civicrm_contribution_recur |
id, contact_id, amount, contribution_status_id, create_date, start_date, end_date, installments |
定期捐款編號、捐款人編號、定期金額、狀態、建立日期、開始日期、結束日期、期數。 |
募款頁摘要v_civicrm_contribution_page |
civicrm_contribution_page |
id, created_date, title |
募款頁編號、建立日期、募款頁標題。 |
活動參加者摘要v_civicrm_participant |
civicrm_participant |
id, contact_id, event_id, status_id, register_date, fee_level, is_test, fee_amount |
參加者記錄編號、聯絡人編號、活動編號、報名狀態、報名日期、費用級距、是否測試資料、活動費用金額。 |
活動摘要v_civicrm_event |
civicrm_event |
id, title, event_type_id, start_date, end_date, is_active, is_template |
活動編號、活動名稱、活動類型、開始日期、結束日期、是否啟用、是否為範本。 |
會員摘要v_civicrm_membership |
civicrm_membership |
id, contact_id, membership_type_id, join_date, start_date, end_date, status_id, is_test |
會員記錄編號、聯絡人編號、會員類型、加入日期、會員起日、會員迄日、會員狀態、是否測試資料。 |
活動付款對照表v_civicrm_participant_payment |
civicrm_participant_payment |
id, contribution_id, participant_id |
用來判斷某筆付款是否對應到某筆活動報名。 |
會員付款對照表v_civicrm_membership_payment |
civicrm_membership_payment |
id, contribution_id, membership_id |
用來判斷某筆付款是否對應到某筆會員紀錄。 |
為什麼看得到
contact_id卻不算個資?contact_id只是系統內部的一組編號,AI 拿到的是「編號 12345 捐了多少」,而不是「某某某捐了多少」。因為聯絡人的姓名、聯絡方式都沒有開放,AI 無法把編號還原成真實個人。這讓 AI 能做跨資料的統計分析(例如同一位捐款人是否也報名了活動),同時保護當事人身分。
六、相關程式碼參考(給資訊人員)
若貴組織的資訊人員想進一步檢視技術細節,可參考以下開放原始碼: