关于 Knowledge MCP Server
Knowledge MCP Server 是基于 dynamic-mcp-server 的知识库管理与查询 MCP 服务,面向需要接入文档知识的 AI 应用。它通过向量数据库处理文档,并支持按用户控制知识源的访问与共享。
主要功能
- 01文档分块与向量嵌入
- 02向量库语义检索
- 03知识源访问与共享控制
- 04动态注册知识工具
- 05OneDrive 文件摄取
适用场景
- 01将 OneDrive 文档导入知识源
- 02按语义查询知识源内容
- 03刷新知识源中的文档
- 04向其他用户共享知识源
MCP 相关
它向 MCP 客户端提供添加知识、搜索、使用及刷新知识源的工具。工具注册与共享由 dynamic-mcp-server 管理。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Knowledge MCP 服务
一个用于通过向量数据库管理和查询知识库的模型上下文协议(MCP)服务,基于 dynamic-mcp-server (DMS) 框架构建。
概述
Knowledge MCP 服务以 dynamic-mcp-server (DMS) 为核心,提供一个稳健、可扩展的平台,用于构建安全、了解用户且可动态扩展的 AI 工具服务。所有用户、工具和数据库管理均由 DMS 负责,并提供项目专属逻辑的扩展点(例如知识源、Microsoft 身份验证)。
架构
- 核心集成: 使用 DMS 处理所有身份验证、用户管理、工具注册以及 MongoDB/Mongoose 连接管理。
- 集中式数据库连接: 所有模型和存储库均使用 DMS 提供的共享 MongoDB 连接。
- 用户与工具管理: 用户和工具模型与 DMS 保持一致,并通过子类扩展项目专属功能(参见
AppUserRepository)。 - 自定义 HTTP 路由: 所有自定义路由(OAuth、健康检查等)均使用 DMS API(例如
addAuthHttpRoute)注册到 DMS 导出的 Express 服务上。 - 可扩展性: 可通过子类扩展用户模型和存储库,也可使用 DMS 扩展点添加新工具或路由。
功能
- 集成向量数据库,用于存储和查询嵌入向量
- 文档处理流水线,用于导入内容
- 文本分块和嵌入向量生成
- 动态工具注册与管理(通过 DMS API)
- 对知识源进行安全的访问控制和共享
- 支持网站抓取和内容提取
- 集成 MongoDB,用于存储元数据和向量
先决条件
- Node.js 18 或更高版本
- MongoDB Atlas M10 或更高规格的实例(用于向量搜索功能)
- OpenAI API 密钥
安装
-
克隆代码库:
git clone https://github.com/your-org/knowledge-mcp-server.git cd knowledge-mcp-server -
安装依赖:
npm install
配置
在项目根目录下创建 .env 文件,并添加以下变量:
# Server Configuration
PORT=4001
HOST=localhost
# MongoDB Configuration
MONGODB_URI=your_mongodb_connection_string
# OpenAI Configuration
OPENAI_API_KEY=your_openai_api_key
# Admin Bootstrapping (required by DMS)
[email protected]
运行服务
在开发模式下启动服务:
npm run dev
或在生产模式下启动:
npm start
注意: 服务通过 DMS 启动,所有自定义路由均注册到 DMS 导出的 Express 服务上。本地没有 Express 服务启动逻辑。
工具注册与共享
- 所有工具注册和共享均通过 DMS API(
addTool、共享端点等)管理。 - 旧版工具注册逻辑已移除。
- 根据需要按用户/会话注册工具,以支持动态扩展。
用户与访问模型
- 用户对知识源的访问权限通过用户记录上的
applicationAuthorization.knowledge.owned和applicationAuthorization.knowledge.shared字段管理。 - 共享通过 DMS 共享模型和 API 处理,支持“读取”和“写入”访问级别。
- 用户存储库扩展为
AppUserRepository,用于实现项目专属逻辑(例如自定义共享/访问方法)。
知识源管理
服务目前支持以下知识源类型:
- Microsoft OneDrive
- 从 OneDrive 导入文件和文件夹
- 支持多种文档格式(PDF、DOCX 等)
- 需要集成 Microsoft Graph API
注意: 网站知识源支持(网页抓取、HTML 提取等)尚未实现,但计划在未来版本中推出。
扩展服务
- 用户模型扩展: 继承
AppUserRepository,添加项目专属的用户逻辑或字段。 - 自定义 HTTP 路由: 使用 DMS API 注册新路由(例如
addAuthHttpRoute)。 - 工具注册: 使用 DMS 的
addTool及相关 API 添加新工具。 - 模型/存储库扩展: 对于自定义逻辑,优先选择继承或封装 DMS 存储库。
可用工具
服务提供以下工具:
1. 添加知识
- 工具名称:
add-knowledge - 用途:将新文档摄取并处理到知识源中
- 功能:接受文档来源(URL、文本或文件上传),抓取并处理内容,将内容切分并嵌入向量数据库,然后与知识源关联
2. 搜索
- 工具名称:
search - 用途:查询特定知识源,获取相关信息
- 功能:针对向量数据库进行语义搜索,返回带有元数据的相关文档片段,并支持筛选和排序
3. 使用知识源
- 工具名称:
use-knowledge-source - 用途:创建一个用于与特定知识源交互的新工具
- 功能:生成新的工具定义,配置参数和约束,并支持动态注册工具
4. 刷新知识源
- 工具名称:
refresh-knowledge-source - 用途:通过重新摄取内容来刷新知识源
- 功能:更新状态、清空向量存储、重新处理来源,并更新状态
访问控制与共享
- 所有权: 用户拥有自己创建的知识源,并拥有完全访问权限。
- 共享: 知识源可以与其他用户共享(“读取”或“写入”权限),并记录在
applicationAuthorization.knowledge.shared中。
依赖项
该项目使用以下关键依赖项:
{
"@llm-tools/embedjs": "latest",
"@llm-tools/embedjs-mongodb": "latest",
"@llm-tools/embedjs-openai": "latest",
"@llm-tools/embedjs-loader-web": "latest",
"mongodb": "latest",
"dynamic-mcp-server": "github:scitara-cto/dynamic-mcp-server"
}
测试
- 运行测试套件:
npm test - 以监视模式运行测试:
npm run test:watch - 类型检查:
npm run typecheck - 模拟: 使用 DMS 文档中推荐的模拟策略和测试模式。测试应使用扩展后的存储库(例如,
AppUserRepository)。
迁移状态
- 除文档外,所有迁移和重构步骤均已完成。
- 所有测试和构建均通过。
- 代码库已完全符合新的 DMS 架构和存储库模型。
许可证
[您的许可证]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。