项目简介

Doughnut 是一个功能丰富的个人知识管理(PKM)工具,其设计灵感来源于Zettelkasten笔记法,并集成了间隔重复、智能提醒等学习增强功能,以及知识共享能力。此仓库中包含一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为LLM客户端提供访问个人知识库、执行相关操作的标准化接口。通过MCP服务器,LLM客户端能够以结构化、可编程的方式获取上下文信息并调用功能,从而实现更智能、更集成的AI辅助知识管理。

主要功能点

  • 知识资源访问: 允许LLM客户端访问和查询个人知识库中的笔记资源,获取笔记内容和拓扑结构。
  • 工具调用: 提供多种实用工具,例如“查找最相关笔记”、“添加新笔记”和“获取笔记图谱”,LLM可调用这些工具与知识库进行交互,实现自动化或半自动化的知识管理任务。
  • 标准化交互: 通过MCP协议(基于JSON-RPC)与LLM客户端通信,确保上下文服务的安全性和可扩展性,为LLM应用提供稳定可靠的后端支持。

安装步骤

  1. 克隆仓库: 首先,将'doughnut' GitHub仓库克隆到您的本地文件系统。
    git clone https://github.com/nerds-odd-e/doughnut.git
    cd doughnut
  2. 安装Nix包管理器: 如果您的系统尚未安装Nix包管理器,请按照Nix官方文档进行安装。安装后,请根据您的操作系统配置Git,以确保正确的行结束符处理:
    git config --global core.autocrlf input
    git add --renormalize .
  3. 设置开发环境: 在'doughnut'仓库的根目录,运行以下脚本来安装所有必要的开发依赖:
    ./setup-doughnut-dev.sh
    对于macOS 15 Sequoia用户,如果遇到Nix安装或启动问题,请运行README中提供的特定脚本。
  4. 激活'direnv': 安装并配置'direnv'(例如,'brew install direnv' on macOS,'sudo apt-get install -y direnv' on Ubuntu/Debian)。然后在您的shell配置文件(如'~/.bashrc'或'~/.zshrc')中添加钩子:
    echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
    echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc
    direnv allow
    这将确保在进入'doughnut'目录时,Nix开发环境会自动加载。
  5. 构建MCP服务器捆绑包: 在已加载Nix开发环境的'doughnut'仓库根目录中,运行以下命令来构建MCP服务器的JavaScript捆绑包:
    pnpm mcp-server:bundle
    此命令会在 'mcp-server/dist/' 目录下生成 'mcp-server.bundle.mjs' 文件,这是MCP服务器的实际可执行代码。
  6. 启动Doughnut后端服务: MCP服务器需要连接到Doughnut的后端API。请在另一个终端窗口中启动Doughnut的后端服务(默认运行在9081端口):
    pnpm backend:sut

服务器配置

MCP客户端连接到Doughnut MCP服务器时,需要提供服务器的启动命令和相关参数。以下是MCP客户端配置的JSON格式示例,用于说明如何与Doughnut MCP服务器建立连接:

{
  "serverName": "Doughnut MCP Server",
  "command": "node",
  "args": [
    "/absolute/path/to/your/doughnut/mcp-server/dist/mcp-server.bundle.mjs"
  ],
  "env": {
    "DOUGHNUT_API_BASE_URL": "http://localhost:9081",
    "DOUGHNUT_API_AUTH_TOKEN": "YOUR_MCP_TOKEN"
  },
  "transport": "stdio"
}
  • 'serverName': 您为MCP服务器定义的名称。
  • 'command': 启动MCP服务器的命令,此处为'node',因为MCP服务器捆绑包是JavaScript文件。
  • 'args': 一个数组,包含传递给'command'的参数。第一个参数应为MCP服务器捆绑包的绝对路径。请务必将 '/absolute/path/to/your/doughnut/' 替换为您的本地 'doughnut' 仓库根目录的实际绝对路径。
  • 'env': 一个对象,定义MCP服务器运行时所需的环境变量。
    • 'DOUGHNUT_API_BASE_URL': Doughnut后端服务的URL,通常为 'http://localhost:9081'。
    • 'DOUGHNUT_API_AUTH_TOKEN': 用于认证的MCP令牌。此令牌可以在Doughnut应用程序的用户设置页面中生成和管理。
  • 'transport': MCP客户端与服务器通信所使用的传输协议,此处为 'stdio' (标准输入/输出)。

基本使用方法

一旦MCP服务器启动并通过上述配置连接到您的LLM客户端,LLM即可通过调用MCP工具与您的Doughnut知识库进行智能互动:

  • 搜索相关笔记: LLM可以调用 'find_most_relevant_note' 工具并提供查询词,以获取知识库中最相关的笔记内容作为上下文,辅助回答问题或生成内容。
  • 添加新笔记: LLM可以调用 'add_note' 工具来创建新的笔记。只需指定新笔记的标题和其父笔记的标题,即可扩展您的知识库。
  • 获取笔记图谱: LLM可以调用 'get_note_graph' 工具,提供笔记ID和令牌限制,以获取特定笔记的关联图谱信息,帮助LLM更好地理解知识之间的结构和联系。

通过这些工具,LLM能够无缝地融入您的个人知识管理流程,提供更智能的助手体验。

信息

分类

AI与计算