DanielBayon/mcp-sheets-server
If you are the rightful owner of mcp-sheets-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This is an MCP server for Google Sheets, enabling ChatGPT to interact with Google Sheets for data storage and retrieval.
MCP Server para Google Sheets - Railway
📋 Descripción
Este es un servidor MCP (Model Context Protocol) que permite a ChatGPT leer y escribir en una tabla de Google Sheets. Perfecto para que ChatGPT pueda guardar investigaciones, consultar datos existentes y mantener un registro persistente de información.
🚀 Características
- 🔍 Búsqueda: Busca investigaciones en Google Sheets
- 📖 Lectura: Recupera documentos completos por ID
- ✍️ Escritura: Guarda nuevas investigaciones (con confirmación en ChatGPT)
- 🔧 Auto-configuración: Crea automáticamente las columnas necesarias
- 🌐 Remoto: Desplegable en Replit, Railway, Docker, etc.
📊 Estructura de Datos
El servidor maneja una tabla con estas columnas:
Campo | Descripción |
---|---|
id | UUID único generado automáticamente |
timestamp | Fecha y hora de creación (ISO format) |
titulo | Título de la investigación |
resumen | Resumen del contenido |
url | Enlace relacionado |
notas | Notas adicionales |
tags | Etiquetas separadas por comas |
confianza | Nivel de confianza (alta/media/baja) |
solicitado_por | Quién solicitó la investigación |
fuente | Fuente de la información |
🛠️ Instalación y Configuración
1. Configurar Google Cloud
- Ve a Google Cloud Console
- Crea un nuevo proyecto o selecciona uno existente
- Habilita estas APIs:
- Google Sheets API
- Google Drive API
- Crea una Service Account:
- Ve a "IAM & Admin" > "Service Accounts"
- Crea una nueva Service Account
- Descarga el JSON de credenciales
2. Configurar Google Sheet
- Crea un Google Sheet nuevo o usa uno existente
- Comparte el Sheet con el email de la Service Account (permisos de Editor)
- Copia el ID del Sheet desde la URL:
https://docs.google.com/spreadsheets/d/{SHEET_ID}/edit
3. Configurar Variables de Entorno
Copia .env.example
a .env
y completa:
# ID del Google Sheet
SHEET_ID=1AbCdEfGhIjKlMnOpQrStUvWxYz123456789
# Nombre de la pestaña (opcional, por defecto "data")
SHEET_NAME=data
# JSON de la Service Account (en una sola línea)
GOOGLE_SERVICE_ACCOUNT_JSON={"type":"service_account","project_id":"..."}
# Máximo resultados en búsquedas (opcional)
MAX_RESULTS=20
4. Instalar Dependencias
pip install -r requirements.txt
5. Ejecutar el Servidor
python server.py
El servidor estará disponible en: http://localhost:8000
El endpoint MCP (SSE) estará en: http://localhost:8000/sse/
🌐 Despliegue
Opción 1: Replit
- Crea un Repl de Python
- Sube los archivos
server.py
yrequirements.txt
- En Secrets (o
.env
), añade las variables de entorno - Ejecuta el proyecto
- URL del MCP:
https://<tu-repl>.replit.dev/sse/
Opción 2: Railway
- Conecta tu repositorio a Railway
- Configura las variables de entorno en el dashboard
- Railway detectará automáticamente el
requirements.txt
- URL del MCP:
https://<tu-app>.railway.app/sse/
Opción 3: Docker
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY server.py .
COPY .env .
EXPOSE 8000
CMD ["python", "server.py"]
🤖 Conexión con ChatGPT
1. Developer Mode
- Ve a ChatGPT Settings → Connectors → Advanced
- Activa "Developer mode (beta)"
2. Importar MCP Server
- Click en "Import MCP server"
- Configura:
- Label:
sheets
- URL:
https://tu-servidor.com/sse/
- Allowed tools:
search
,fetch
,save_investigation
- Require approval:
never
(o como prefieras)
- Label:
3. Usar desde ChatGPT
- Deep Research: Activa "Use Connectors" al crear una investigación
- Chat normal: Menciona que quieres usar el conector de sheets
🔧 Herramientas MCP
search
Busca investigaciones en la tabla.
Parámetros:
query
(string): Texto a buscar
Respuesta:
{
"results": [
{"id": "uuid-123", "title": "Título", "url": "https://..."}
]
}
fetch
Recupera una investigación completa por ID.
Parámetros:
id
(string): ID único de la fila
Respuesta:
{
"id": "uuid-123",
"title": "Título",
"text": "Resumen: ... \n\nNotas: ...",
"url": "https://...",
"metadata": {"timestamp": "...", "tags": "...", ...}
}
save_investigation
Guarda una nueva investigación (requiere confirmación en ChatGPT).
Parámetros:
titulo
(string): Títuloresumen
(string): Resumenurl
(string): URL relacionadanotas
(string): Notas adicionalestags
(array): Lista de etiquetasconfianza
(string): Nivel de confianzasolicitado_por
(string): Solicitantefuente
(string): Fuente
Respuesta:
{
"ok": true,
"inserted": {"id": "uuid-123", "timestamp": "...", ...}
}
🔒 Seguridad
- Principio de mínimo privilegio: La Service Account solo accede al Sheet específico
- Write actions: ChatGPT pide confirmación manual antes de escribir
- Auditoría: Todas las escrituras quedan registradas con timestamp y usuario
- Validación: Los campos se validan antes de guardar
🚨 Solución de Problemas
Error: "SHEET_ID no configurado"
- Verifica que la variable
SHEET_ID
esté configurada correctamente
Error: "Permission denied"
- Asegúrate de haber compartido el Sheet con el email de la Service Account
- Verifica que los permisos sean de "Editor"
Error: "API not enabled"
- Habilita Google Sheets API y Google Drive API en Google Cloud Console
ChatGPT no encuentra el servidor
- Verifica que la URL termine en
/sse/
- Asegúrate de que el servidor esté ejecutándose y sea accesible públicamente
📝 Ejemplos de Uso
Buscar investigaciones sobre IA
ChatGPT usará: search("inteligencia artificial 2025")
Guardar una nueva investigación
ChatGPT usará: save_investigation(
titulo="Estado del mercado de IA 2025",
resumen="Tendencias: agentes, RAG híbrido, edge.",
url="https://ejemplo.com/informe",
tags=["IA", "mercado", "tendencias"],
confianza="alta",
solicitado_por="Daniel",
fuente="web research"
)
🔄 Actualizaciones Futuras
- Búsqueda semántica con embeddings
- Filtros avanzados por fechas, tags, confianza
- Soporte para múltiples Sheets
- Dashboard web para visualización
- Exportación a diferentes formatos
📄 Licencia
MIT License - Úsalo libremente para tus proyectos.
¿Necesitas ayuda? Abre un issue o consulta la documentación de FastMCP y gspread.