使用手冊 › Slima MCP › 用 schema resource 查精確權限

用 schema resource 查精確權限

最後更新 2026 年 9 月 9 日 · 閱讀約 8 分鐘

MCP 不只有工具(tools)——還有 資源(resources)。schema resource 是其中關鍵的一個:告訴 AI 一本書的精確權限。

Slima Authorized Apps:MCP client 透過 schema resource 查精確權限後行為列在此處

怎麼用

資源 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 欄位講的就是這件事。

相關

到 Slima 裡試試

打開 app,用你自己的書做一次。免費開始,不用信用卡。

打開 Slima
這篇有幫助嗎?