Google Calendar
Interactúa con Google Calendar para listar eventos, crear reuniones y encontrar espacios de tiempo libres.
Documentación
Servidor MCP de Google Calendar
Este servidor MCP permite que Claude interactúe con tu Google Calendar, habilitando capacidades como listar eventos, crear reuniones y encontrar espacios de tiempo libres.
Requisitos previos
- Node.js (v16 o superior)
- Aplicación de escritorio de Claude
- Un proyecto de Google Cloud
- API de Google Calendar habilitada
- Credenciales OAuth 2.0
Instrucciones de configuración
1. Crear un proyecto de Google Cloud
- Ve a la Consola de Google Cloud
- Crea un nuevo proyecto o selecciona uno existente
- Habilita la API de Google Calendar:
- Ve a "APIs y servicios" > "Biblioteca"
- Busca "Google Calendar API"
- Haz clic en "Habilitar"
2. Configurar la pantalla de consentimiento de OAuth
- Ve a "APIs y servicios" > "Pantalla de consentimiento de OAuth"
- Selecciona el tipo de usuario "Externo" (a menos que tengas una organización de Google Workspace)
- Completa la información requerida:
- Nombre de la aplicación
- Correo electrónico de soporte al usuario
- Información de contacto del desarrollador
- Agrega los siguientes alcances:
https://www.googleapis.com/auth/calendarhttps://www.googleapis.com/auth/calendar.events
- Agrega tu dirección de correo electrónico como usuario de prueba
3. Crear credenciales OAuth 2.0
- Ve a "APIs y servicios" > "Credenciales"
- Haz clic en "Crear credenciales" > "ID de cliente de OAuth"
- Selecciona "Aplicación de escritorio" como tipo de aplicación
- Nombra tu cliente (por ejemplo, "Cliente MCP de Calendar")
- Haz clic en "Crear"
- Descarga el archivo de configuración del cliente (necesitarás el ID de cliente y el secreto de cliente)
4. Obtener el token de actualización
- Crea un nuevo archivo llamado
getToken.js:
const { google } = require('googleapis');
const http = require('http');
const url = require('url');
// Replace these with your OAuth 2.0 credentials
const CLIENT_ID = 'your-client-id';
const CLIENT_SECRET = 'your-client-secret';
const REDIRECT_URI = 'http://localhost:3000/oauth2callback';
// Configure OAuth2 client
const oauth2Client = new google.auth.OAuth2(
CLIENT_ID,
CLIENT_SECRET,
REDIRECT_URI
);
// Define scopes
const scopes = [
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/calendar.events'
];
async function getRefreshToken() {
return new Promise((resolve, reject) => {
try {
// Create server to handle OAuth callback
const server = http.createServer(async (req, res) => {
try {
const queryParams = url.parse(req.url, true).query;
if (queryParams.code) {
// Get tokens from code
const { tokens } = await oauth2Client.getToken(queryParams.code);
console.log('\n=================');
console.log('Refresh Token:', tokens.refresh_token);
console.log('=================\n');
console.log('Save this refresh token in your configuration!');
// Send success response
res.end('Authentication successful! You can close this window.');
// Close server
server.close();
resolve(tokens);
}
} catch (error) {
console.error('Error getting tokens:', error);
res.end('Authentication failed! Please check console for errors.');
reject(error);
}
}).listen(3000, () => {
// Generate auth url
const authUrl = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: scopes,
prompt: 'consent' // Force consent screen to ensure refresh token
});
console.log('1. Copy this URL and paste it in your browser:');
console.log('\n', authUrl, '\n');
console.log('2. Follow the Google authentication process');
console.log('3. Wait for the refresh token to appear here');
});
} catch (error) {
console.error('Server creation error:', error);
reject(error);
}
});
}
// Run the token retrieval
getRefreshToken().catch(console.error);
- Instala la dependencia requerida:
npm install googleapis
-
Actualiza el script con tus credenciales OAuth:
- Reemplaza
your-client-idcon tu ID de cliente real - Reemplaza
your-client-secretcon tu secreto de cliente real
- Reemplaza
-
Ejecuta el script:
node getToken.js
- Sigue las instrucciones en la consola:
- Copia la URL proporcionada
- Pégala en tu navegador
- Completa el proceso de autenticación de Google
- Copia el token de actualización que aparece en la consola
5. Configurar Claude Desktop
- Abre tu archivo de configuración de Claude Desktop:
Para MacOS:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
Para Windows:
code %AppData%\Claude\claude_desktop_config.json
- Agrega o actualiza la configuración:
{
"mcpServers": {
"google-calendar": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/YOUR/build/index.js"
],
"env": {
"GOOGLE_CLIENT_ID": "your_client_id_here",
"GOOGLE_CLIENT_SECRET": "your_client_secret_here",
"GOOGLE_REDIRECT_URI": "http://localhost",
"GOOGLE_REFRESH_TOKEN": "your_refresh_token_here"
}
}
}
}
- Guarda el archivo y reinicia Claude Desktop
Configuración inicial del proyecto
- Crea un nuevo directorio para tu proyecto:
mkdir google-calendar-mcp
cd google-calendar-mcp
- Inicializa un nuevo proyecto npm:
npm init -y
- Instala las dependencias:
npm install @modelcontextprotocol/sdk googleapis google-auth-library zod
npm install -D @types/node typescript
- Crea un archivo tsconfig.json:
{
"compilerOptions": {
"target": "ES2022",
"module": "Node16",
"moduleResolution": "Node16",
"outDir": "./build",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
- Actualiza package.json:
{
"type": "module",
"scripts": {
"build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\""
}
}
- Crea tu directorio de código fuente:
mkdir src
- Crea un archivo .env para desarrollo local (no lo subas al control de versiones):
GOOGLE_CLIENT_ID=your_client_id_here
GOOGLE_CLIENT_SECRET=your_client_secret_here
GOOGLE_REDIRECT_URI=http://localhost
GOOGLE_REFRESH_TOKEN=your_refresh_token_here
Compilación y ejecución
- Compila el servidor:
npm run build
- El servidor se iniciará automáticamente cuando abras Claude Desktop
Herramientas disponibles
El servidor proporciona las siguientes herramientas:
list_events: Lista eventos del calendario dentro de un rango de tiempo especificadocreate_event: Crea un nuevo evento de calendarioupdate_event: Actualiza un evento de calendario existentedelete_event: Elimina un evento de calendariofind_free_time: Encuentra espacios de tiempo disponibles en el calendario
Ejemplo de uso en Claude
Después de la configuración, puedes usar comandos como:
- "Muéstrame mis eventos del calendario para la próxima semana"
- "Programa una reunión con [email_id] mañana a las 2 PM por 1 hora"
- "Encuentra un espacio libre de 30 minutos esta tarde"
- "Actualiza mi reunión de las 3 PM a las 4 PM"
- "Cancela mi reunión con ID [event_id]"
Solución de problemas
Problemas comunes
-
Las herramientas no aparecen en Claude:
- Revisa los registros de Claude Desktop:
tail -f ~/Library/Logs/Claude/mcp*.log - Verifica que todas las variables de entorno estén configuradas correctamente
- Asegúrate de que la ruta a index.js sea absoluta y correcta
- Revisa los registros de Claude Desktop:
-
Errores de autenticación:
- Verifica que tus credenciales OAuth sean correctas
- Comprueba si el token de actualización es válido
- Asegúrate de que los alcances requeridos estén habilitados
-
Problemas de conexión del servidor:
- Comprueba si el servidor se compiló correctamente
- Verifica los permisos de archivo en build/index.js (debe ser 755)
- Intenta ejecutar el servidor directamente:
node /path/to/build/index.js
Ver registros
Para ver los registros del servidor:
# For MacOS/Linux:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
# For Windows:
Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20
Variables de entorno
Si recibes errores de variables de entorno, verifica cada una:
- GOOGLE_CLIENT_ID: Debe comenzar con algo como "123456789-..."
- GOOGLE_CLIENT_SECRET: Generalmente termina en ".apps.googleusercontent.com"
- GOOGLE_REDIRECT_URI: Debe ser "http://localhost"
- GOOGLE_REFRESH_TOKEN: Una cadena larga que no expira
Consideraciones de seguridad
- Mantén tus credenciales OAuth seguras
- No subas credenciales al control de versiones
- Usa variables de entorno para datos sensibles
- Rota los tokens de actualización regularmente
- Supervisa el uso de la API en la Consola de Google Cloud
Licencia
Licencia MIT - Consulta el archivo LICENSE para más detalles.
Soporte
Si encuentras algún problema:
- Revisa la sección de solución de problemas anterior
- Revisa los registros de Claude Desktop
- Abre un problema en GitHub
- Contacta al mantenedor