用途
keep-mcp 是一个用于 Google Keep 的 MCP 服务器,让支持 Model Context Protocol 的 AI 客户端能够以工具调用的方式操作 Google Keep 笔记。它基于 gkeepapi,通过非官方的私有 API 连接 Google Keep。
主要能力
查询与读取工具
- find:搜索笔记(默认不区分大小写),可选过滤条件包括标签、颜色、是否置顶、是否归档、是否在回收站、创建/更新日期范围(ISO 8601,UTC)以及结果数量限制
- get_note:按 ID 获取单条笔记
创建与更新工具
- create_note:创建带标题和正文的新笔记(自动添加 keep-mcp 标签)
- create_list:创建清单笔记
- update_note:更新笔记标题和正文
- add_list_item:向清单笔记添加条目
- update_list_item:更新清单条目文本和勾选状态
- delete_list_item:删除清单条目
笔记状态工具
- set_note_color:设置笔记颜色(有效值:DEFAULT、RED、ORANGE、YELLOW、GREEN、TEAL、BLUE、CERULEAN、PURPLE、PINK、BROWN、GRAY)
- pin_note:置顶或取消置顶
- archive_note:归档或取消归档
- trash_note:移入回收站
- restore_note:恢复已删除/回收站中的笔记
- delete_note:标记笔记为删除
标签、协作者与媒体工具
- list_labels / create_label / delete_label:标签的列出、创建与删除
- add_label_to_note / remove_label_from_note:为笔记添加或移除标签
- list_note_collaborators / add_note_collaborator / remove_note_collaborator:列出、添加、移除笔记协作者邮箱
- list_note_media:列出笔记的媒体附件(含媒体链接)
- download_media:通过已认证会话将笔记媒体(图片、绘图、音频)下载到本地目录(原始媒体链接对普通 HTTP 客户端返回 403)
默认情况下,所有破坏性和修改性操作只允许作用于由该 MCP 服务器创建的笔记(即带有 keep-mcp 标签的笔记)。将 UNSAFE_MODE 设为 true 可绕过此限制。
使用方式
将 MCP 服务器加入你的 MCP 服务器列表,并添加凭证:
- GOOGLE_EMAIL:你的 Google 账号邮箱地址
- GOOGLE_MASTER_TOKEN:你的 Google 账号 master token
获取 Google master token keep-mcp 使用 gkeepapi,通过非官方私有 API 连接 Google Keep。Google master token 拥有账号的完全访问权限,请像对待密码一样妥善保管,切勿提交或分享。请使用 gpsoauth 文档中记录的浏览器辅助令牌交换流程,可选择:
- 本地 Python:遵循 gpsoauth 的替代流程
- Docker:遵循 gkeepapi 的“Obtaining a Master Token”说明,无需本地 Python 环境即可运行同样的交换流程 两种方式都需要 gpsoauth 文档中描述的浏览器 oauth_token。旧版说明可能要求使用 Google 密码或应用专用密码并调用 perform_master_login(),该流程不可靠且可能返回 BadAuthentication,应改用上述浏览器辅助流程。
本地开发(uv + make) 如果偏好 JS 风格工作流(npm i、npm start),可使用项目自带的 Makefile。运行带凭证的真实账号冒烟测试时,也可使用等效的直接 uv 命令(不使用 make)。
测试 项目在 tests/ 下包含轻量级单元测试套件,覆盖:note 和 list 对象的序列化结构(含标签、协作者、媒体和清单条目);修改安全性行为(keep-mcp 标签要求及 UNSAFE_MODE=true 覆盖);src/server/cli.py 中 MCP 工具在模拟 Keep 客户端对象下的行为(工具正常路径和关键错误路径)。 针对真实 Keep 账号的冒烟测试:可在专用测试账号上运行基础生命周期冒烟测试(含归档/取消归档)。该脚本用于人工验证,不在 CI 中运行。
GitHub Actions 每次拉取请求运行:lint(ruff check .);带覆盖率的单元测试(pytest -q --cov=src/server --cov-report=term-missing --cov-fail-under=70);字节码检查(python -m compileall src)。
合并到 main 后自动发布(GitHub Actions) 仓库在 .github/workflows/release.yml 中包含发布工作流,每次推送到 main(包括已合并的 PR)时运行:检查上次发布标签(vX.Y.Z)以来的提交;根据 Conventional Commit 类型计算下一个语义化版本;当没有可发布的提交类型时跳过发布;运行 lint 和单元测试;发布到 PyPI;创建 GitHub release/标签 v<calculated-version> 并生成发布说明。
版本递增规则:
- major:提交主题含 !(如 feat!: 或 fix(api)!:),或提交正文含 BREAKING CHANGE
- patch:fix:、perf:、revert:
- 不发布:docs:、chore:、ci:、test:、refactor:(除非提交标记为破坏性变更)
所需仓库密钥:PYPI_API_TOKEN,一个 PyPI API token(建议范围:仅此项目)。
手动发布到 PyPI:更新 pyproject.toml 中的版本;构建包:pipx run build;上传到 PyPI:pipx run twine upload --repository pypi dist/ *。
使用 MCP 客户端在本地运行 当希望客户端从本地检出而非 PyPI 运行此服务器时,可创建本地 virtualenv 并以可编辑模式安装:将服务器添加到 MCP 客户端配置。
- config.toml 客户端(Codex、Goose 等)
- JSON mcpServers 客户端(Claude Desktop、Cursor、Cline 等) 替代方式(不使用 make):从 MCP 客户端启动前先运行一次 make install。只需提供仓库根路径(无需绝对 /.venv/bin/python 路径)。确保 make 和 uv 在 PATH 中。更新配置文件后重启 MCP 客户端。UNSAFE_MODE 为可选,除非你明确希望修改非 keep-mcp 笔记,否则保持为 "false"。
适用场景
适用于希望通过支持 MCP 的 AI 客户端查询、创建和管理 Google Keep 笔记的用户,包括笔记搜索、清单管理、标签与协作者维护以及媒体附件下载等场景。也可用于本地开发与测试该 MCP 服务器。
限制
- 基于非官方私有 API,master token 拥有账号完全访问权限,需像密码一样保管
- 默认只允许修改由该服务器创建的笔记,UNSAFE_MODE=true 可绕过该限制
- 旧版使用 Google 密码/应用专用密码的 perform_master_login() 流程不可靠,可能返回 BadAuthentication,需使用浏览器辅助流程
- 若遇到 "DeviceManagementRequiredOrSyncDisabled",需在 https://admin.google.com/ac/devices/settings/general 中关闭移动管理(Unmanaged)
- 媒体原始链接对普通 HTTP 客户端返回 403,需通过已认证会话下载
其他产品细节(如收费、价格、平台支持、效果等)暂未提供。