项目简介

“文档语义搜索 MCP 服务器”是基于 Model Context Protocol (MCP) 构建的后端服务,旨在通过先进的语义搜索技术,让大型语言模型 (LLM) 能够高效、准确地查询您的文档内容。它能够连接到您的文档仓库(例如 GitHub 上的文档),并提供强大的自然语言搜索功能,返回带有原文引用的答案,极大提升 LLM 理解和利用外部知识的能力。

主要功能点

  • 文档语义搜索: 利用 Google Gemini 文件搜索服务,对您的文档仓库进行深度语义理解和查询。
  • 资源自动发现: 将每个顶层文档目录(如 'context/', 'Factory-AI/factory/')自动注册为 MCP 资源,作为可搜索的“文档参考”,方便 MCP 客户端(如 Claude Desktop, Claude Code)自动发现和使用。
  • 自然语言问答: 支持使用自然语言提出问题,服务器将返回简洁、相关的答案,并提供详细的引用来源。
  • 高效响应: 默认提供高度提炼的答案和引用,以优化 LLM 的令牌使用量。同时,也支持获取原始文档片段(“chunks”)进行验证。
  • GitHub Actions 自动化: 提供示例 GitHub Actions 工作流,实现文档索引的自动同步和更新(例如每日更新),确保搜索内容始终最新。
  • 成本效益: 旨在以极低的成本运行文档索引和查询服务,通常每月仅需数美元。

安装步骤

推荐方式(无需克隆,始终使用最新版本):

直接在命令行中运行以下命令即可启动服务器:

npx -y github:ain3sh/search-context

从源代码安装:

  1. 克隆仓库:
    git clone https://github.com/ain3sh/search-context.git
  2. 进入项目目录:
    cd search-context
  3. 安装依赖:
    npm install
  4. 构建项目:
    npm run build
  5. 启动服务器:
    npm start

服务器配置

您需要一个 Gemini API Key 来启用搜索功能。请从 https://aistudio.google.com/apikey 获取您的 API Key。

获取 Key 后,您需要将以下 JSON 配置添加到您的 MCP 客户端配置文件中(例如 Claude Desktop 的 '~/Library/Application Support/Claude/claude_desktop_config.json' 或项目根目录的 '.mcp.json'):

{
  "mcpServers": {
    "search-context": {
      "command": "npx",
      "args": ["-y", "github:ain3sh/search-context"],
      "env": {
        "GEMINI_API_KEY": "在此处填写您的Gemini API Key" // 请务必替换为您的实际 Gemini API Key
      }
    }
  }
}

如果您希望通过环境变量传递 API Key,可以这样配置:

{
  "mcpServers": {
    "search-context": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "github:ain3sh/search-context"],
      "env": {
        "GEMINI_API_KEY": "${GEMINI_API_KEY}" // 使用环境变量
      }
    }
  }
}

然后,您需要在运行 MCP 客户端之前,通过命令行设置环境变量:

export GEMINI_API_KEY=您的Gemini API Key

基本使用方法

配置并启动 MCP 服务器后,您的 MCP 客户端(如 Claude Desktop 或 Claude Code)将能够与其通信。

1. 发现可用的文档参考: MCP 客户端会通过 'resources/list' 请求自动发现此服务器提供的所有文档参考。每个在您的文档仓库中配置的顶层目录(例如 'context', 'Factory-AI/factory')都将显示为一个可搜索的文档参考,例如 'reference://context'。

2. 使用 'ask_docs_agent' 工具进行搜索: 在您的 LLM 交互中,可以通过调用 'ask_docs_agent' 工具来查询文档。以下是其关键参数:

  • 'store' (必填,字符串): 您要搜索的文档参考名称,例如 '"context"' 或 '"Factory-AI/factory"'。
  • 'query' (必填,字符串): 您的自然语言查询问题,例如 '"How does File Search chunking work?"'。
  • 'include_chunks' (可选,布尔值): 设置为 'true' 可在响应中包含原始文档片段,有助于验证答案(这会增加令牌消耗)。默认值为 'false'。
  • 'response_format' (可选,字符串): '"markdown"' (默认) 或 '"json"',用于指定返回结果的格式。

示例 (LLM客户端调用 'ask_docs_agent' 工具):

{
  "tool_code": "ask_docs_agent({\n  store: \"context\",\n  query: \"如何配置身份验证流程?\"\n})"
}

客户端将会收到服务器返回的语义搜索结果,其中包含一个合成的答案和详细的来源引用。如果 'include_chunks' 设置为 'true',还会包含相关文档片段。

信息

分类

数据库与文件