文档检索增强生成服务

一个基于TypeScript的MCP服务器,实现本地文档的检索增强生成(RAG)系统,允许用户利用LLM查询本地存储的文档和文本文件。

  • by kazuph
  • JavaScript
  • 本地部署
  • 17 星标
  • 更新于
在 GitHub 查看 kazuph/mcp-docs-rag

使用说明

mcp文档抓取mcp服务器

RAG(检索增强生成)用于本地目录中的文档

这是一个基于TypeScript的MCP服务器,它为存储在本地目录中的文档实现了RAG系统。它允许用户使用LLM从本地存储的存储库和文本文件中查询文档。

特性

资源

  • 通过以下方式列出和访问文件 docs:// URI
  • 文档可以是Git存储库或文本文件
  • 用于内容访问的纯文本mime类型

工具

  • list_documents -列出DOCS_PATH目录中的所有可用文档
    • 返回所有文档的格式化列表
    • 显示可用文档的总数
  • rag_query -使用RAG查询文档
    • 将document_id和query作为参数
    • 从文档中返回带有上下文的AI生成的响应
  • add_git_repository -使用可选的稀疏签出将Git存储库克隆到docs目录
    • 将repository_url作为参数
    • 可选的document_name参数,用于自定义文档的名称(使用不带“-docs”后缀的简单描述性名称)
    • 用于稀疏签出特定目录的可选子目录参数
    • 如果存储库已存在,则自动提取最新更改
  • add_text_file -将文本文件下载到docs目录
    • 将file_url作为参数
    • 使用wget下载文件

鼓励

  • guide_documents_usage -关于如何使用文档和RAG功能的指南
    • 包括可用文件列表
    • 提供RAG功能的使用提示

发展

安装依赖项:

npm install

构建服务器:

npm run build

对于自动重建的开发:

npm run watch

设置

此服务器需要一个本地目录来存储文档。默认情况下,它使用 ~/docs 但您可以使用配置其他位置 DOCS_PATH 环境变量。

文档结构

文档目录可以包含:

  • Git存储库(克隆目录)
  • 纯文本文件(扩展名为.txt)

每个文档都使用谷歌Gemini嵌入的llama-index.ts单独索引。

API密钥

该服务器使用Google的Gemini API进行文档索引和查询。您需要将Gemini API密钥设置为环境变量:

export GEMINI_API_KEY=your-api-key-here

您可以从获取Gemini API密钥 谷歌人工智能工作室 网站。将此密钥添加到您的shell配置文件中,或将其包含在Claude Desktop的环境配置中。

安装

要与Claude Desktop一起使用,请添加服务器配置:

在MacOS上: ~/Library/Application Support/Claude/claude_desktop_config.json 在Windows上: %APPDATA%/Claude/claude_desktop_config.json 在Linux上: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "docs-rag": {
      "command": "npx",
      "args": ["-y", "@kazuph/mcp-docs-rag"],
      "env": {
        "DOCS_PATH": "/Users/username/docs",
        "GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}

确保更换 /Users/username/docs 文档目录的实际路径。

调试

由于MCP服务器通过stdio进行通信,调试可能具有挑战性。我们建议使用 MCP检查员,可作为包脚本使用:

npm run inspector

检查器将提供一个URL,用于访问浏览器中的调试工具。

用法

配置后,您可以将服务器与Claude一起使用:

  1. 添加文档:

    Add a new document from GitHub: https://github.com/username/repository
    

    或使用自定义文档名称:

    Add GitHub repository https://github.com/username/repository-name and name it 'framework'
    

    或者对特定目录进行稀疏签出:

    Add only the 'src/components' directory from https://github.com/username/repository
    

    或者结合自定义名称和稀疏签出:

    Add the 'examples/demo' directory from https://github.com/username/large-repo and name it 'demo-app'
    

    或添加文本文件:

    Add this text file: https://example.com/document.txt
    
  2. 查询文档:

    What does the documentation say about X in the Y repository?
    
  3. 列出可用文件:

    What documents do you have access to?
    

服务器将自动处理文档的索引,以实现高效检索。