使用说明
项目简介
KnowledgeBase Server 是一个实现了 Model Context Protocol (MCP) 的服务器,它允许大型语言模型 (LLM) 在对话过程中存储和检索记忆。记忆存储在 SQLite 数据库中,并利用其全文搜索功能实现高效的记忆检索。该服务器旨在为 LLM 应用提供结构化的长期记忆能力,提升对话的连贯性和智能化水平。
主要功能点
- 记忆存储与管理: 支持创建、存储、更新和删除对话记忆,每个记忆可以关联主题和上下文信息。
- 记忆检索: 提供基于关键词的记忆检索功能,LLM 可以搜索相关记忆以回顾对话历史或获取背景知识。
- 记忆关联: 允许将不同的记忆节点连接起来,形成记忆网络,帮助 LLM 理解记忆之间的关系。
- Prompt 模板: 内置 "General Memory Usage" Prompt 模板,指导 LLM 如何有效使用记忆工具。
- 工具集成: 提供一系列工具 (Tools) 供 LLM 调用,例如创建记忆、搜索记忆、获取记忆详情、标记记忆为过期等。
- Docker 部署: 支持 Docker 容器化部署,方便快速搭建和管理服务器。
- 本地运行: 支持使用 .NET CLI 本地运行,方便开发和调试。
安装步骤
1. 环境准备
- .NET 9 SDK (本地运行): 如果选择本地运行,请确保已安装 .Net 9 SDK。
- Docker (Docker 部署): 如果选择 Docker 部署,请确保已安装 Docker 环境。
2. 克隆仓库
git clone https://github.com/mbcrawfo/KnowledgeBaseServer cd KnowledgeBaseServer
3. 构建项目 (本地运行)
如果您选择本地运行,请在仓库根目录下执行以下命令构建项目:
dotnet build
服务器配置
KnowledgeBase Server 可以通过以下两种方式配置并启动,您需要根据您的 MCP 客户端 (例如 Claude Desktop) 的配置要求,选择合适的启动方式,并将生成的配置信息填入客户端配置中。
方式一:Docker 部署配置
如果您使用 Docker 部署,请先创建一个 Docker volume 用于持久化存储数据库:
docker volume create knowledgebase
然后,在您的 MCP 客户端配置文件 'claude_desktop_config.json' 中添加以下服务器配置。请注意,您只需要复制 'mcpServers' 字段下的 'knowledgebase' 部分到您的客户端配置文件中。
{ "mcpServers": { "knowledgebase": { "command": "docker", // 启动命令为 docker "args": [ // 启动参数 "run", // docker run 命令 "--interactive", // 交互模式 "--rm", // 容器退出后自动删除 "--volume", "knowledgebase:/db", // 挂载名为 knowledgebase 的 volume 到容器内的 /db 目录,用于持久化数据库 "mbcrawfo/knowledge-base-server" // Docker 镜像名称 ] } } }
如果您需要自定义数据库文件名或路径,可以使用环境变量 'DATABASE_NAME' 或 'DATABASE_PATH'。例如,要使用自定义数据库文件 'my_db.sqlite',您可以修改 'args' 数组,添加 '--env' 参数:
{ "mcpServers": { "knowledgebase": { "command": "docker", "args": [ "run", "--interactive", "--rm", "--volume", "knowledgebase:/db", "--env", "DATABASE_PATH=/db/my_db.sqlite", // 设置 DATABASE_PATH 环境变量 "mbcrawfo/knowledge-base-server" ] } } }
方式二:本地 .NET CLI 运行配置
如果您选择本地 .NET CLI 运行,请在您的 MCP 客户端配置文件 'claude_desktop_config.json' 中添加以下服务器配置。请注意,您只需要复制 'mcpServers' 字段下的 'knowledgebase' 部分到您的客户端配置文件中。
{ "mcpServers": { "knowledgebase": { "command": "dotnet", // 启动命令为 dotnet "args": [ // 启动参数 "run", // dotnet run 命令 "--project", "/full/path/to/repo/src/KnowledgeBaseServer/KnowledgeBaseServer.csproj", // 指向 KnowledgeBaseServer.csproj 项目文件的完整路径,请替换为实际路径 "--no-restore", // 不执行 restore 操作,假设依赖已还原 "--no-build" // 不执行 build 操作,假设项目已构建 ] } } }
请务必将 '/full/path/to/repo/src/KnowledgeBaseServer/KnowledgeBaseServer.csproj' 替换为您克隆的仓库中 'KnowledgeBaseServer.csproj' 文件的实际完整路径。
本地运行时,默认数据库文件将存储在您操作系统的用户应用程序数据目录下。
基本使用方法
- 启动服务器: 根据您选择的部署方式(Docker 或本地 .NET CLI),启动 KnowledgeBase Server。
- 配置 MCP 客户端: 将上述生成的服务器配置信息添加到您的 MCP 客户端 (例如 Claude Desktop) 的配置文件中,确保客户端能够连接到 KnowledgeBase Server。
- 使用 LLM 进行对话: 启动 MCP 客户端,开始与 LLM 进行对话。LLM 将能够利用 KnowledgeBase Server 提供的记忆工具进行记忆的存储和检索,从而实现更智能、更连贯的对话体验。
- Prompt 模板: 您可以使用服务器内置的 "General Memory Usage" Prompt 模板,或者根据您的需求自定义 Prompt 模板,以指导 LLM 如何更好地使用记忆功能。
开发和测试:
如果您需要进行开发或测试,可以使用 '--init-db' 参数初始化或升级数据库。在 'KnowledgeBaseServer' 项目目录下,运行以下命令:
dotnet run -- --init-db /path/to/db.sqlite
这将在指定的路径创建或升级数据库文件。
信息
分类
数据库与文件