保持mcp
Google Keep的MCP服务器
如何使用
- 将MCP服务器添加到您的MCP服务器:
"mcpServers": {
"keep-mcp-pipx": {
"command": "pipx",
"args": [
"run",
"keep-mcp"
],
"env": {
"GOOGLE_EMAIL": "Your Google Email",
"GOOGLE_MASTER_TOKEN": "Your Google Master Token - see README.md"
}
}
}- 添加您的凭据:
GOOGLE_EMAIL:您的Google帐户电子邮件地址GOOGLE_MASTER_TOKEN:您的Google帐户主令牌
检查https://gkeepapi.readthedocs.io/en/latest/#obtaining-a-master-token和https://github.com/simon-weber/gpsoauth?tab=readme-ov文件#替代流以获取更多信息。
特性
查询和读取工具
find:使用可选过滤器搜索笔记,包括标签、颜色、固定、存档和丢弃get_note:通过ID获取一张便条
创建和更新工具
create_note:创建一个带有标题和文本的新笔记(自动添加keep-mcp标签)create_list:创建检查表注释update_note:更新笔记的标题和文本add_list_item:在检查表备注中添加一项update_list_item:更新检查表项目文本和检查状态delete_list_item:删除检查表项
注释状态工具
set_note_color:设置钞票颜色(有效值:默认、红色、橙色、黄色、绿色、TEAL、蓝色、CERULEAN、紫色、粉色、棕色、灰色)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:列出笔记的媒体blob(带媒体链接)
默认情况下,所有破坏性和修改操作都仅限于MCP服务器创建的注释(即保留MCP标签)。集 UNSAFE_MODE 到 true 绕过这一限制。
"env": {
...
"UNSAFE_MODE": "true"
}本地开发(uv+make)
如果你喜欢JS风格的工作流程(npm i, npm start),使用包含的 Makefile:
make install # like npm i
make start # like npm start
make test
make lint使用凭据运行真实帐户烟雾测试:
GOOGLE_EMAIL="you@example.com" \
GOOGLE_MASTER_TOKEN="..." \
make smoke等效直接 uv 命令(无 make):
UV_CACHE_DIR=/tmp/uv-cache uv venv --python 3.11 .venv
UV_CACHE_DIR=/tmp/uv-cache uv pip install --python .venv/bin/python -e .
UV_CACHE_DIR=/tmp/uv-cache uv run --no-sync --python .venv/bin/python -m server测试
单元测试(默认)
该项目包括一个轻量级的单元测试套件 tests/.
它验证了:
- 注释和列表对象(包括标签、协作者、媒体和列表项)的注释序列化形状
- 修改安全行为(
keep-mcp标签要求和UNSAFE_MODE=true以(权力)否决 - MCP工具行为
src/server/cli.py使用模拟的Keep客户端对象(工具快乐路径和关键错误路径)
在本地运行:
make test对真实Keep帐户进行烟雾测试
为了增强信心,请对专用测试帐户运行基本的生命周期烟雾测试:
GOOGLE_EMAIL="you@example.com" \
GOOGLE_MASTER_TOKEN="..." \
make smoke它的作用:
- 创建便笺
- 更新说明
- 固定/取消固定
- 存档/取消存档
- 垃圾/恢复
- 删除
此脚本用于手动验证,不在CI中运行。
CI检查
GitHub Actions在每个pull请求上运行并执行:
- 棉绒(
ruff check .) - 覆盖率单元测试(
pytest -q --cov=src/server --cov-report=term-missing --cov-fail-under=70) - 字节码健全性(
python -m compileall src)
出版
合并时自动发布到 main (GitHub操作)
此仓库包括一个发布工作流,位于 .github/workflows/release.yml 这取决于每一次推动 main (包括合并的PR)。
它将:
- 检查自上次发布标签以来的提交(
vX.Y.Z) - 从常规提交类型计算下一个语义版本
- 当没有可发布的提交类型时跳过发布
- 运行lint和单元测试
- 构建
dist/* - 发布到PyPI
- 创建GitHub发布/标签
v生成笔记
版本冲突规则:
- 专业:提交主题
!(例如:feat!:或fix(api)!:)或提交包含BREAKING CHANGE - 未成年人:
feat: - 补丁:
fix:,perf:,revert: - 无释放:
docs:,chore:,ci:,test:,refactor:(除非该承诺被标记为违约)
所需的存储库机密:
PYPI_API_TOKEN:PyPI API令牌(推荐范围:仅此项目)
手动发布
要手动发布到PyPI:
- 更新中的版本
pyproject.toml - 构建包:
pipx run build- 上传到PyPI:
pipx run twine upload --repository pypi dist/*使用MCP客户端在本地运行
当您希望客户端从本地签出而不是PyPI运行此服务器时,这很有用。
- 创建一个本地virtualenv并在可编辑模式下安装:
cd /ABSOLUTE/PATH/TO/keep-mcp
make install- 将服务器添加到MCP客户端配置中。
config.toml 客户(Codex、Goose等)
[mcp_servers.keep_mcp]
command = "make"
args = ["-C", "/ABSOLUTE/PATH/TO/keep-mcp", "start"]
[mcp_servers.keep_mcp.env]
GOOGLE_EMAIL = "you@example.com"
GOOGLE_MASTER_TOKEN = "your-master-token"
UNSAFE_MODE = "false"JSON mcpServers 客户端(Claude Desktop、Cursor、Cline等)
{
"mcpServers": {
"keep-mcp-local": {
"command": "make",
"args": ["-C", "/ABSOLUTE/PATH/TO/keep-mcp", "start"],
"env": {
"GOOGLE_EMAIL": "you@example.com",
"GOOGLE_MASTER_TOKEN": "your-master-token",
"UNSAFE_MODE": "false"
}
}
}
}备选方案(无 make):
[mcp_servers.keep_mcp]
command = "uv"
args = [
"--directory", "/ABSOLUTE/PATH/TO/keep-mcp",
"run", "--no-sync", "--python", ".venv/bin/python",
"-m", "server"
]笔记:
- 跑
make install在从MCP客户端开始之前。 - 只需要repo根路径(没有绝对路径
/.venv/bin/python路径)。 - 确保
make和uv在你的PATH. - 更新配置文件后重新启动MCP客户端。
UNSAFE_MODE是可选的;保持它"false"除非您明确要修改非-keep-mcp笔记。
故障排除
- 如果您收到“设备管理要求或同步禁用”检查https://admin.google.com/ac/devices/settings/general并关闭“关闭移动管理(非托管)”

