Scratchpad

io.github.scratchpad-sh由 GitHub 帳號 scratchpad-sh 發布v1.0.0更新於 Nov 3, 2026

Search, read, write, and organize your Scratchpad notes from any MCP client.

已驗證Streamable HTTP可網頁執行效率與工作流檔案與儲存知識與記憶

概覽

AI 產生的概覽

把助手連接到你的 Scratchpad 筆記,可搜尋、閱讀、寫入、整理筆記並還原歷史版本。

可以做什麼
  • 搜尋、閱讀與列出筆記和資料夾,支援附摘要片段的全文搜尋
  • 逐頁閱讀與檢索筆記附件中的檔案內容
  • 寫入筆記:建立、附加 Markdown,以及先以差異形式提出修改再套用
  • 整理筆記:移動、重新命名、封存、置頂與複製
  • 管理資料夾:建立、重新命名、移動,以及刪除空資料夾
  • 查看筆記的歷史記錄並還原舊版本
適用情境
當你的筆記存放在 Scratchpad,並希望助手在其中查找內容、草擬或附加文字、整理資料夾,或查看某則筆記過去寫了什麼時適用。既適合快速查詢,也適合需要先審閱變更再寫入的多步驟編輯。
執行需求
可使用託管端點並以 OAuth 登入,或在本機以 stdio 執行 npm 套件。本機方式需要 Node.js,並在 SCRATCHPAD_TOKEN 中提供於設定、API 權杖處建立的 API 權杖;read 權限的權杖可搜尋與閱讀,寫入需要 full 權限。SCRATCHPAD_URL 為選用,預設指向託管應用程式。
安裝前請注意
本機方式會把 API 權杖保存在用戶端設定中,full 權限權杖可寫入你的筆記。工具可建立、附加、移動、重新命名、封存與還原筆記和資料夾,並可刪除空資料夾;沒有刪除筆記的工具。編輯分兩步進行,可透過歷史記錄復原,密碼鎖定的筆記不會被存取。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Scratchpad,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.scratchpad-sh%2Fscratchpad/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "scratchpad": {
      "type": "http",
      "url": "https://app.scratchpad.sh/api/mcp"
    }
  }
}

README

Scratchpad MCP server

Give your AI your notes. An MCP server for Scratchpad, so Claude, Cursor, Codex, and any other MCP client can search, read, write, and organize the notes you already keep.

It is small on purpose: about 2,000 lines of TypeScript, no database, and no state on disk. Every tool is one or two calls to Scratchpad's HTTPS API, so you can read the whole thing in an evening and know exactly what your assistant can do.

Two ways to connect

Remote (recommended)

No install. Point your client at the hosted server and sign in with OAuth. This is the only way that works on a phone.

https://app.scratchpad.sh/api/mcp

Claude Code:

sh
claude mcp add --transport http --scope user scratchpad https://app.scratchpad.sh/api/mcp

Cursor, in ~/.cursor/mcp.json:

json
{  "mcpServers": {    "scratchpad": { "url": "https://app.scratchpad.sh/api/mcp" }  }}

Local (stdio)

For a client that only speaks stdio, or if you would rather hold an API token than an OAuth session. Create a token in Scratchpad under Settings, API tokens.

json
{  "mcpServers": {    "scratchpad": {      "command": "npx",      "args": ["-y", "@scratchpadsh/mcp"],      "env": { "SCRATCHPAD_TOKEN": "scr_your_token" }    }  }}

Check the token before wiring it up:

sh
SCRATCHPAD_TOKEN=scr_your_token npx -y @scratchpadsh/mcp --check
Variable
SCRATCHPAD_TOKENrequiredread can search and read. full is needed for anything that writes.
SCRATCHPAD_URLoptionalDefaults to https://app.scratchpad.sh.

Tools

AreaTools
Find and readsearch_notes, read_note, list_notes, list_folders
Attachmentssearch_attachment, read_attachment
Writecreate_note, append_to_note, propose_edit, apply_edit
Organizemove_note, rename_note, archive_note, pin_note, duplicate_note
Folderscreate_folder, rename_folder, move_folder, delete_folder
Historylist_versions, read_version, restore_version

Every name carries a scratchpad_ prefix, so the tools sit cleanly beside other servers in one session.

Built so a model cannot quietly wreck your notes

  • There is no tool that deletes a note. That stays a job for you.
  • Editing is two steps. propose_edit writes nothing: it returns a diff and an id. apply_edit takes that id and no content, so the text cannot change between showing you the diff and writing it.
  • Edits check the base. If the note changed since the proposal, the edit is refused rather than overwriting what you typed.
  • Every edit is reversible. History keeps earlier versions, and restore_version keeps the current one first.
  • Password-locked notes stay invisible, to tokens and connectors alike.
  • Tools are annotated, so a client can run reads freely and stop to show you each write.

Develop

sh
npm installnpm test

License

MIT. See LICENSE.

Made by Scratchpad, the notes app your AI can actually read. More at scratchpad.sh/ai.

來源:README.md,提交 3eaf90e

工具

22

scratchpad_search_notes

Search notes

Full-text search across the user's notes. Returns matching notes with a short snippet. Password-locked notes are never returned.

輸入參數query必填

scratchpad_read_note

Read note

Read the Markdown body of one note, by id. Get ids from search_notes or list_notes first. A long note comes in parts: the first ends by saying where the next begins and where each heading (each chapter, say) starts, so pass `start` to read the part wanted. Password-locked notes cannot be read: unlocking is something a browser does, and this connection has no way to do it.

輸入參數startnote_id必填

scratchpad_list_notes

List notes

List the user's notes, pinned first and then most recently updated, as id and title, with the folder each is filed in. Use when they ask what notes exist rather than for particular words, and when a title is enough to find the one they mean. Can list one folder, or the archive. Locked notes appear with their title hidden.

輸入參數offsetarchivedfolder_id

scratchpad_create_note

Create note

Create a new note. Returns its id. Never use em dashes or en dashes in anything written to a note. Use a period, colon, comma, or parentheses instead. Ordinary hyphens in compound words and numeric ranges are fine.

輸入參數markdown必填folder_id

scratchpad_list_folders

List folders

List the user's folders as a tree, with each folder's id and how many notes are filed directly in it. Folders nest three levels deep at most. Use this to find the id create_note, move_note and the other folder tools need.

無需輸入參數。

scratchpad_move_note

Move note

File a note in a folder, or take it out of every folder. Changes nothing inside the note. Password-locked notes cannot be moved from here.

輸入參數note_id必填folder_id

scratchpad_rename_note

Rename note

Rename a note. The name stays even when the first line changes later, as when renaming in the app. Changes nothing inside the note. Password-locked notes cannot be renamed from here. Never use em dashes or en dashes in a note's name. Ordinary hyphens are fine.

輸入參數title必填note_id必填

scratchpad_archive_note

Archive note

Archive a note, or bring one back. An archived note is out of the list but kept whole, still searchable, and returns with archived false. This is not deleting: nothing here deletes a note, which only the user can do, in the app.

輸入參數note_id必填archived

scratchpad_pin_note

Pin note

Pin a note to the top of the list, or unpin it. Changes nothing inside the note.

輸入參數pinnednote_id必填

scratchpad_duplicate_note

Duplicate note

Make a copy of a note, with its files, in the same folder, named with " copy" after the original's name. Returns the copy's id. Useful before a large change the user may want to compare against.

輸入參數note_id必填

scratchpad_list_versions

List versions

List a note's History: the versions kept as it changed, newest first, each with its id, when it was saved, by whom, and why. Use it when the user asks what a note used to say, or to undo a change.

輸入參數note_id必填

scratchpad_read_version

Read version

Read one version from a note's History as Markdown. A long one comes in parts, like read_note.

輸入參數startnote_id必填version_id必填

scratchpad_restore_version

Restore version

Put a note back to a version from its History. The note as it stands is saved to History first, so a restore is undone by restoring that one. Tell the user which version, from when, before calling this.

輸入參數note_id必填version_id必填

scratchpad_create_folder

Create folder

Create a folder, at the top level or inside another one as a sub-folder. Returns its id. Two folders can have the same name, so check list_folders first rather than making a second one by accident. Never use em dashes or en dashes in a folder name. Ordinary hyphens are fine.

輸入參數name必填parent_id

scratchpad_rename_folder

Rename folder

Rename a folder. Its notes and sub-folders stay where they are. Never use em dashes or en dashes in a folder name. Ordinary hyphens are fine.

輸入參數name必填folder_id必填

scratchpad_move_folder

Move folder

Move a folder, with everything in it, inside another folder or out to the top level. It goes last among its new neighbours. Refused if it would put anything more than three levels deep, or a folder inside itself.

輸入參數folder_id必填parent_id

scratchpad_delete_folder

Delete folder

Delete an EMPTY folder. A folder that still holds notes or sub-folders is refused: move them somewhere else first with move_note and move_folder, or ask the user to delete it in the app, where it can be undone.

輸入參數folder_id必填

scratchpad_append_to_note

Append to note

Add Markdown to the end of an existing note, leaving everything already there untouched. Prefer this over propose_edit when the change is purely an addition: it needs no diff and no second call. Never use em dashes or en dashes in anything written to a note. Use a period, colon, comma, or parentheses instead. Ordinary hyphens in compound words and numeric ranges are fine.

輸入參數note_id必填markdown必填

scratchpad_search_attachment

Search attachment

Find where something is discussed inside a file attached to a note. Returns short passages with the page each is on. Use it when a file's text was too long to be included whole, or to locate a topic before reading around it. Requires note_id.

輸入參數file必填query必填note_id

scratchpad_read_attachment

Read attachment

Read a range of pages out of a file attached to a note. read_note lists what a note has and how many pages each one is; this is how to read them. Use it after search_attachment to read around a match, or to work through a document a stretch at a time. Requires note_id.

輸入參數file必填note_idto_pagefrom_page必填

scratchpad_propose_edit

Propose edit

Propose a change to a note and show the diff. This does NOT write anything. It returns a proposal id, which apply_edit takes to write the change. Show the user the diff and let them decide before calling apply_edit. Prefer `edits`: each one quotes a short passage from the note in `find` (a line or two, copied exactly, enough to match only once) and gives its replacement in `replace`. To insert, quote the passage the new text goes after and repeat it at the start of `replace`. To add to the end, leave `find` empty. Send `markdown` (the COMPLETE new note body) only when rewriting most of the note. Never use em dashes or en dashes in anything written to a note. Use a period, colon, comma, or parentheses instead. Ordinary hyphens in compound words and numeric ranges are fine.

輸入參數editsnote_id必填summary必填markdown

scratchpad_apply_edit

Apply edit

Write a proposal from propose_edit to the note. Takes only the proposal id: the content cannot be changed between showing the diff and writing it.

輸入參數proposal_id必填

版本歷史

1
  1. v1.0.0最新Nov 1, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分