做完這篇,Claude 對話會先自己做研究,接著打開你的某份 osFoundry Note,在原有簡報旁邊新增一個 Slides 分頁,填入一份簡短的簡報,並把用到的每個網頁都放進這份 Note 的 Sources 分頁。團隊已經做好的簡報維持原樣。引用來源存在 Note 裡而不是聊天中,所以下一個打開簡報的人可以查證每個數字的出處。
誰負責什麼
| Claude 這邊 | osFoundry 這邊 | |
|---|---|---|
| 研究 | Claude 自己的網路搜尋與推理,在你的 Claude 對話中進行 | Claude 寫入之前什麼都不做 |
| 哪份 Note | Claude 從伺服器列出的清單中挑選 | 只限連線已加入的專案中的 Notes |
| 哪份簡報 | Claude 必須送出確切的分頁 ID | list_note_tabs 會回傳每一個分頁實例,所以兩個 Slides 分頁就是兩個 ID |
| 新簡報 | Claude 送出大綱,每次呼叫最多 20 張投影片 | create_note_tab 新增一個 Slides 分頁並回傳它的新 ID |
| 引用來源 | Claude 送出標題和 HTTP 或 HTTPS 網址 | add_note_source 在 Sources 分頁新增一列 |
| 核准 | 每次寫入前 Claude 的工具權限提示 | 你目前對這份 Note 的編輯權限,每次呼叫都會檢查 |
| 紀錄 | 對話記錄 | 連線的 Recent activity,每次工具呼叫一行 |
設定
這裡假設 Claude 自訂連接器已經建好:在 osFoundry 中點鑰匙圖示 → Connected → Add assistant,再到 Claude 把 https://api.osfoundry.io/api/v1/external-mcp 加為連接器,並把連線加入某個專案。
1. 把 Note 放進已連線的專案
打開 Note,開啟右側面板,前往 Config → Settings。如果 Project 欄位顯示「Add to project」,就選擇 Claude 連線所屬的專案。只存在這台裝置上的 Note 沒有雲端副本,所以連線看不到它。
2. 讓三個寫入工具保持開啟
在鑰匙圖示 → Connected 中選擇 Claude 連線,查看 Tools。這篇的流程中 Claude 需要以下工具:
read list_note_tabs read_note_tab list_note_attachments write create_note_tab edit_note_tab add_note_source 所有支援的工具預設都是開啟的。如果你取消勾選寫入工具並按下 Save tools,Claude 仍然可以讀取 Note 和 Sources 清單,但無法新增簡報或引用來源。
3. 在提示詞中指明 Note、簡報和 Sources 分頁
Claude 會自己把名稱對應到分頁 ID,不過明確要它建立新分頁,而不是「更新簡報」,就能讓它不去碰原有的簡報。
研究這一季大型語言模型的 API 價格有哪些變化。 接著在 osFoundry 打開「Q4 pricing research」這份 Note。先讀 Research notes 分頁和現有的 Sources。新增一個名為「API price cuts」的「新」Slides 分頁, 大約五張投影片,最後放一張 Sources 投影片,並把你參考過的每個網頁 都加到這份 Note 的 Sources 分頁。不要動 Pricing 和 Launch status 這兩份簡報。 實際跑一次
Note、網頁和 Claude 的回答都是範例資料。工具名稱和參數則是正式伺服器在 tools/list 中列出的內容。在 Claude Code 裡,同樣的工具會顯示為 mcp__osfoundry__create_note_tab 等名稱。
Example [Claude runs its own web searches and reads three pages] Claude → list_note_tabs {"note_id": "…"} ← version "…12:41.118Z" Research notes (markdown) id "markdown" Pricing (slides) id "slides-3-mh1q…" Launch status (slides) id "slides-5-mh4c…" … plus Files and Sources Claude → read_note_tab {"note_id": "…", "tab_id": "markdown"} ← the team's notes, 1,240 characters Claude → list_note_attachments {"note_id": "…", "kind": "sources"} ← 1 source: "Vendor pricing page (Q3 snapshot)" Claude → create_note_tab {"note_id": "…", "tab_type": "slides", "label": "API price cuts", "slides": [{"title": "API prices this quarter", "body": "…"}, {"title": "Who cut, by how much", "body": "…"}, {"title": "Cached input pricing", "body": "…"}, {"title": "What it means for our plan", "body": "…", "notes": "Pause here for questions"}, {"title": "Open questions", "body": "…"}], "expected_version": "…12:41.118Z", "idempotency_key": "deck-api-price-cuts"} [Claude asks you to allow this tool call → Allow] ← tab ID "slides-9-mh8z…" Claude → read_note_tab {"note_id": "…", "tab_id": "slides-9-mh8z…"} ← 5 slides, version "…13:02.540Z" Claude → edit_note_tab {"note_id": "…", "tab_id": "slides-9-mh8z…", "operation": "slide_add", "title": "Sources", "body": "Three pages, listed in the Sources tab", "expected_version": "…13:02.540Z", "idempotency_key": "deck-api-price-cuts-sources-slide"} ← saved, 6 slides Claude → list_note_tabs → add_note_source {"title": "…", "url": "https://…", "description": "Price table, used on slide 2", "expected_version": "…", "idempotency_key": "src-…"} (three times, one page each, a fresh version before each) ← source IDs Claude → list_note_attachments {"note_id": "…", "kind": "sources"} ← 4 sources Claude: 「API price cuts」是 Q4 pricing research 裡新的 Slides 分頁, 共六張投影片,最後一張是 Sources 投影片。我用到的三個網頁 都在 Sources 分頁中,並各自註明支撐哪一張投影片。 Pricing 和 Launch status 都沒有改動。 範例:Note 的分頁列,顯示兩份原有簡報,以及已開啟的新簡報 API price cuts
這份 Note 原本就有兩份簡報,類型都是 slides。如果 Claude 要的是「那個 slides 分頁」,根本沒有正確答案。list_note_tabs 會為每個實例給一個 ID,create_note_tab 會回傳它建立的分頁 ID,之後的每次編輯都指名這個 ID。所以結尾那張投影片才會落在新簡報裡,而不是分頁列最前面的 Pricing。
大綱是跟著建立呼叫一起送出的。一次寫入就建好分頁和其中五張投影片。Sources 投影片是之後才加的,作為對這份已存在簡報的編輯。slide_add 會在它指向的簡報中新增一張投影片,而它的 schema 沒有位置欄位,所以如果順序很重要,就把投影片寫進大綱。
範例:執行後的 Sources 分頁,Claude 新增的三個網頁排在原有來源下方
每筆引用來源都是 Sources 分頁中的一列,包含標題、連結、主機名稱和 Claude 寫的一行說明。你可以在那裡開啟、編輯、重新整理或移除它們,就跟有人手動加入的來源一樣。把滑鼠移到某一列上,複製按鈕會給你一個直接指向該來源紀錄的連結,可以貼進投影片的文字裡。
範例:Claude 連線的 Recent activity,每次工具呼叫一行
在鑰匙圖示 → Connected 中,連線的 Recent activity 會列出每次呼叫的判定結果和時間,不用翻聊天記錄也能看到 Claude 在 Note 裡做了什麼。
界線在哪裡
研究留在 Claude 那邊。osFoundry 看不到 Claude 的搜尋,也看不到它讀過的網頁。它只會收到 Claude 選擇寫入的內容:投影片,以及每筆來源的標題、網址和說明。如果投影片上的某個說法在 Sources 裡沒有對應的一列,在 Note 裡一眼就看得出來,這正是要求把引用放在那裡的用意。
Claude 可以新增簡報,但不能接管簡報。create_note_tab 只會建立新的 Slides 或 Sheet 分頁,所以大綱無法覆蓋別人做好的簡報。slide_add 和 slides_add_outline 只作用在 Claude 指名 ID 的那一份簡報上,而且每次寫入都帶著 Claude 最後讀到的 Note 版本,所以如果這段期間有人改了簡報,寫入會被退回,直到 Claude 重新讀取。
引用可以加入,檔案維持關閉。add_note_source 只接受 HTTP 和 HTTPS 連結。list_note_attachments 以中繼資料的形式列出 Files 和 Sources,每頁最多 50 筆,不含檔案內容,也沒有下載連結。貼到聊天裡的下載連結可能被轉傳到任何地方,而且在你撤銷連線後依然有效。編輯或移除來源和檔案,留給人在桌面應用程式中處理,因為 edit_note_tab 兩者都不會碰。
連接器做出來的投影片很陽春。大綱中的每張投影片只有標題、內文和講者備忘稿。主題、圖片和版面配置,交給之後在 osFoundry 打開簡報的人處理。
重試是安全的。每次寫入都帶有 idempotency_key。如果 Claude 沒收到回應,用同一個 key 再呼叫一次,osFoundry 會回傳第一次的結果,所以你只會得到一個「API price cuts」分頁,每個來源也只有一列,不會變成兩份。
一旦你更改權限,存取就會在下一次呼叫時結束。把 Note 移出專案、把專案從連線中移除,或按下 Revoke connection,Claude 的下一次讀取就會被拒絕。
下一步
請 Claude 用 read_note_tab 讀取 Pricing 簡報,與新的 API price cuts 簡報比對,再把修正內容連同它自己的來源做成第三個 Slides 分頁,讓原始簡報保持不動以便審閱。Sources 分頁存放什麼、使用者如何手動加入,請見 Sources 分頁頁面;簡報編輯器本身則在 Note Slides 頁面。




