知识向量数据库服务器

基于动态MCP服务器的知识向量数据库管理平台,提供文档处理、嵌入生成和语义搜索功能,适用于知识管理和AI工具集成。

  • by scitara-cto
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 scitara-cto/knowledge-mcp-server

使用说明

知识MCP服务器

一个模型上下文协议(MCP)服务器,用于通过向量数据库管理和查询知识库,构建在 动态mcp服务器 框架。

概述

知识MCP服务器以动态MCP服务器(DMS)为核心,为安全、用户感知和动态的AI工具服务器提供了一个强大、可扩展的平台。所有用户、工具和数据库管理都由DMS处理,并具有项目特定逻辑的扩展点(例如知识源、Microsoft身份验证)。

建筑

  • 核心集成: 使用DMS进行所有身份验证、用户管理、工具注册和MongoDB/Mongoose连接管理。
  • 集中式数据库连接: 所有模型和存储库都使用DMS提供的共享MongoDB连接。
  • 用户和工具管理: 用户和工具模型与DMS保持一致,并通过子类化进行项目特定的扩展(参见 AppUserRepository).
  • 自定义HTTP路由: 所有自定义路由(OAuth、健康等)都使用DMS API在DMS导出的Express服务器上注册(例如。, addAuthHttpRoute).
  • 可扩展性: 扩展用户模型、存储库,并通过子类化或使用DMS扩展点添加新的工具或路线。

特性

  • 用于存储和查询嵌入的矢量数据库集成
  • 用于内容摄取的文档处理管道
  • 文本分块和嵌入生成
  • 动态工具注册和管理(通过DMS API)
  • 知识源的安全访问控制和共享
  • 支持网站爬行和内容提取
  • MongoDB元数据和矢量存储集成

先决条件

  • Node.js 18或更高版本
  • MongoDB Atlas M10或更高版本(用于矢量搜索功能)
  • OpenAI API密钥

安装

  1. 克隆存储库:

    git clone https://github.com/your-org/knowledge-mcp-server.git
    cd knowledge-mcp-server
    
  2. 安装依赖项:

    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)
MCP_ADMIN_EMAIL=your_admin_email@example.com

运行服务器

在开发模式下启动服务器:

npm run dev

或者在生产模式下:

npm start

注: 服务器通过DMS启动,所有自定义路线都在DMS导出的Express服务器上注册。没有本地Express服务器启动逻辑。

工具注册和共享

  • 所有工具注册和共享都通过DMS API进行管理(addTool、共享端点等)。
  • 旧工具注册逻辑已被删除。
  • 工具根据需要按用户/会话注册,支持动态扩展性。

用户和访问模型

  • 用户对知识源的访问是通过以下方式管理的 applicationAuthorization.knowledge.owned 和 applicationAuthorization.knowledge.shared 用户记录上的字段。
  • 通过DMS共享模型和API处理共享,支持“读”和“写”访问级别。
  • 用户存储库扩展为 AppUserRepository 用于项目特定的逻辑(例如自定义共享/访问方法)。

知识源管理

服务器当前支持以下知识源类型:

  1. 微软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架构和存储库模型完全一致。

许可证

[您的许可证在这里]