Amplenote MCP服务器
一个模型上下文协议(MCP)服务器,提供对Amplenote SQLite数据库缓存的访问。
特性
注释操作
- search_notes:使用全文搜索(FTS4)搜索笔记
- get_note_by_uuid:通过UUID检索完整的笔记内容
- get_note_by_name:按名称查找笔记(部分匹配)
- list_notes:列出所有带页码的笔记
- 获取最近修改的笔记:获取最近修改的笔记
- get_note_references:获取双向注释引用
任务操作
- 搜索任务:按描述/正文搜索任务,包括持续时间、日期和优先级
- list_tasks:列出和筛选任务(按优先级、截止日期等)
- 获取最近修改的任务:获取最近修改的任务
- get_tasks_by_note:查找与特定注释关联的任务
安装
该解决方案使用nix,因此您只需使用nix进行开发。
nix develop --no-pure-eval正在运行命令
有两个不同的命令可供帮助,一个用于启动mcp,另一个用于运行测试。
nix develop --no-pure-eval --command mcp-startnix develop --no-pure-eval --command run-tests配置
数据库路径可以通过环境变量进行配置。默认情况下,它使用: ~/.config/ample-electron/amplenote.db 该文件不是有效的数据库文件,请更新 使用您的本地配置。
Claude桌面的自动设置
配置Claude Desktop最简单的方法是使用内置的安装脚本:
# Use default database path
nix develop --no-pure-eval --command setup-claude-desktop
# Or specify a custom database path
nix develop --no-pure-eval --command setup-claude-desktop /path/to/your/amplenote.db这将自动:
- 检测您的操作系统并找到Claude Desktop配置目录
- 创建或更新MCP服务器配置
- 将服务器配置为使用nix运行
- 设置数据库路径
运行安装脚本后,重新启动Claude Desktop以使更改生效。
手动配置
如果您更喜欢手动配置,请将以下内容添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"amplenote_cache": {
"command": "nix",
"args": ["develop", "--no-pure-eval", "--command", "mcp-start"],
"cwd": "/path/to/amplenote_cache_mcp",
"env": {
"AMPLENOTE_DB_PATH": "~/.config/ample-electron/.db"
}
}
}
}可用工具
笔记工具
search_notes
使用全文搜索搜索笔记。
query(str):搜索查询limit(int):最大结果(默认值:10)
示例:搜索包含“项目规划”的注释
get_note_by_uuid
通过UUID获取完整的笔记内容。
uuid(str):远程或本地UUID
示例:检索特定笔记的全部内容
get_note_by_name
按名称查找注释(不区分大小写的部分匹配)。
name(str):要搜索的注释名称
示例:查找标题中包含“会议”的注释
list_notes
列出所有带页码的笔记。
limit(int):最大结果(默认值:20)offset(int):跳过N个注释(默认值:0)
示例:按字母顺序排列前20个音符
获取最近修改的笔记
获取最近修改的笔记。
limit(int):最大结果(默认值:20)
示例:查看最近更新了哪些笔记
get_note_references
获取注释的双向引用。
uuid(str):注意UUID
示例:查找指向或来自特定笔记的所有笔记
任务工具
搜索任务
按描述/正文搜索任务。
query(str):在任务正文中搜索要匹配的查询limit(int):最大结果(默认值:20)include_deleted(bool):包含已删除的任务(默认值:false)
退货:具有持续时间、截止日期、优先级(紧急/重要级别)和其他详细信息的任务
示例:查找与“文档”相关的所有任务
list_tasks
列出具有筛选选项的任务。
limit(int):最大结果(默认值:20)include_deleted(bool):包含已删除的任务(默认值:false)priority(int):按优先级过滤(0-3,越高越重要)has_due_date(bool):过滤有/没有截止日期的任务
示例:获取所有具有截止日期的高优先级任务
获取最近修改的任务
获取最近修改的任务。
limit(int):最大结果(默认值:20)include_deleted(bool):包含已删除的任务(默认值:false)
退货:最近更新的任务,包括时间戳在内的所有详细信息
示例:查看最近更新的任务
get_tasks_by_note
获取与特定笔记关联的任务。
note_uuid(str):注意UUID
示例:查找特定注释中提到的所有任务
数据库模式
服务器从这些Amplenote表中读取:
notes:注释内容和元数据(包括updated_at时间戳)tasks:任务详细信息(包括优先级、持续时间、截止日期和updated_at时间戳)note_references:注意参考文献notes_search_index:FTS4全文搜索索引
测试
该项目包括一个全面的测试套件。要运行测试,请执行以下操作:
nix develop --no-pure-eval --command run-testspoetry run pytest要运行覆盖率测试,请执行以下操作:
poetry run coverage run -m pytest
poetry run coverage report发展
这个项目遵循Python的习惯做法:
- 模块化架构,具有用于数据库、模型、注释和任务的单独文件
- 在整个代码库中键入提示
- 全面的文档字符串
- 具有单一职责的小型、重点突出的职能
- 正确的错误处理
代码风格
该项目使用 ruff 用于修剪和格式化:
poetry run ruff format app/
poetry run ruff check app/建筑
代码库被组织成集中的模块:
app/database.py:数据库连接和配置app/models.py:数据结构的TypedDict模型app/notes.py:注释相关功能app/tasks.py:任务相关功能app/__main__.py:FastMCP服务器和工具注册
这种模块化设计使代码更容易维护、测试和扩展。
