使用手冊 › Slima MCP › 用 schema resource 查精確權限
用 schema resource 查精確權限
最後更新 2026 年 9 月 9 日 · 閱讀約 8 分鐘
MCP 不只有工具(tools)——還有 資源(resources)。schema resource 是其中關鍵的一個:告訴 AI 一本書的精確權限。

怎麼用
資源 URI:slima://books/{book_token}/schema
支援 MCP 的 client 可以直接讀 resource,不用呼叫 tool。
# 虛擬碼(實際寫法看你的 client 怎麼提供 resource API)
schema = read_resource("slima://books/bk_xxx/schema")
回傳的內容
{
"book_token": "bk_xxx",
"book_type": "script",
"studio_label": "Script Studio",
"mcp_capabilities": {
"readable_paths": "Any path within the book tree ...",
"writable_paths": [".script_studio/planning/**/*"],
"writable_exceptions": [".script_studio/planning/.initialized"],
"readonly_paths": [
".script_studio/series.json",
".script_studio/seasons/**/season.json",
".script_studio/seasons/**/episodes/**/episode.json",
".script_studio/seasons/**/scenes/*.scene",
".script_studio/characters/**/*.character",
".script_studio/locations/**/*.location",
".script_studio/storylines/**/*.storyline",
".script_studio/notes/**/*.note",
".script_studio/planning/.initialized"
],
"write_access_note": "..."
},
"ai_file_policy": {
"writable": [".md", ".markdown", ".txt"],
"field_level_tools": {
".beats": "update_beat_board",
".timeline": "update_timeline",
".script": "update_script",
".map": "update_relationship_map",
".geomap": "update_world_map"
},
"readonly": [".character", ".location", ".json", ".yaml", ".yml"],
"authority": "get_capabilities"
},
"structured_file_types": { "*.scene": "...", "*.character": "..." },
"policy_source": "Rails: Mcp::FileOperationService#validate_studio_write_path!"
}
為什麼有這個 resource
AI 寫 *.scene 會被擋(400)——但先呼叫 schema 就能事前知道這條 path 寫不了,不必白白浪費一次 API 呼叫。
AI 的推薦工作流程
1. list_books → 拿 book_token
2. read_resource(slima://books/{token}/schema) → 拿規則
3. 根據規則安全規劃 read / write 操作
4. 開始實際操作
有些支援 MCP 的用戶端會自動把 resource 攤平給 AI 看——AI 不需要明確呼叫。
寫作工作室 書的 schema
{
"book_token": "bk_xxx",
"book_type": "book",
"studio_label": "Writing Studio",
"mcp_capabilities": {
"writable_paths": ["**/*"],
"readonly_paths": []
},
"ai_file_policy": {
"writable": [".md", ".markdown", ".txt"],
"field_level_tools": {
".beats": "update_beat_board",
".timeline": "update_timeline",
".script": "update_script",
".map": "update_relationship_map",
".geomap": "update_world_map"
},
"readonly": [".character", ".location", ".json", ".yaml", ".yml"],
"authority": "get_capabilities"
},
"structured_file_types": {}
}
路徑和檔案型別是兩個問題,不要讀成同一個。
mcp_capabilities 回答路徑:寫作工作室的書,每一條路徑都可寫。
ai_file_policy 回答型別,而且兩種工作室都適用。通用的寫入工具(write_file、edit_file、append_to_file、delete_file)只吃稿件——.md、.markdown、.txt。field_level_tools 底下那五種要用它指名的工具,一次改一個欄位;整份覆寫會被拒絕,因為那會弄丟模型沒被給看的那部分。寫入這幾種需要付費方案,讀取不用。readonly 底下那幾種完全不能寫。
create_file 是值得記住的例外:對結構化檔,它會建一個形狀正確的空檔案並忽略你送的內容,所以流程是先建、再用工具填。
這個區塊跟著 client 一起發布,可能落後伺服器一次部署。兩邊不一致時以 get_capabilities 為準——authority 欄位講的就是這件事。
相關
打開 app,用你自己的書做一次。免費開始,不用信用卡。