Gemini Docs MCP Server
通过 Gemini API 提供精选的文档访问,使用户能够有效地查询和交互技术文档,从而克服上下文和搜索限制。
README
Gemini Docs MCP 服务器
描述
本项目实现了一个 MCP 服务器,它能够使用 Gemini API 及其 200 万 token 的巨大上下文窗口,访问各种技术的文档。它应该适用于任何客户端,但尤其针对 Roo/Cline 环境。
与简单地浏览网页或使用搜索引擎相比,这种方法具有以下几个优点:
- 访问精选的知识库: LLM 使用一组特定的文档,避免了可能混淆模型的垃圾结果和误报。
- 克服上下文窗口的限制: 通过直接提供文档,LLM 可以访问比单独使用网络搜索更多的信息。
- 量身定制且经过深思熟虑的响应: LLM 不仅仅提供文档中的片段,而是精心设计了充分论证的答案,这些答案考虑了相关技术的整个规范。 这允许更复杂的问题,例如“有哪些替代方法可以做 X?”或“这个代码片段是否符合规范?”。
它还克服了传统 RAG 系统的一些问题:
- 无需分块: LLM 可以一次性访问整个文档,而无需将其分成更小的块,并且不必痛苦地测试和选择所有可能的方法。
- 无需检索器: Gemini API 本身就是一个强大的检索器,可以访问整个文档,因此无需实现自定义的检索器。
- 无需向量化、向量数据库或其他复杂系统: 我们直接使用纯文本,并且由于我们可以一次看到所有内容,因此我们不需要向量进行相似性搜索。 如果它相关,我们就知道。
但也有一些限制:
- 没有实时更新: 文档是静态的,不会实时更新。 这意味着 LLM 可能不知道该技术的最新功能或更改,除非我们手动更新文档或提供自动更新的方式。
- 大量的 token 与无限的上下文窗口不同: LLM 一次只能看到大约 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 服务器需要一个文档知识库来回答问题。 您必须手动获取此知识库,可以通过下载公共存储库、抓取网站或使用其他方法。
可以选择执行清理过程,以清除原始文档中的样式和其他不必要的内容。
以下是一些用于执行此操作的基本工具。 鼓励使用更好的解决方案:
Naive Scrapper:
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent --directory-prefix=./local_copy --no-verbose --show-progress $1
快速且简陋的转换为 Markdown-ish:
#!/bin/bash
directory="${1:-.}" # 如果没有提供参数,则默认为当前目录
output_file="${2:-concatenated.md}" # 默认输出文件名
echo "Concatenating files in '$directory' into '$output_file'..."
# 如果输出文件存在,则清空它
truncate -s 0 "$output_file"
# 查找所有文件(不包括目录)并处理它们
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 存储库。
- 为您的功能或错误修复创建一个新分支。
- 进行更改并使用描述性的提交消息提交它们。
- 提交 pull request。
许可证
本项目采用 MIT 许可证。
免责声明
这是该项目的非常早期的版本,可能存在错误和限制。 请报告您发现的任何问题,并随时提出改进或新功能的建议。
推荐服务器
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mult-fetch-mcp-server
一个多功能的、符合 MCP 规范的网页内容抓取工具,支持多种模式(浏览器/Node)、格式(HTML/JSON/Markdown/文本)和智能代理检测,并提供双语界面(英语/中文)。
AIO-MCP Server
🚀 集成了 AI 搜索、RAG 和多服务(GitLab/Jira/Confluence/YouTube)的一体化 MCP 服务器,旨在增强 AI 驱动的开发工作流程。来自 Folk。
Knowledge Graph Memory Server
为 Claude 实现持久性记忆,使用本地知识图谱,允许 AI 记住用户的信息,并可在自定义位置存储,跨对话保持记忆。
Hyperbrowser
欢迎来到 Hyperbrowser,人工智能的互联网。Hyperbrowser 是下一代平台,旨在增强人工智能代理的能力,并实现轻松、可扩展的浏览器自动化。它专为人工智能开发者打造,消除了本地基础设施和性能瓶颈带来的麻烦,让您能够:
https://github.com/Streen9/react-mcp
react-mcp 与 Claude Desktop 集成,能够根据用户提示创建和修改 React 应用程序。
any-chat-completions-mcp
将 Claude 与任何 OpenAI SDK 兼容的聊天完成 API 集成 - OpenAI、Perplexity、Groq、xAI、PyroPrompts 等。