MCP Server 整合
透過 MCP (Model Context Protocol) 讓 AI 助手(如 Claude Desktop)直接管理與分析你的問卷
LitoForm 內建 MCP (Model Context Protocol) Server,讓你可以透過 AI 助手(如 Claude Desktop、Cursor 等)直接建立問卷、管理發佈狀態與查看分析數據。
運作原理
AI Agent
↓ MCP Streamable HTTP
LitoForm MCP endpoint
↓ PAT 驗證 → Scope 檢查
問卷資料庫- 傳輸協定:MCP Streamable HTTP(透過標準 HTTP POST 通訊)
- 認證方式:Personal Access Token (PAT)
- 安全模型:每個 Token 只能存取自己帳號的問卷
- ChatGPT App:支援 MCP Apps 內嵌 UI resource,讓 ChatGPT 可在 iframe 中顯示問卷狀態與摘要
快速開始
1. 建立 API Token
前往 Dashboard → 帳號設定,在「API Token」區塊點擊 建立 Token。
設定以下選項:
| 欄位 | 說明 |
|---|---|
| 名稱 | 為 Token 取個名字,例如「OpenLito」 |
| 權限 | 勾選需要的權限(見下方說明) |
| 過期時間 | 建議設定 90 天或 365 天,也可選擇永不過期 |
Token 只會在建立時顯示一次,請立即複製並妥善保存。關閉後將無法再次查看。
2. 設定 Claude Desktop
編輯 Claude Desktop 的 MCP 設定檔:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
加入以下設定:
{
"mcpServers": {
"litoform": {
"type": "streamableHttp",
"url": "https://litoform.app/mcp",
"headers": {
"Authorization": "Bearer ss_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}將 url 替換為你的 LitoForm 網址,Bearer 後方替換為你的 Token。
3. 設定 ChatGPT Developer Mode
若要在 ChatGPT 中使用內嵌 UI App,請在 ChatGPT Developer Mode 新增 MCP server:
- URL:
https://你的網域/mcp - Authorization header:
Bearer ss_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - 建議 Scope:勾選
surveys:read、surveys:write、analytics:read
ChatGPT 會透過同一個 /mcp endpoint 讀取 ui://widget/simple-survey.html,並在 iframe 中顯示問卷資訊、回應摘要與分析摘要。內嵌 UI 使用 MCP Apps 標準 ui/* bridge 呼叫既有 tools,不會接收或顯示 PAT。
目前 ChatGPT 連線採開發版 PAT 模式。若要正式提交 ChatGPT App,需另外規劃 OAuth 2.1、PKCE 與 Dynamic Client Registration。
4. 開始使用
重啟 Claude Desktop 後,你就可以用自然語言操作問卷:
「幫我建立一份顧客滿意度問卷」
「查看我最新問卷的回應統計」
「把『產品回饋調查』發佈上線」
推薦安裝 Litofrom 的 Agent Skills 技能包,幫你快速建立專業問卷。
權限 (Scopes)
Token 的權限決定了 AI 助手可以執行哪些操作:
| Scope | 說明 | 可使用的工具 |
|---|---|---|
surveys:read | 讀取問卷 | get_survey |
surveys:write | 管理問卷 | create_survey、set_survey_publish_state |
analytics:read | 讀取分析 | get_survey_basic_analytics、get_survey_response_summary |
建議授予所有三個權限,讓 AI 助手能完整協助你管理問卷。若只需查詢用途,可僅授予 surveys:read 和 analytics:read。
ChatGPT 內嵌 UI
ChatGPT MCP App 使用以下 Apps metadata:
| 項目 | 值 |
|---|---|
| UI Resource URI | ui://widget/simple-survey.html |
| MIME type | text/html;profile=mcp-app |
| Tool metadata | _meta.ui.resourceUri |
| Compatibility alias | _meta["openai/outputTemplate"] |
UI v1 提供:
- 問卷 ID 輸入與
get_survey查詢 - 發佈 / 取消發佈狀態切換
get_survey_response_summary回應摘要get_survey_basic_analytics聚合分析摘要
UI v1 不提供 raw response rows、CSV 匯出、Token 管理或完整問卷編輯器。需要匯出或大量資料操作時,請回到 LitoForm Dashboard。
可用工具
create_survey
建立一份新問卷。
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
title | string | 是 | 問卷標題 |
slug | string | 否 | 自訂網址(僅限英文、數字與連字號,專業版功能) |
contentRaw | string | 否 | 問卷 Markdown 內容(省略則使用預設範本) |
settings | object | 否 | 問卷設定 JSON |
需要 Scope:surveys:write
回傳範例:
{
"id": "cmn31l4ln0026rumcm4evrq5p",
"slug": "68269f04",
"title": "顧客滿意度調查",
"createdAt": "2026-03-23T10:27:47.724Z"
}get_survey
取得一份問卷的詳細資訊,包含標題、內容、發佈狀態等。
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
surveyId | string | 是 | 問卷 ID |
需要 Scope:surveys:read
回傳範例:
{
"id": "cmn31l4ln0026rumcm4evrq5p",
"title": "顧客滿意度調查",
"slug": "68269f04",
"contentRaw": "---\ntitle: 顧客滿意度調查\nlayout: \"one-per-page\"\n---\n\n### Q1. [Single] 整體滿意度?\n- ( ) 非常滿意\n- ( ) 滿意\n- ( ) 普通\n- ( ) 不滿意\n",
"settings": { "language": "zh-TW" },
"isPublished": false,
"publishedAt": null,
"createdAt": "2026-03-23T10:27:47.724Z",
"updatedAt": "2026-03-23T10:27:47.724Z"
}set_survey_publish_state
設定問卷的發佈或取消發佈狀態。
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
surveyId | string | 是 | 問卷 ID |
published | boolean | 是 | true 發佈 / false 取消發佈 |
需要 Scope:surveys:write
回傳範例:
{
"surveyId": "cmn31l4ln0026rumcm4evrq5p",
"isPublished": true
}get_survey_basic_analytics
取得問卷的統計分析摘要,包含回應總數、趨勢資料與題目分布。
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
surveyId | string | 是 | 問卷 ID |
需要 Scope:analytics:read
trendData(流量與轉換率趨勢)為專業版功能。免費方案使用者會收到空陣列,並附帶 _restricted 欄位說明。
回傳範例(專業版):
{
"surveyId": "cmn31l4ln0026rumcm4evrq5p",
"responseCount": 128,
"firstResponseAt": "2026-03-01T08:15:00.000Z",
"trendData": [
{ "date": "2026-03-20", "count": 12 },
{ "date": "2026-03-21", "count": 18 },
{ "date": "2026-03-22", "count": 9 }
],
"questionDistributions": {
"Q1": {
"非常滿意": 45,
"滿意": 52,
"普通": 22,
"不滿意": 9
}
}
}回傳範例(免費方案):
{
"surveyId": "cmn31l4ln0026rumcm4evrq5p",
"responseCount": 128,
"firstResponseAt": "2026-03-01T08:15:00.000Z",
"trendData": [],
"questionDistributions": {
"Q1": {
"非常滿意": 45,
"滿意": 52,
"普通": 22,
"不滿意": 9
}
},
"_restricted": {
"trendData": "趨勢分析為專業版功能,請升級方案"
}
}get_survey_response_summary
取得問卷的回應概覽,包含完成度、近 7 天與近 30 天回應數。
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
surveyId | string | 是 | 問卷 ID |
需要 Scope:analytics:read
回傳範例:
{
"surveyId": "cmn31l4ln0026rumcm4evrq5p",
"totalResponses": 128,
"completedResponses": 115,
"incompleteResponses": 13,
"latestResponseAt": "2026-03-22T14:30:00.000Z",
"last7DaysResponses": 39,
"last30DaysResponses": 128
}Token 格式
Token 格式為 ss_live_ 加上 32 個隨機字元:
ss_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345- Token 以 SHA-256 雜湊後儲存,伺服器不保存明文
- 建立後僅顯示一次,遺失需重新建立
- 可在帳號設定頁面隨時撤銷
安全性
- 資料隔離:每個 Token 只能存取所屬帳號的問卷,無法讀寫其他使用者的資料
- Scope 控制:Token 的權限範圍在建立時決定,無法事後擴充
- 過期機制:可設定 Token 有效期限,過期後自動失效
- 即時撤銷:在帳號設定中可立即撤銷任何 Token
- 稽核記錄:所有透過 MCP 執行的操作都會寫入稽核日誌
錯誤代碼
當操作失敗時,回應會包含以下錯誤代碼:
| 代碼 | 說明 |
|---|---|
SCOPE_INSUFFICIENT | Token 缺少該操作所需的權限 |
SURVEY_NOT_FOUND | 找不到問卷(或無權存取) |
QUOTA_EXCEEDED | 已達方案的問卷數量上限 |
PERMISSION_DENIED | 此功能需要升級方案 |
INVALID_INPUT | 輸入參數不合法 |
INTERNAL_ERROR | 伺服器內部錯誤 |
常見問題
Q: 可以建立多個 Token 嗎?
可以。你可以為不同的 AI 助手或用途建立各自的 Token,方便獨立管理與撤銷。
Q: Token 遺失了怎麼辦?
Token 僅在建立時顯示一次,無法找回。請撤銷遺失的 Token 並重新建立一個。
Q: 支援哪些 MCP 客戶端?
任何支援 MCP Streamable HTTP transport 的客戶端都可以使用,包括:
- Claude Desktop
- Cursor
- 其他支援 MCP 協定的 AI 工具