文档管理服务

DEVONthink MCP Server 是一个通过模型上下文协议(MCP)提供对DEVONthink功能的访问的服务,支持在macOS上列出、搜索、创建、修改和管理DEVONthink Pro中的记录和数据库。

  • by TomBener
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 TomBener/devonthink-zotero-mcp

使用说明

修改基于 dvcrn/mcp服务器devonthink

DEVONthink MCP服务器

此MCP服务器通过模型上下文协议(MCP)提供对DEVONthink功能的访问。它允许在macOS上的DEVONthink Pro中列出、搜索、创建、修改和管理记录和数据库。此外,它还包括基于导出的书目数据解析DEVONthink附件的书目元数据的工具。

特性

  • 将一套全面的DEVONthink操作作为MCP工具公开
  • 按各种属性列出、搜索和查找记录
  • 创建、删除、移动和重命名记录和组
  • 检索和修改记录内容、属性和标记
  • 从多种格式的URL创建记录
  • 列出打开的数据库和组内容
  • 通过书目导出解析DEVONthink附件的书目元数据
  • 直接从引用关键字或附件元数据中查找DEVONthink记录
  • 所有工具都是类型安全的,并使用Zod模式进行验证

工具

核心工具

  1. is_running

    • 检查DEVONthink当前是否正在运行
    • 无需输入
    • 退货: { "success": true | false }
  2. create_record

    • 创建具有指定属性的新记录(笔记、书签、组)
    • 输入:记录类型、名称、父组和可选元数据
  3. delete_record

    • 按ID、名称或路径删除记录
    • 输入:记录标识符
  4. move_record

    • 在组之间移动记录
    • 输入:记录ID和目标组
  5. get_record_properties

    • 检索记录的详细元数据和属性
    • 输入:记录标识符
  6. search

    • 使用各种比较选项执行基于文本的搜索
    • 输入:查询字符串和搜索选项
  7. lookup_record

    • 按文件名、路径、URL、标签、注释或内容哈希查找记录(仅精确匹配)
    • 输入:查找类型和值
  8. create_from_url

    • 从多种格式的web URL创建记录
    • 输入:URL和格式选项
  9. get_open_databases

    • 列出当前打开的所有数据库
    • 无需输入
  10. list_group_content

    • 列出特定组的内容
    • 输入:组标识符
  11. get_record_content

    • 检索特定记录的内容
    • 输入:记录标识符
  12. rename_record

    • 重命名特定记录
    • 输入:记录ID和新名称
  13. add_tags

    • 为特定记录添加标签
    • 输入:记录ID和标签
  14. remove_tags

    • 从特定记录中删除标记
    • 输入:记录ID和标签
  15. classify

    • 使用DEVONthink的AI获取记录的分类建议
    • 输入:记录UUID、可选数据库名称、比较类型和标签选项
    • 返回:带有分数的分类建议(组或标签)数组
  16. compare

    • 比较记录以查找相似之处(混合方法)
    • 输入:主记录UUID、可选的第二记录UUID、数据库名称和比较类型
    • 返回:相似记录(单模式)或详细比较分析(双记录模式)
  17. get_bib_metadata

    • 解析DEVONthink记录或Finder路径的参考书目元数据
    • 输入:查找路径、记录UUID、DEVONthinkID+数据库或DEVONthink位置路径(可选 bibliographyJsonPath / bibliographyBibPath 覆盖导出位置)
    • 返回:具有顶级的匹配书目项 citationKey, bibliographyId、附件列表和LLM提示的简短摘要字符串
  18. get_records_by_citation_key

    • 将引用关键字解析为其附件元数据和匹配的DEVONthink记录
    • 输入: citationKey 以及JSON/BibTeX导出路径的可选覆盖
    • 返回:书目元数据(JSON或BibTeX)加上Finder路径与附件条目匹配的任何DEVONthink记录

示例:搜索工具

{
  "query": "project plan",
  "comparison": "contains",
  "database": "Inbox"
}

退货:

{
  "results": [
    { "id": "123", "name": "Project Plan", "path": "/Inbox/Project Plan.md" }
  ]
}

安装

克劳德代码

claude mcp add --scope user devonthink --env BIBLIOGRAPHY_JSON=/path/to/bibliography.json -- npx -y github:TomBener/devonthink-mcp

这 --scope user flag为您的用户帐户安装MCP服务器(在所有项目中都可用)。您还可以使用 --scope local 仅适用于当前工作区。

法典

codex mcp add devonthink --env BIBLIOGRAPHY_JSON=/path/to/bibliography.json -- npx -y github:TomBener/devonthink-mcp

配置

克劳德桌面

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "devonthink": {
      "command": "npx",
      "args": ["-y", "github:TomBener/devonthink-mcp"],
      "env": {
        "BIBLIOGRAPHY_JSON": "/path/to/bibliography.json"
        // "BIBLIOGRAPHY_BIB": "/path/to/bibliography.bib"
      }
    }
  }
}

VS Code

添加到您的VS代码MCP设置(~/Library/Application Support/Code/User/mcp.json):

{
  "servers": {
    "devonthink": {
      "command": "npx",
      "args": ["-y", "github:TomBener/devonthink-mcp"],
      "env": {
        "BIBLIOGRAPHY_JSON": "/path/to/bibliography.json"
        // "BIBLIOGRAPHY_BIB": "/path/to/bibliography.bib"
      }
    }
  }
}

实现细节

  • 使用JXA(JavaScript for Automation)通过AppleScript API控制DEVONthink
  • 所有工具输入都使用Zod模式进行验证,以确保安全性和清晰度
  • 返回所有工具输出的结构化JSON
  • 对所有操作实施稳健的错误处理
  • 包括使用Vitest的全面测试

看 CLAUDE.md 获取完整的文档、工具开发指南和API参考资料。

参考文献元数据查找

存储在DEVONthink中的书目附件可以与导出的书目元数据相匹配。MCP服务器检查JSON和BibTeX导出,当两者都存在时,它更喜欢JSON。

  1. 将您的参考书目库(或子集)导出到 .json 或 .bib 在Zotero。

  2. 在启动服务器之前,通过环境变量将服务器指向导出(使用Claude的MCP配置或shell):

    export BIBLIOGRAPHY_JSON="/path/to/bibliography.json"
    export BIBLIOGRAPHY_BIB="/path/to/bibliography.bib"
    
    • 只提供一个文件是可以的——服务器会检测您是否提供了 .json 或 .bib 路径并自动使用它。
    • 如果没有配置元数据文件,该工具将返回一个信息错误,以便您更正设置。
  3. 打电话给 get_bib_metadata 该工具具有Finder路径或任何支持的DEVONthink标识符。该工具返回匹配的参考书目条目(包括引用关键字、字段和匹配的属性),并公开 citationKey / bibliographyId 在顶层,并简要介绍 metadataSummary LLM提示的字符串。如果找不到匹配项,响应将列出已检查的文件。

调用示例:

{
  "uuid": "7F8C5A5B-1234-5678-ABCD-9876543210EF"
}