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.
- 🔍 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.
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 |
- 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
- 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
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
pip install -r requirements.txt
python server.py
El servidor estará disponible en: http://localhost:8000
El endpoint MCP (SSE) estará en: http://localhost:8000/sse/
- 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/
- 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/
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"]
- Ve a ChatGPT Settings → Connectors → Advanced
- Activa "Developer mode (beta)"
- 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:
- Deep Research: Activa "Use Connectors" al crear una investigación
- Chat normal: Menciona que quieres usar el conector de sheets
Busca investigaciones en la tabla.
Parámetros:
query
(string): Texto a buscar
Respuesta:
{
"results": [
{"id": "uuid-123", "title": "Título", "url": "https://..."}
]
}
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": "...", ...}
}
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": "...", ...}
}
- 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
- Verifica que la variable
SHEET_ID
esté configurada correctamente
- Asegúrate de haber compartido el Sheet con el email de la Service Account
- Verifica que los permisos sean de "Editor"
- Habilita Google Sheets API y Google Drive API en Google Cloud Console
- Verifica que la URL termine en
/sse/
- Asegúrate de que el servidor esté ejecutándose y sea accesible públicamente
ChatGPT usará: search("inteligencia artificial 2025")
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"
)
- 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
MIT License - Úsalo libremente para tus proyectos.
¿Necesitas ayuda? Abre un issue o consulta la documentación de FastMCP y gspread.