使用说明
知识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密钥
安装
-
克隆存储库:
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)
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用于项目特定的逻辑(例如自定义共享/访问方法)。
知识源管理
服务器当前支持以下知识源类型:
- 微软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架构和存储库模型完全一致。
许可证
[您的许可证在这里]
