关于 Gemini Docs MCP Server
Gemini Docs MCP Server 使用人工整理的文档知识库和 Gemini API 回答问题,面向技术学习与调试,尤其适用于 Roo/Cline。它将整套文档上下文交给 Gemini,而非采用自定义分块和检索流程。
主要功能
- 01通过 Gemini 回答文档问题
- 02检查技术是否支持某项任务
- 03提供问题解决提示
- 04评估实践方式和代码示例
- 05使用手动准备的文档库
适用场景
- 01学习如何在某项技术中完成任务
- 02调试问题时获取提示
- 03检查代码片段是否符合实践规范
- 04比较任务的示例方案
MCP 相关
向 MCP 客户端提供文档查询工具,包括任务可行性检查、问题提示、实践评估和操作指导。回答由 Gemini API 根据提供的文档生成。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Gemini Docs MCP Server
描述
本项目实现了一个 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
- 输入:
贡献
欢迎贡献!请遵循以下指南:
- Fork 此仓库。
- 为你的功能或错误修复创建一个新分支。
- 进行更改,并使用描述性提交信息提交。
- 提交拉取请求。
许可证
此项目采用 MIT License 授权。
免责声明
此项目还处于非常早期的阶段,可能存在错误和限制。请报告你发现的任何问题,也欢迎提出改进建议或新功能。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。