Skip to main content
Glama

Gemini Docs MCP 服务器

铁匠徽章

描述

该项目实现了一个 MCP 服务器,它使用 Gemini API 及其包含 2M 个令牌的超大上下文窗口,允许访问各种技术的文档。它适用于任何客户端,但尤其针对 Roo/Cline 环境。

与简单地浏览网页或使用搜索引擎相比,这种方法有几个优点:

  • 访问精选知识库: LLM 使用一组特定的文档,避免可能混淆模型的垃圾结果和误报。

  • **克服上下文窗口限制:**通过直接提供文档,LLM 可以访问比单独通过网络搜索所能获得的更多信息。

  • 量身定制且经过深思熟虑的答案: LLM 不仅提供文档中的片段,还会精心设计答案,将相关技术的完整规范考虑在内。这允许回答更复杂的问题,例如“实现 X 有哪些其他方法?”或“这段代码符合语言习惯吗?”。

它还克服了传统 RAG 系统的一些难题:

  • 无需分块: LLM 可以一次性访问整个文档,而无需将其分成更小的部分,也不必在所有可能的方法中进行痛苦的测试和选择。

  • 无需检索器: Gemini API 本身就是一个强大的检索器,可以访问整个文档,因此无需实现自定义检索器。

  • **无需向量化、向量数据库或其他复杂系统:**我们直接处理纯文本,而且由于可以一次性查看所有内容,因此相似性搜索无需向量。只要相关,我们就能知道。

但也存在一些限制:

  • **无法实时更新:**文档是静态的,不会实时更新。这意味着,除非我们手动更新文档或提供自动化更新方式,否则法学硕士 (LLM) 可能无法了解最新的功能或技术变化。

  • 大量的 token 并不等同于无限的上下文窗口: LLM 一次只能查看大约 200 万个 token,因此它可能无法查看某些技术的完整文档。对于拥有大量文档的大型复杂技术栈来说尤其如此。

  • **速度不是很快:**我们使用的是 Gemini 1.5 Pro(不是 Flash),而且加载了大量文档,所以可能需要一段时间才能得到响应。第一次查询尤其如此,因为服务器需要将文档上传到 API。

Related MCP server: Payman AI Documentation MCP Server

特征

  • 使客户能够采用“询问文档”的方式来学习和调试任意数量的技术,包括一些鲜为人知或鲜为人知的技术。

  • 使用 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:**检查特定任务是否可以在给定的技术下完成。

    • 输入: docspromptxtechnology

    • 输出: successdata

  • **hints_for_problem:**获取解决特定问题的提示。

    • 输入: docspromptproblemcontextenvironment

    • 输出: successdata

  • **is_this_good_practice:**检查代码片段是否遵循良好实践。

    • 输入: docspromptsnippetcontext

    • 输出: successdata

  • **how_to_do_x:**获取特定任务的示例和替代方法。

    • 输入: docspromptxtechnology

    • 输出: successdata

贡献

欢迎投稿!请遵循以下准则:

  1. 分叉存储库。

  2. 为您的功能或错误修复创建一个新的分支。

  3. 进行更改并使用描述性提交消息提交它们。

  4. 提交拉取请求。

执照

该项目已获得 MIT 许可。

免责声明

该项目目前处于早期版本,可能存在一些错误和限制。请报告您发现的任何问题,并随时提出改进或新功能的建议。

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/M-Gonzalo/cosa-sai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server