Gemini Docs MCP Server

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Uses Bun for running the MCP server, utilized as the runtime environment for the application. The '--watch' flag suggests it provides hot reloading functionality during development.

Servidor MCP de Gemini Docs

Descripción

Este proyecto implementa un servidor MCP que permite el acceso a la documentación de diversas tecnologías mediante la API de Gemini, con su enorme ventana de contexto de 2 millones de tokens. Debería funcionar con cualquier cliente, pero está especialmente diseñado para el entorno Roo/Cline.

Este enfoque ofrece varias ventajas sobre simplemente navegar por la web o utilizar un motor de búsqueda:

  • Acceso a una base de conocimiento curada: el LLM utiliza un conjunto específico de documentación, evitando resultados basura y falsos positivos que pueden confundir el modelo.
  • Supera las limitaciones de la ventana de contexto: al proporcionar la documentación directamente, el LLM puede acceder a más información de la que sería posible con la búsqueda web únicamente.
  • Respuestas personalizadas y bien pensadas: El LLM no solo proporciona fragmentos de la documentación, sino que elabora respuestas bien razonadas que consideran toda la especificación de la tecnología en cuestión. Esto permite responder preguntas más complejas como "¿Qué alternativas existen para hacer X?" o "¿Es este fragmento idiomático?".

También supera algunos obstáculos problemáticos de los sistemas RAG tradicionales:

  • No es necesario fragmentarla: el LLM puede acceder a toda la documentación de una sola vez, sin necesidad de fragmentarla en partes más pequeñas ni tener que probar y elegir dolorosamente entre todas las formas posibles de hacerlo.
  • No es necesario un recuperador: la API de Gemini en sí misma funciona como un potente recuperador que puede acceder a toda la documentación, por lo que no es necesario implementar uno personalizado.
  • Sin vectorización, bases de datos vectoriales ni otros sistemas complejos: trabajamos directamente con texto plano y, como podemos verlo todo a la vez, no necesitamos vectores para la búsqueda de similitud. Si es relevante, lo sabemos.

Sin embargo, existen algunas limitaciones:

  • Sin actualizaciones en tiempo real: La documentación es estática y no se actualiza en tiempo real. Esto significa que el LLM podría no estar al tanto de las últimas funciones o cambios tecnológicos a menos que actualicemos la documentación manualmente o proporcionemos un método automatizado para hacerlo.
  • Una gran cantidad de tokens no equivale a una ventana de contexto infinita: el LLM solo puede ver unos 2 millones de tokens a la vez, por lo que podría no ser capaz de ver la documentación completa de algunas tecnologías. Esto es especialmente cierto para pilas grandes y complejas con abundante documentación.
  • No es tan rápido: usamos Gemini 1.5 Pro (no Flash) y lo estamos cargando con mucha documentación, por lo que la respuesta podría tardar un poco. Esto es especialmente cierto para la primera consulta, ya que el servidor necesita subir la documentación a la API.

Características

  • Permite a los clientes adoptar un enfoque de "preguntar a sus médicos" para aprender y depurar una cantidad arbitraria de tecnologías, incluidas algunas oscuras o menos conocidas.
  • Utiliza la API de Gemini para responder preguntas sobre la documentación.
  • Admite múltiples herramientas para consultar la documentación:
    • can_x_be_done : verifica si una tarea específica puede realizarse en una tecnología determinada.
    • hints_for_problem : Obtenga sugerencias para resolver un problema específico.
    • is_this_good_practice : comprueba si un fragmento de código sigue buenas prácticas.
    • how_to_do_x : Obtenga ejemplos y enfoques alternativos para una tarea específica.
  • Proporciona un sistema de registro para la depuración (habilitado con el indicador --verbose ).

Empezando

Instalación mediante herrería

Para instalar Gemini Docs Server para Claude Desktop automáticamente a través de Smithery :

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

Este servidor MCP se inicia y administra automáticamente por el cliente. Para habilitarlo, debe configurarlo en su archivo de configuración (por ejemplo, ~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json ). Generalmente, hay un botón para abrir el archivo de configuración en el cliente.

Aquí está la configuración para este servidor:

{ "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 }

Adquisición y saneamiento de la base de conocimientos

Este servidor MCP requiere una base de conocimientos con documentación para responder preguntas. Debe obtenerla manualmente, ya sea descargando un repositorio público, extrayendo información de un sitio web o utilizando otros métodos.

Se puede realizar un proceso de saneamiento opcional para limpiar la documentación original del estilo y otro contenido innecesario.

Aquí hay algunas herramientas básicas para lograrlo. Se recomiendan mejores soluciones:

Scrapper ingenuo:

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

Conversor rápido y sencillo a Markdown-ish:

#!/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'"

Uso

Este servidor proporciona las siguientes herramientas:

  • can_x_be_done: Comprueba si una tarea específica se puede realizar en una tecnología determinada.
    • Entrada: docs , prompt , x , technology
    • Salida: success , data
  • hints_for_problem: obtiene sugerencias para resolver un problema específico.
    • Entrada: docs , prompt , problem , context , environment
    • Salida: success , data
  • is_this_good_practice: Comprueba si un fragmento de código sigue buenas prácticas.
    • Entrada: docs , prompt , snippet , context
    • Salida: success , data
  • how_to_do_x: obtiene ejemplos y enfoques alternativos para una tarea específica.
    • Entrada: docs , prompt , x , technology
    • Salida: success , data

Contribuyendo

¡Agradecemos sus contribuciones! Por favor, sigan estas pautas:

  1. Bifurcar el repositorio.
  2. Crea una nueva rama para tu característica o corrección de error.
  3. Realice sus cambios y confirme con mensajes de confirmación descriptivos.
  4. Enviar una solicitud de extracción.

Licencia

Este proyecto está licenciado bajo la licencia MIT.

Descargo de responsabilidad

Esta es una versión muy temprana del proyecto y es probable que presente errores y limitaciones. Por favor, informe cualquier problema que encuentre y no dude en sugerir mejoras o nuevas funciones.

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

Proporciona acceso a documentación seleccionada a través de la API de Gemini, lo que permite a los usuarios consultar e interactuar con documentos técnicos de manera efectiva superando las limitaciones de contexto y búsqueda.

  1. Description
    1. Features
      1. Getting Started
        1. Installing via Smithery
      2. Procuring and Sanitizing the Knowledge Base
        1. Usage
          1. Contributing
            1. License
              1. Disclaimer
                ID: 6qobflcypm