MCP Gemini Server
Servidor MCP Gemini
Descripción general
Este proyecto proporciona un servidor MCP (Protocolo de Contexto de Modelo) dedicado que encapsula el SDK @google/genai . Expone las capacidades del modelo Gemini de Google como herramientas MCP estándar, lo que permite que otros LLM (como Cline) o sistemas compatibles con MCP aprovechen las funciones de Gemini como herramienta principal de backend.
Este servidor tiene como objetivo simplificar la integración con los modelos Gemini al proporcionar una interfaz consistente basada en herramientas administrada a través del estándar MCP.
Related MCP server: MCP Gemini Server
Características
Generación de núcleo: generación de texto estándar (
gemini_generateContent) y de transmisión (gemini_generateContentStream).Llamada de función: permite que los modelos Gemini soliciten la ejecución de funciones definidas por el cliente (
gemini_functionCall).Chat con estado: administra el contexto conversacional en múltiples turnos (
gemini_startChat,gemini_sendMessage,gemini_sendFunctionResult).Manejo de archivos: cargue, enumere, recupere y elimine archivos mediante la API de Gemini.
Almacenamiento en caché: cree, enumere, recupere, actualice y elimine contenido en caché para optimizar las indicaciones.
Prerrequisitos
Node.js (v18 o posterior)
Una clave API de Google AI Studio ( https://aistudio.google.com/app/apikey ).
Importante: Las API de gestión de archivos y almacenamiento en caché solo son compatibles con las claves de API de Google AI Studio y no se admiten al usar credenciales de Vertex AI. Este servidor no admite actualmente la autenticación de Vertex AI.
Instalación y configuración
Instalación mediante herrería
Para instalar Gemini Server para Claude Desktop automáticamente a través de Smithery :
npx -y @smithery/cli install @bsmi021/mcp-gemini-server --client claudeInstalación manual
Clonar/Colocar proyecto: asegúrese de que el directorio del proyecto
mcp-gemini-serversea accesible en su sistema.Instalar dependencias: navegue al directorio del proyecto en su terminal y ejecute:
npm installProyecto de compilación: Compilar el código fuente de TypeScript:
npm run buildEste comando usa el compilador TypeScript (
tsc) y envía los archivos JavaScript al directorio./dist(como se especifica enoutDirentsconfig.json). El punto de entrada principal del servidor serádist/server.js.Configurar el cliente MCP: Agregue la configuración del servidor al archivo de configuración de su cliente MCP (p. ej.,
cline_mcp_settings.jsonpara Cline/VSCode oclaude_desktop_config.jsonpara la aplicación de escritorio Claude). Reemplace/path/to/mcp-gemini-servercon la ruta real de su sistema yYOUR_API_KEYcon su clave de Google AI Studio.{ "mcpServers": { "gemini-server": { // Or your preferred name "command": "node", "args": ["/path/to/mcp-gemini-server/dist/server.js"], // Path to the compiled server entry point "env": { "GOOGLE_GEMINI_API_KEY": "YOUR_API_KEY", "GOOGLE_GEMINI_MODEL": "gemini-1.5-flash" // Optional: Set a default model }, "disabled": false, "autoApprove": [] } // ... other servers } }Reiniciar el cliente MCP: Reinicie su aplicación cliente MCP (p. ej., VS Code con la extensión Cline, Claude Desktop App) para cargar la nueva configuración del servidor. El cliente MCP gestionará el inicio y la detención del proceso del servidor.
Configuración
El servidor utiliza variables de entorno para la configuración, pasadas a través del objeto env en la configuración de MCP:
GOOGLE_GEMINI_API_KEY( Obligatorio ): Su clave API obtenida de Google AI Studio.GOOGLE_GEMINI_MODEL( Opcional ): Especifica un nombre de modelo predeterminado de Gemini (p. ej.,gemini-1.5-flash,gemini-1.0-pro). Si se configura, las herramientas que requieren un nombre de modelo (comogemini_generateContent,gemini_startChat, etc.) usarán este valor predeterminado cuando se omita el parámetromodelNameen la llamada a la herramienta. Esto simplifica las llamadas de cliente cuando se usa principalmente un modelo. Si esta variable de entorno no se configura, el parámetromodelNamese vuelve obligatorio para esas herramientas. Consulte la documentación de Google AI para conocer los nombres de modelo disponibles.
Herramientas disponibles
Este servidor proporciona las siguientes herramientas MCP. Los esquemas de parámetros se definen mediante Zod para su validación y descripción.
Nota sobre parámetros opcionales: Muchas herramientas aceptan parámetros opcionales complejos (p. ej., generationConfig , safetySettings , toolConfig , history , functionDeclarations , contents ). Estos parámetros suelen ser objetos o matrices cuya estructura refleja los tipos definidos en el SDK @google/genai subyacente. Para conocer la estructura exacta y los campos disponibles dentro de estos parámetros complejos, consulte: 1. El archivo src/tools/*Params.ts correspondiente en este proyecto. 2. La documentación oficial del SDK de Google AI JS .
Generación de núcleo
gemini_generateContentDescripción: Genera contenido de texto que no se transmite a partir de un mensaje.
Parámetros obligatorios:
prompt(cadena)Parámetros opcionales:
modelName(cadena),generationConfig(objeto),safetySettings(matriz)
gemini_generateContentStreamDescripción: Genera contenido de texto mediante streaming. (Nota: La implementación actual utiliza una solución alternativa y recopila todos los fragmentos antes de devolver el texto completo).
Parámetros obligatorios:
prompt(cadena)Parámetros opcionales:
modelName(cadena),generationConfig(objeto),safetySettings(matriz)
Llamada de función
gemini_functionCallDescripción: Envía un mensaje y declaraciones de funciones al modelo, devolviendo una respuesta de texto o un objeto de llamada de función solicitado (como una cadena JSON).
Parámetros obligatorios:
prompt(cadena),functionDeclarations(matriz)Parámetros opcionales:
modelName(cadena),generationConfig(objeto),safetySettings(matriz),toolConfig(objeto)
Chat con estado
gemini_startChatDescripción: Inicia una nueva sesión de chat con estado y devuelve un
sessionIdúnico.\n * Parámetros obligatorios: NingunoParámetros opcionales:
modelName(cadena),history(matriz),tools(matriz),generationConfig(objeto),safetySettings(matriz)
gemini_sendMessageDescripción: Envía un mensaje dentro de una sesión de chat existente.\n * Parámetros obligatorios:
sessionId(cadena),message(cadena)Parámetros opcionales:
generationConfig(objeto),safetySettings(matriz),tools(matriz),toolConfig(objeto)
gemini_sendFunctionResultDescripción: Envía el resultado de la ejecución de una función a una sesión de chat.\n * Parámetros obligatorios:
sessionId(cadena),functionResponses(matriz)Parámetros opcionales:
generationConfig(objeto),safetySettings(matriz)
Manejo de archivos (se requiere clave de Google AI Studio)
gemini_uploadFileDescripción: Carga un archivo desde una ruta local.\n Parámetros obligatorios:
filePath(cadena - debe ser una ruta absoluta )\n Parámetros opcionales:displayName(cadena),mimeType(cadena)
gemini_listFilesDescripción: Enumera los archivos cargados previamente.\n * Parámetros obligatorios: Ninguno
Parámetros opcionales:
pageSize(número),pageToken(cadena; nota: es posible quepageTokenno se devuelva de forma confiable actualmente).
gemini_getFileDescripción: Recupera metadatos para un archivo cargado específico.\n * Parámetros requeridos:
fileName(cadena - p. ej.,files/abc123xyz)
gemini_deleteFileDescripción: Elimina un archivo cargado.\n * Parámetros obligatorios:
fileName(cadena, por ejemplo,files/abc123xyz)
Almacenamiento en caché (se requiere clave de Google AI Studio)
gemini_createCacheDescripción: Crea contenido en caché para modelos compatibles (por ejemplo,
gemini-1.5-flash).\n * Parámetros obligatorios:contents(matriz)Parámetros opcionales:
modelName(cadena),displayName(cadena),systemInstruction(objeto),ttl(cadena, p. ej., '3600s')
gemini_listCachesDescripción: Enumera el contenido almacenado en caché existente.\n * Parámetros obligatorios: Ninguno
Parámetros opcionales:
pageSize(número),pageToken(cadena; nota: es posible quepageTokenno se devuelva de forma confiable actualmente).
gemini_getCacheDescripción: Recupera metadatos para contenido almacenado en caché específico.\n * Parámetros obligatorios:
cacheName(cadena, por ejemplo,cachedContents/abc123xyz)
gemini_updateCacheDescripción: Actualiza los metadatos (TTL, displayName) para el contenido almacenado en caché.\n * Parámetros obligatorios:
cacheName(cadena)Parámetros opcionales:
ttl(cadena),displayName(cadena)
gemini_deleteCacheDescripción: Elimina el contenido almacenado en caché.\n * Parámetros obligatorios:
cacheName(cadena, por ejemplo,cachedContents/abc123xyz)
Ejemplos de uso
A continuación se muestran ejemplos de cómo un cliente MCP (como Cline) podría llamar a estas herramientas utilizando el formato use_mcp_tool :
Ejemplo 1: Generación de contenido simple (utilizando el modelo predeterminado)
<use_mcp_tool>
<server_name>gemini-server</server_name>
<tool_name>gemini_generateContent</tool_name>
<arguments>
{
"prompt": "Write a short poem about a rubber duck."
}
</arguments>
</use_mcp_tool>Ejemplo 2: Generación de contenido (especificando modelo y configuración)
<use_mcp_tool>
<server_name>gemini-server</server_name>
<tool_name>gemini_generateContent</tool_name>
<arguments>
{
"modelName": "gemini-1.0-pro",
"prompt": "Explain the concept of recursion in programming.",
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 500
}
}
</arguments>
</use_mcp_tool>Ejemplo 3: Iniciar y continuar un chat
Iniciar chat:
<use_mcp_tool>
<server_name>gemini-server</server_name>
<tool_name>gemini_startChat</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>(Suponga que la respuesta contiene sessionId: "some-uuid-123" )
Enviar mensaje:
<use_mcp_tool>
<server_name>gemini-server</server_name>
<tool_name>gemini_sendMessage</tool_name>
<arguments>
{
"sessionId": "some-uuid-123",
"message": "Hello! Can you tell me about the Gemini API?"
}
</arguments>
</use_mcp_tool>Ejemplo 4: Cargar un archivo
<use_mcp_tool>
<server_name>gemini-server</server_name>
<tool_name>gemini_uploadFile</tool_name>
<arguments>
{
"filePath": "C:\\Users\\YourUser\\Documents\\my_document.txt", // IMPORTANT: Use absolute path with escaped backslashes if needed
"displayName": "My Document"
}
</arguments>
</use_mcp_tool>Manejo de errores
El servidor intenta devolver errores estructurados utilizando el tipo McpError estándar de MCP cuando falla la ejecución de la herramienta. Este objeto suele contener:
code: un valor de enumeraciónErrorCodeque indica el tipo de error (por ejemplo,InvalidParams,InternalError,PermissionDenied,NotFound).message: Una descripción legible del error.details: (opcional) Un objeto que potencialmente contiene información más específica del error subyacente del SDK de Gemini (como motivos de bloqueo de seguridad o mensajes de error de API) para la resolución de problemas.
Escenarios de error comunes:
Clave API no válida: a menudo genera un
InternalErrorcon detalles que indican una falla de autenticación.Parámetros no válidos: da como resultado
InvalidParams(por ejemplo, campo obligatorio faltante, tipo de datos incorrecto).Bloqueos de seguridad: pueden generar un
InternalErrorcon detalles que indicanSAFETYcomo el motivo del bloqueo o el motivo de finalización.Archivo/caché no encontrado: puede generar
NotFoundoInternalErrorsegún cómo el SDK muestre el error.Límites de velocidad: puede resultar en
ResourceExhaustedoInternalError.
Consulte los campos message y details del McpError devuelto para obtener pistas específicas a la hora de solucionar problemas.
Desarrollo
Este servidor sigue la estructura estándar de servidor MCP descrita en las .clinerules del proyecto y la documentación interna. Los patrones clave incluyen:
Capa de servicio (
src/services): encapsula las interacciones con el SDK@google/genai, manteniéndolo desacoplado de las particularidades de MCP.Capa de herramientas (
src/tools): adapta la funcionalidad de la capa de servicio a las herramientas MCP, manejando el mapeo de parámetros y la traducción de errores.Esquemas Zod (
src/tools/*Params.ts): se utilizan ampliamente para definir parámetros de herramientas, proporcionar validación y generar descripciones detalladas cruciales para la interacción LLM.Configuración (
src/config): Gestión centralizada medianteConfigurationManager.Tipos (
src/types): borra las definiciones de TypeScript.
Problemas conocidos
gemini_generateContentStreamutiliza una solución alternativa: recopila todos los fragmentos antes de devolver el texto completo. La transmisión real al cliente MCP aún no está implementada.Es posible que
gemini_listFilesygemini_listCachesno devuelvannextPageTokende manera confiable debido a limitaciones en la iteración del objeto Pager del SDK.gemini_uploadFilerequiere rutas de archivos absolutas cuando se ejecuta desde el entorno del servidor.Las API de almacenamiento en caché y manejo de archivos no son compatibles con Vertex AI , solo las claves API de Google AI Studio.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityFmaintenanceModel Context Protocol (MCP) server implementation that enables Claude Desktop to interact with Google's Gemini AI models.6178257MIT
- FlicenseNot gradedqualityDmaintenanceA server implementing the Model Context Protocol that enables AI assistants like Claude to interact with Google's Gemini API for text generation, text analysis, and chat conversations.
- -licenseNot gradedqualityNot gradedmaintenanceAn MCP server implementation that allows using Google's Gemini AI models (specifically Gemini 1.5 Pro) through Claude or other MCP clients via the Model Context Protocol.1
- -licenseNot gradedqualityNot gradedmaintenanceA server that allows interaction with Google's Gemini AI through the Gemini CLI tool using the Model Context Protocol, providing a standardized interface for querying Gemini with various options and configurations.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
MCP server for Google Veo AI video generation
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/bsmi021/mcp-gemini-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server