SuperAPI AI 工具集

keep-mcp

keep-mcp 是一个面向 Google Keep 的 MCP(Model Context Protocol)服务器,由 feuerdev 开发并在 GitHub 开源。它通过 gkeepapi 连接 Google Keep 的非官方私有 API,让支持 MCP 的 AI 客户端能够查询、创建、更新和管理 Google Keep 笔记。主要工具包括:搜索与读取笔记(find、get_note)、创建与更新笔记和清单(create_note、create_list、update_note、add_list_item 等)、笔记状态管理(设置颜色、置顶、归档、回收站、恢复、删除)、标签与协作者管理、以及媒体附件列表与下载。默认情况下,所有破坏性和修改性操作仅限由该服务器创建的笔记(带有 keep-mcp 标签),可通过设置 UNSAFE_MODE 为 true 绕过限制。使用前需配置 GOOGLE_EMAIL 和 GOOGLE_MASTER_TOKEN 凭证,并通过浏览器辅助流程获取 master token。项目提供 Makefile 支持本地开发、单元测试和真实账号冒烟测试,并通过 GitHub Actions 自动发布到 PyPI。

访问官网

工具介绍

用途

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,需通过已认证会话下载

其他产品细节(如收费、价格、平台支持、效果等)暂未提供。