[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/iswalle-getnote-mcp-badge.png)](https://mseep.ai/app/iswalle-getnote-mcp) # getnote-mcp MCP (Model Context Protocol) server for [得到大脑(Get笔记)](https://biji.com) Open API. 得到大脑(Get笔记)是一款个人笔记管理工具。通过此 MCP Server,AI 模型可以帮助用户管理笔记。 > 🔑 **获取 API Key**:https://www.biji.com/openapi > > 💡 **开通会员**:[前往得到大脑会员购买页](https://www.biji.com/checkout?product_alias=9Ab36BB3ZD&spm=openapi_mcp) ## Installation 需要 Node.js 20 或更高版本。 ```bash # 直接运行(推荐,无需克隆) npx @getnote/mcp # 或全局安装 npm install -g @getnote/mcp ``` ## 使用场景 - 用户说「帮我记一下」「保存到笔记」「记录下来」→ `save_note` - 用户说「改一下这个笔记」「更新笔记内容」→ `update_note` - 用户说「查一下我的笔记」「找找之前的笔记」→ `list_notes` - 用户说「搜一下」「找找我哪些笔记提到了 XX」→ `recall` - 用户说「在 XX 知识库搜一下」→ `recall_knowledge` - 用户分享了一个链接,说「保存这个」→ `save_note`(链接笔记) - 用户说「给这个笔记加个标签」→ `add_note_tags` - 用户说「读这条链接笔记原文 / 读取会议转写」→ `get_note_original` / `get_note_transcript` - 用户说「把笔记放进知识库的某个文件夹」→ `list_topic_directories` + `batch_add_notes_to_topic` - 用户说「订阅这个抖音博主」→ `follow_topic_blogger` ## Features Exposes the following tools to AI models: | Tool | Description | |------|-------------| | `list_notes` | 获取笔记列表(游标分页) | | `list_reference_resources` | 按课程名/老师定位有个人笔记的课程容器 | | `get_notes` | 单次后端批量读取最多20条个人笔记正文,保留预算与逐条状态 | | `get_note` | 获取笔记详情(支持 `image_quality=original` 获取原图) | | `get_note_original` | 按笔记类型直接读取原文 | | `get_note_transcript` | 直接读取录音、会议或课堂转写 | | `get_note_attachments` | 直接列出图片、音频和文件附件 | | `get_note_marks` | 读取笔记标记 | | `get_note_chapters` | 读取独立章节时间线 | | `list_sprouts` / `get_sprout` | 列出发芽报告 / 读取报告详情 | | `get_knowledge_file_capabilities` | 查询知识库文件限制 | | `get_knowledge_file_upload_token` | 获取临时 OSS 上传凭据 | | `upload_knowledge_file` | 提交已上传文件的入库元数据 | | `get_note_timeline` | 直接读取录音或会议时间线及原文资源 | | `get_note_quick_note` | 直接读取录音快捷笔记 | | `get_note_todos` | 读取会议总结中明确待办章节规则解析出的待办;不让模型自由猜测 | | `save_note` | 新建笔记(纯文本/链接/图片,见下方类型说明) | | `update_note` | 更新笔记(标题/内容/标签,仅支持 plain_text 类型) | | `get_note_task_progress` | 查询创建笔记任务进度(链接/图片笔记) | | `delete_note` | 删除笔记(移入回收站) | | `add_note_tags` | 添加笔记标签 | | `delete_note_tag` | 删除笔记标签 | | `recall` | 全局语义搜索(在所有笔记中搜索) | | `recall_knowledge` | 知识库语义搜索(在指定知识库中搜索) | | `list_topics` | 获取知识库列表,默认 DEFAULT,可指定 scope | | `create_topic` | 创建知识库 | | `list_topic_notes` | 获取知识库笔记列表 | | `batch_add_notes_to_topic` | 批量添加笔记到知识库 | | `remove_note_from_topic` | 从知识库移除笔记 | | `list_topic_directories` | 浏览知识库文件夹及资源 | | `create_topic_directory` | 创建知识库文件夹 | | `update_topic_directory` | 重命名或移动知识库文件夹 | | `delete_topic_directory` | 删除空知识库文件夹 | | `get_upload_config` | 获取图片上传配置 | | `get_upload_token` | 获取图片上传凭证(预签名 URL) | | `upload_image` | 完整图片上传(自动获取凭证 + 上传到 OSS)| | `list_topic_bloggers` | 获取知识库订阅的博主列表 | | `follow_topic_blogger` | 订阅抖音博主到知识库 | | `list_topic_blogger_contents` | 获取博主内容列表(摘要) | | `get_blogger_content_detail` | 获取博主内容详情(含原文) | | `list_topic_lives` | 获取知识库已完成直播列表 | | `get_live_detail` | 获取直播详情(含 AI 摘要和原文转写) | | `get_quota` | 查询 API 调用配额 | | `share_note` | 生成笔记分享链接 | | `follow_topic_live` | 在知识库里订阅得到直播 | | `list_subscribe_topics` | 获取真实订阅的他人知识库,默认 DEFAULT,可指定 scope | ## Usage ### 配置授权 当前本地 MCP 通过 OpenAPI API Key 和 Client ID 鉴权。先在 **https://www.biji.com/openapi** 创建或选择应用,完成账号授权并生成 API Key,再把两项凭证配置给 MCP 客户端。不要把凭证写进会提交到仓库的配置文件。 ### Environment variable ```bash # 临时使用 GETNOTE_API_KEY=your_api_key GETNOTE_CLIENT_ID=your_client_id node dist/index.js # 持久化(添加到 ~/.zshrc 或 ~/.bashrc) export GETNOTE_API_KEY=gk_live_xxx export GETNOTE_CLIENT_ID=cli_xxx # 可选:仅在明确联调测试环境时覆盖 export GETNOTE_API_URL=http://entree.dev.didatrip.com ``` ### CLI flag ```bash node dist/index.js --api-key your_api_key --client-id your_client_id ``` ## Claude Desktop Configuration Add to `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "getnote": { "command": "node", "args": ["/path/to/getnote-mcp/dist/index.js"], "env": { "GETNOTE_API_KEY": "your_api_key_here", "GETNOTE_CLIENT_ID": "your_client_id_here" } } } } ``` ## Limits | Item | Limit | |------|-------| | 每日知识库创建上限 | 每个账号每天最多创建 **50 个知识库** | | 重置时间 | 按 **北京时间**自然日 00:00 重置 | > ⚠️ 超出限制时,`create_topic` 接口将返回 429 错误(`reason: quota_daily_exceeded`)。 ## Notes on Note Types `save_note` supports **three note types**: | Type | Description | |------|-------------| | `plain_text` | 纯文本笔记(默认) | | `link` | 链接笔记(需传 `link_url`) | | `img_text` | 图片笔记(需传 `image_urls`,通过上传图片到 OSS 获取) | > **语音笔记等其他类型**只能在 得到大脑(Get笔记) App 或 Web 端创建,MCP 可以读取但无法创建。 ## 录音台与录音卡笔记 使用 `list_notes` 的 `source` 定向筛选:AI录音台/墨案MOAN录音台为 `vendor_moan`,GetSeed录音卡为 `getseed`。设备全部笔记只限定来源,不额外加 `note_type=audio/meeting`;录音卡长录音和闪念均包含。明确只要其中一种录音卡模式时,才叠加 `recorder_audio` 或 `recorder_flash_audio`。 ```json {"name":"list_notes","arguments":{"source":"vendor_moan","page_size":20}} ``` 昨天/上周的笔记叠加 created_from/created_to(用户时区的RFC3339边界,from包含、to不包含)。翻页保留全部原条件,核对 applied_filters.source 与 notes[].source,按 pagination.next_cursor 继续并去重。has_more=false且无未解决的partial/warnings才表示当前授权范围已遍历;旧total不是设备范围总数。空结果不换来源补数,不能用标签或标题猜设备来源;没有设备约束的普通录音查询不加设备source。 只覆盖已经同步成笔记且有权读取的主笔记,不包括设备未同步或尚未形成笔记的会议记录。设备范围内的正文主题先按来源列候选、按需读正文,不把全局recall的Top-K后过滤称为完整设备搜索。转写用 `get_note_transcript`,不把AI总结/preview当作转写,也不把转写缺失当作笔记不存在。 ## 查找笔记与书库 - 书名用 `list_topics` 的 `query`,作者用 `author`,并指定 `scope: "BOOKSPACE"`。两者同时传入时须同时匹配;订阅书库使用 `list_subscribe_topics`。 - 书库定位后用 `list_topic_notes` 读取笔记。用户要全部笔记时不默认加 `note_type: "ref"`;仅要划线或摘录时再加。 - 本分支增加 `list_reference_resources`:source=dedao、resource_type=course,query仅匹配课程名exact/prefix,author精确匹配老师,两者AND且至少一个。由返回course_type+course_id调用 `list_notes` 的 reference_course_type/reference_course_id;当前66,包含课程直接引用及所属课节。旧reference_resource_id仍是原课节ID,组合按交集;course+topic_id与课程内语义搜索尚未开放。 - 新请求核对当前接口 capabilities/applied_filters,不把本地安装当作服务已发布,不接受旧服务忽略课程条件的成功结果。课程目录允许空结果页has_more=true,继续真实next_cursor;只有完成当前授权范围的遍历才能说已查全。 - 列表用于定位;完整内容调用 `get_note`,引用原文调用 `get_note_original`。引用笔记的 `ref_content` 是原文,`content` 是个人评论。 - 少量个人笔记可用 `get_notes` 的ids字符串数组,最多20个去重ID,默认content/ref_content/reference;original显式请求。默认32000/上限64000个Unicode码点及1MiB,成功项完整,deferred_budget整条待读,保留pending_ids/partial,不自动并发20次详情,不开放知识库共享权限。未知未来字段与状态原样保留。 - `recall` / `recall_knowledge` 显式传response_mode=snippet,可选max_snippet_chars=100..1000(默认400),核对search.snippet.v1,保留snippet_source/truncated/content_state;full指完整命中片段,不是全文。旧调用不传新参数保持原正文和top_k语义。 - 按响应的 `pagination.next_page` / `next_cursor` 继续,保持筛选条件;只有遍历完成才能说全部找到。语义搜索 Top-K 不代表全量,搜索为空也不能证明没有相关笔记。 ## 独立报告与知识库文件 - 标记 `get_note_marks`、发芽 `list_sprouts` / `get_sprout`、章节 `get_note_chapters` 与录音 `get_note_timeline` 独立读取。 - 文件上传前调用 `get_knowledge_file_capabilities` 获取格式、大小、页数与额度限制。 - `get_knowledge_file_upload_token` 获取临时凭据,本机用 CLI 1.6.0+ 的 `getnote upload <文件> --token-file <受控文件> --max-size-bytes <能力上限>` 直传 OSS,无需 CLI 再登录。 - `upload_knowledge_file` 提交文件元数据;用 `list_topic_directories` 确认同一资源达到 `SUCCESS`。OSS 上传完成不等于解析完成。凭据不出现在聊天或命令参数中。 ## 图片上传流程 通过 MCP 上传图片创建笔记需要三步: ### 1. 获取上传凭证 ``` Tool: get_upload_token Input: { "mime_type": "png" } ``` 返回 OSS 上传凭证: ```json { "accessid": "LTAI5t...", "host": "https://ali-bj2-oss-get-notes-prod.oss-accelerate.aliyuncs.com", "policy": "eyJleHBpcmF...", "signature": "nhyBord...", "callback": "eyJjYWxs...", "object_key": "get_notes_prod/...", "access_url": "https://ali-bj2-oss-get-notes-prod.oss-accelerate.aliyuncs.com/...", "oss_content_type": "image/png" } ``` ### 2. 上传到 OSS 使用凭证通过 multipart/form-data POST 上传: ```bash curl -X POST "${host}" \ -F "key=${object_key}" \ -F "OSSAccessKeyId=${accessid}" \ -F "policy=${policy}" \ -F "signature=${signature}" \ -F "callback=${callback}" \ -F "Content-Type=${oss_content_type}" \ -F "file=@/path/to/image.png;type=${oss_content_type}" ``` ### 3. 创建图片笔记 使用凭证中的 `access_url` 创建笔记: ``` Tool: save_note Input: { "title": "图片笔记", "note_type": "img_text", "image_urls": ["${access_url}"] } ``` > **推荐流程**:直接使用 `upload_image` 工具,它会自动完成步骤 1 和 2 并返回 `image_url`。`image_path` 仅接受相对路径;也可以传 `image_base64`,避免 MCP 读取超出工作目录的本地文件。 ## API - **Base URL**: `https://openapi.biji.com/open/api/v1` - **Auth**: Bearer Token (API Key) Get your API Key and Client ID at [得到大脑(Get笔记)开放平台](https://www.biji.com/openapi). ### 新版契约兼容 - 所有雪花 ID 优先传十进制字符串。为兼容历史调用,工具仍接受 JavaScript 安全整数;超过 `Number.MAX_SAFE_INTEGER` 的数字会被拒绝,避免静默精度损失。 - `save_note` 支持 `topic_id`、`parent_id`、`client_request_id`。重试同一创建请求时复用同一个 `client_request_id`。 - `list_topics` 和 `list_subscribe_topics` 默认只返回 `DEFAULT`;需要书籍、客户档案或团队知识库时,显式传 `BOOKSPACE`、`CUSTOMER` 或 `TEAMSPACE`。订阅列表不包含自己创建的知识库。 - 知识库支持文件夹浏览和管理;`batch_add_notes_to_topic` 可传 `directory_id`,把笔记直接加入目标文件夹。 - 即使 HTTP 为 200,`success:false` 仍按失败处理;错误结果保留 `code/reason/retryable/field/constraint/expected_type/request_id`。 - 错误增量保留supported_values/retry_after_seconds。明确只读的瞬时QPS429最多额外重试2次、累计等待5秒,尊重等待建议并增加正向抖动;配额、写操作、凭证签发与未知接口不重试。MCP取消会中止等待/请求,保留最后错误与等待建议。 - `GETNOTE_API_URL` 可传站点根地址、`/open` 或完整 `/open/api/v1`;未设置时仍使用生产地址。 ## 🚀 进阶用法:用笔记内链实践柳比歇夫时间日志法 柳比歇夫时间日志法的核心是**每天记录自己把时间花在了哪里**,事后统计、复盘、改进。 结合 得到大脑(Get笔记)内链,AI 可以帮你自动串联: **每天早上** > 👤 帮我记一条今日工作日志,内链到「产品设计方案」和「客户反馈」这两条笔记 > > 🤖 已记录「2026-04-24 工作日志」,正文已插入两条内链。 **每周复盘** > 👤 找找我这周的工作日志,整理一下时间分配 > > 🤖 找到 5 条日志,你这周:产品设计 12h、客户沟通 6h、开会 4h…… **内链格式**:在笔记正文里用 `https://biji.com/note/{note_id}` 引用其他笔记。示例: ``` 参考上次的讨论:https://biji.com/note/1234567890000000001 ``` 告诉 AI 要内链到哪条笔记,AI 会自动获取对应 note_id 插入。 --- ## 🆕 更新日志 | 日期 | 版本 | 新能力 | 适合怎么用 | |------|------|--------|------------| | 2026-10-13 | **v1.9.1** | 修复订阅查询中布尔筛选字段被误判为非法响应的问题;明确书名与作者参数 | 正常查询订阅书库,保留作者等筛选条件的严格校验 | | 2026-10-13 | **v1.9.0** | 支持书库身份、引用来源和时间筛选,保留分页及元数据 | 按来源找到笔记,通过详情读取全文,区分划线原文与评论 | | 2026-09-24 | **v1.8.0** | 独立读取标记、发芽、章节时间线;支持知识库文件能力、临时上传凭据与入库 | 云 MCP 配合本地 CLI 上传文件,无需重复授权 | | 2026-08-13 | **v1.7.0** | 1. 支持知识库目录浏览、创建、重命名、移动和删除
2. 支持将笔记加入指定目录,以及读取和维护已有团队知识库 `TEAMSPACE`
3. 支持订阅抖音博主、读取博主内容
4. 增加录音原文、链接原文、附件、时间线、快捷笔记和会议待办工具
5. 统一雪花 ID、结构化错误和异步任务结果 | 让支持 MCP 的 AI 工具直接整理知识库、归档笔记并读取深层内容;调用失败时保留明确原因和 `request_id`,便于恢复与排查 | | 2026-04-23 | **v1.3.1** | 1. 笔记内链
2. 保存分享链接自动变笔记 | 1. 用内链串联每天的工作日志和项目笔记,实践时间日志法
2. 收到别人发来的分享链接直接存入笔记 | | 2026-04-16 | **v1.3.0** | 1. 生成笔记分享链接
2. 知识库订阅得到直播 | 1. 把笔记一键分享给朋友
2. 在知识库里订阅得到直播课,直播结束后 AI 摘要自动入库 | | 2026-03-23 | **v1.2.x** | 获取我订阅的知识库,支持语义搜索 | 开通了某个知识库,可以直接问 AI:「在我订阅的 XXX 知识库里搜一下时间管理」 | | 2026-03-12 | **v1.2.0** | 查看订阅博主内容、直播摘要和转写原文 | 把别人的知识变成自己可检索的笔记库 | --- ## License MIT