mcpField
G
Gemini Docs MCP Server

Gemini Docs MCP Server

本地服务
github.com/M-Gonzalo记忆与知识1486 周前更新

关于 Gemini Docs MCP Server

Gemini Docs MCP Server 使用人工整理的文档知识库和 Gemini API 回答问题,面向技术学习与调试,尤其适用于 Roo/Cline。它将整套文档上下文交给 Gemini,而非采用自定义分块和检索流程。

主要功能

  1. 01通过 Gemini 回答文档问题
  2. 02检查技术是否支持某项任务
  3. 03提供问题解决提示
  4. 04评估实践方式和代码示例
  5. 05使用手动准备的文档库

适用场景

  1. 01学习如何在某项技术中完成任务
  2. 02调试问题时获取提示
  3. 03检查代码片段是否符合实践规范
  4. 04比较任务的示例方案

MCP 相关

向 MCP 客户端提供文档查询工具,包括任务可行性检查、问题提示、实践评估和操作指导。回答由 Gemini API 根据提供的文档生成。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cosa-sai": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
启动命令npx -y @smithery/cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@smithery/cli

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Gemini Docs MCP Server

smithery badge

描述

本项目实现了一个 MCP 服务,借助 Gemini API 及其高达 200 万 token 的超大上下文窗口,提供对各种技术文档的访问。它应该适用于任何客户端,但尤其面向 Roo/Cline 环境。

与单纯浏览网页或使用搜索引擎相比,这种方式有以下优势:

  • 访问经过整理的知识库: 大模型使用一套特定的文档,避免杂乱的搜索结果和可能使模型困惑的误报。
  • 克服上下文窗口限制: 直接提供文档后,大模型能够访问比单靠网页搜索所能获取的更多信息。
  • 回答贴合需求且经过深思熟虑: 大模型不会只提供文档片段,而是会给出经过充分推理的回答,并考虑相关技术的完整规范。因此,它能够回答更复杂的问题,例如“还有哪些替代方式可以实现 X?”或“这段代码是否符合惯用写法?”

它还克服了传统 RAG 系统的一些棘手问题:

  • 无需分块: 大模型可以一次性访问完整文档,无需将其切分成更小的片段,也不必费力测试和选择各种分块方式。
  • 无需检索器: Gemini API 本身就是功能强大的检索器,可以访问完整文档,因此无需实现自定义检索器。
  • 无需向量化、向量数据库或其他复杂系统: 我们直接使用纯文本,而且由于可以一次查看所有内容,因此无需使用向量进行相似度搜索。只要内容相关,我们就能知道。

不过,它也有一些限制:

  • 无法实时更新: 文档是静态的,不会实时更新。这意味着,除非我们手动更新文档或提供自动更新方式,否则大模型可能不了解技术的最新功能或变更。
  • token 数量再多,也不代表上下文窗口无限大: 大模型一次最多只能看到约 200 万个 token,因此可能无法看到某些技术的完整文档。文档数量庞大且结构复杂的技术栈尤其如此。
  • 速度不算快: 我们使用的是 Gemini 1.5 Pro(而不是 Flash),并向其加载了大量文档,因此可能需要一段时间才能得到回答。首次查询尤其如此,因为服务需要先将文档上传到 API。

功能

  • 支持客户端采用“询问你的文档”的方式,学习和调试任意数量的技术,其中也包括一些鲜为人知的技术。
  • 使用 Gemini API 回答有关文档的问题。
  • 支持多种用于查询文档的工具:
    • can_x_be_done:检查某项任务是否可以在给定技术中完成。
    • hints_for_problem:获取解决特定问题的提示。
    • is_this_good_practice:检查代码片段是否符合良好实践。
    • how_to_do_x:获取完成特定任务的示例和替代方案。
  • 提供用于调试的日志系统(通过 --verbose 标志启用)。

入门

通过 Smithery 安装

如需通过 Smithery 自动为 Claude Desktop 安装 Gemini Docs Server:

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

此 MCP 服务由客户端自动启动和管理。要启用它,需要在设置文件中进行配置(例如,~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json)。客户端中通常有用于打开设置文件的按钮。

此服务的配置如下:

{
  "command": "bun",
  "args": [
    "--watch",
    "path/to/repo/cosa-sai-mcp/src/index.ts",
    "--verbose"
  ],
  "env": {
    "GEMINI_API_KEY": "<your_gemini_api_key>"
  },
  "disabled": false,
  "alwaysAllow": [
    "can_x_be_done",
    "hints_for_problem",
    "is_this_good_practice",
    "how_to_do_x"
  ],
  "timeout": 60 // in seconds
}

获取和清理知识库

此 MCP 服务需要一个文档知识库来回答问题。你必须手动获取此知识库,可以下载公开仓库、抓取网站,或使用其他方法。

还可以选择执行清理流程,移除原始文档中的样式和其他不必要的内容。

以下是一些用于此目的的基础工具。欢迎使用更好的方案:

简易爬虫:

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent --directory-prefix=./local_copy --no-verbose --show-progress $1

快速粗略地转换为类 Markdown 格式:

#!/bin/bash

directory="${1:-.}"  # Default to current directory if no argument is provided
output_file="${2:-concatenated.md}"  # Default output file name

echo "Concatenating files in '$directory' into '$output_file'..."

# Clear output file if it exists
truncate -s 0 "$output_file"

# Find all files (excluding directories) and process them
find "$directory" -type f -name '*.html' | while IFS= read -r file; do
    echo "=== ${file#./} ===" >> "$output_file"
    cat "$file" \
    | grep -v 'base64' \
    | html2markdown >> "$output_file"
    echo -e "\n" >> "$output_file"
done

echo "Done! Output saved to '$output_file'"

使用方法

此服务提供以下工具:

  • can_x_be_done: 检查在给定技术中是否可以完成特定任务。
    • 输入: docs、prompt、x、technology
    • 输出: success、data
  • hints_for_problem: 获取解决特定问题的提示。
    • 输入: docs、prompt、problem、context、environment
    • 输出: success、data
  • is_this_good_practice: 检查代码片段是否遵循良好实践。
    • 输入: docs、prompt、snippet、context
    • 输出: success、data
  • how_to_do_x: 获取完成特定任务的示例和替代方法。
    • 输入: docs、prompt、x、technology
    • 输出: success、data

贡献

欢迎贡献!请遵循以下指南:

  1. Fork 此仓库。
  2. 为你的功能或错误修复创建一个新分支。
  3. 进行更改,并使用描述性提交信息提交。
  4. 提交拉取请求。

许可证

此项目采用 MIT License 授权。

免责声明

此项目还处于非常早期的阶段,可能存在错误和限制。请报告你发现的任何问题,也欢迎提出改进建议或新功能。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。