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 分