AI Craftsman Knowledge Rag MCP Server

使用说明(Markdown 格式)

  • 项目简介

    • 该项目实现了一个 MCP 服务器,用于向 MCP 客户端(如 Claude Code 等语言模型客户端)提供本地知识库的访问能力。核心通过向量数据库存储文档片段及其嵌入向量,并暴露两组工具:search_knowledge(按查询检索相关片段)和 list_knowledge_sources(列出已索引的文档及元信息)。嵌入向量通过 Ollama 提供的嵌入模型计算,向量存储使用 SQLite + WAL 模式。
  • 主要功能点

    • MCP 服务器实现与客户端的标准化对话:注册并响应工具查询,支持 ListTools 与 CallTool 请求
    • knowledge rag 功能:加载、初始化、索引本地知识库(项目内或全局,优先项目级)
    • 向量检索:基于嵌入向量进行最近邻检索,返回相关片段及来源信息
    • 工具集合:search_knowledge(知识检索),list_knowledge_sources(文档源信息)
    • 本地嵌入模型支持:通过 Ollama 提供的 API 进行文本向量化
    • 数据存储与管理:使用 Better SQLite3,持久化 chunks、sources、以及嵌入向量
    • 多场景工作模式:项目级知识库优先,若无则回退到全局知识库
    • 运行方式以标准 input/output(stdio)传输,兼容 Claude 等通过 MCP 的接入方式
  • 安装步骤

    • 进入 ai-pack/mcp/knowledge-rag 目录
    • 安装依赖并构建
      • 安装依赖:npm install
      • 构建产出:npm run build(生成 dist/ 目录,通常为 dist/src/index.js)
    • 启动 MCP 服务器
      • 在合适的工作目录执行:node dist/src/index.js
      • 该服务器通过标准输入输出与 MCP 客户端通信,确保客户端从该服务器获取工具清单与能力
    • 运行前提与依赖
      • Ollama 服务需正确运行,用于嵌入向量计算(请按照项目文档准备 Ollama 服务以及 nomic-embed-text 模型)
      • 本地知识库准备:在项目目录或全局知识目录中放置要索引的文档(.md、.txt、.pdf 等)
    • 测试与验证
      • 构建完成后,确保服务器正常启动且能响应 ListTools 与 CallTool 请求
      • 使用 MCP 客户端(参考对应文档)与 Knowledge Rag 工具进行查询与源信息获取
  • 服务器配置(MCP 客户端需要的最小启动信息) 配置示例(JSON,描述服务器启动命令和参数,便于 MCP 客户端接入): { "server": { "name": "knowledge-rag", "version": "1.0.0", "command": "node", "args": ["dist/src/index.js"] } // 说明:上述配置表示 MCP 客户端应以 Node.js 启动,并传入构建输出的入口脚本路径来启动 MCP 服务器。 } 注释说明:

    • name: MCP 服务器的标识名称,与代码中 server 的 name 匹配
    • version: 服务器实现的版本号
    • command: 启动服务器所用的命令,这里为 node
    • args: 启动命令的参数,指向构建产物的入口脚本路径(dist/src/index.js) 要点
    • 实际工作目录需要与启动路径保持一致,dist 路径根据运行构建产物的位置而定
    • MCP 客户端仅需要读取上述信息以知晓如何启动并连接到服务器
    • 启动前务必确保 Ollama 服务可用(若使用 Ollama Embedding),以及知识库已按需求进行索引
  • 基本使用方法

    • 启动后,MCP 客户端可通过标准 MCP 请求(ListTools、CallTool 等)与服务器交互
    • 第一步通常是获取工具列表(ListTools),确认具备以下工具:
      • search_knowledge:按查询检索知识片段
      • list_knowledge_sources:查看已索引的文档源信息
    • 使用 search_knowledge 时,传入查询文本和可选的 top_k、sources 过滤参数,服务器返回相应的片段内容、来源、页码和相关性
    • 使用 list_knowledge_sources 时,返回已索引文档的名称、页数、分块数量及主题标签
    • 对于知识检索的隐私性与性能,可以在本地环境中通过项目级知识库优先读取,必要时回退到全局知识库

服务器信息