使用说明

项目简介

Gemini Docs Server 是一个基于 Model Context Protocol (MCP) 构建的应用后端,它利用 Google 的 Gemini API 强大的上下文处理能力,将技术文档作为知识库,为开发者提供代码相关问题的解答和指导。该服务器旨在帮助开发者更高效地理解和运用各种技术,如同拥有一个基于文档的智能助手。

主要功能点

  • 文档知识库: 允许用户上传和管理本地技术文档,作为 LLM 的知识来源,避免依赖网络搜索,提高信息准确性。
  • Gemini API 驱动: 使用 Gemini API (特别是 Gemini 1.5 Pro) 处理用户查询,利用其超大上下文窗口处理大量文档内容。
  • 多种实用工具: 提供多种预设工具,帮助用户进行不同类型的代码和技术问题查询:
    • 'can_x_be_done': 查询特定技术是否支持某项操作或功能。
    • 'how_to_do_x': 查询如何在特定技术中实现某项任务,并获取示例和替代方案。
    • 'hints_for_problem': 针对特定问题,从文档中寻找可能的解决方案和提示。
    • 'is_this_good_practice': 评估代码片段是否符合良好实践,并提供改进建议。
  • 高效的文件处理: 支持批量上传和处理 Markdown 文档,并使用本地数据库缓存已上传文件,提升效率。
  • 可配置的服务器: 通过简单的 JSON 配置,即可集成到支持 MCP 协议的客户端,如 Roo/Cline。

安装步骤

  1. 安装 Smithery CLI (可选): 如果你使用 Claude Desktop 等客户端,可以通过 Smithery 简化安装和管理:

    npx -y @smithery/cli install @M-Gonzalo/cosa-sai --client claude

    或者,你也可以手动克隆仓库并进行配置。

  2. 配置 Gemini API 密钥: 你需要拥有 Google Gemini API 的密钥。将你的密钥设置为环境变量 'GEMINI_API_KEY'。

  3. 配置 MCP 客户端: 在你的 MCP 客户端(如 Roo/Cline)中,配置 Gemini Docs Server。

服务器配置

以下是 Gemini Docs Server 的 MCP 客户端配置示例 (JSON 格式):

{
  "command": "bun",
  "args": [
    "--watch",
    "path/to/repo/cosa-sai-mcp/src/index.ts" // 将 "path/to/repo/cosa-sai-mcp" 替换为你的本地仓库路径
  ],
  "env": {
    "GEMINI_API_KEY": "<your_gemini_api_key>" // 替换为你的 Gemini API 密钥
  },
  "disabled": false,
  "alwaysAllow": [
    "can_x_be_done",
    "hints_for_problem",
    "is_this_good_practice",
    "how_to_do_x"
  ],
  "timeout": 60
}

配置参数说明:

  • 'command': 启动服务器的命令,这里使用 'bun' 运行时。
  • 'args': 传递给 'bun' 命令的参数:
    • '--watch': (可选) 启用文件监视模式,方便开发时代码更改自动重启服务器。
    • 'path/to/repo/cosa-sai-mcp/src/index.ts': 请务必替换为你的本地仓库 'src/index.ts' 文件的绝对路径
  • 'env': 环境变量配置:
    • 'GEMINI_API_KEY': 必须配置,将 '<your_gemini_api_key>' 替换为你的 Google Gemini API 密钥。
  • 'disabled': 设置为 'false' 以启用服务器。
  • 'alwaysAllow': 列出的工具将自动授权给客户端调用,无需每次手动确认。
  • 'timeout': 设置工具调用的超时时间,单位为秒。

基本使用方法

  1. 准备技术文档: 你需要手动准备要查询的技术文档,例如你想要查询 React 文档,你需要先下载 React 官方文档并转换为 Markdown 格式,并将其存放于本地目录。

  2. 客户端发起工具调用: 在 MCP 客户端中,你可以调用 Gemini Docs Server 提供的工具,例如:

    • 查询 "在 React 中是否可以做服务端渲染?": 调用 'can_x_be_done' 工具,并提供以下参数:

      • 'docs': 你的 React 文档目录路径。
      • 'technology': "React"
      • 'x': "do server-side rendering"
    • 查询 "在 JavaScript 中如何使用 Promise?": 调用 'how_to_do_x' 工具,并提供 JavaScript 文档目录和相关参数。

    • 获取代码问题提示: 调用 'hints_for_problem' 工具,并提供问题描述、上下文信息等。

    • 代码质量检查: 调用 'is_this_good_practice' 工具,并提供代码片段和相关上下文。

    服务器将根据你提供的文档知识库和 Gemini API 的能力,返回相应的解答。

注意: 首次使用工具时,服务器需要上传文档到 Gemini API,可能需要一些时间,请耐心等待。后续查询如果文档没有更改,将使用缓存,速度会更快。

信息

分类

AI与计算