Skip to main content
Glama

MCP HTTP TAVILY DATE OAUTH

by growley
DIRECTORY_ACCESS_GUIDE.md5.25 kB
# Guía de Acceso al Directorio E:\VentanaExterior ## Descripción Este servidor MCP ahora incluye funcionalidades para acceder de forma segura al directorio `E:\VentanaExterior` mediante autenticación OAuth2 con Google o GitHub. ## Características de Seguridad - ✅ **Autenticación OAuth2 requerida** (Google/GitHub) - ✅ **Control de acceso basado en emails/dominios** - ✅ **Validación de paths** para prevenir directory traversal - ✅ **Límites de tamaño** para archivos (1MB por defecto) - ✅ **Solo lectura** de archivos de texto - ✅ **Logging completo** de todas las operaciones ## Herramientas Disponibles ### 1. `directory_list` Lista el contenido de un directorio. **Parámetros:** - `path` (opcional): Ruta relativa dentro del directorio protegido **Ejemplo:** ```json { "jsonrpc": "2.0", "id": "1", "method": "tools/call", "params": { "name": "directory_list", "arguments": { "path": "subdirectorio" } } } ``` ### 2. `file_read` Lee el contenido de un archivo de texto. **Parámetros:** - `path` (requerido): Ruta relativa del archivo - `max_size` (opcional): Tamaño máximo en bytes (por defecto 1MB) **Ejemplo:** ```json { "jsonrpc": "2.0", "id": "1", "method": "tools/call", "params": { "name": "file_read", "arguments": { "path": "documento.txt", "max_size": 2097152 } } } ``` ### 3. `file_info` Obtiene información detallada de un archivo o directorio. **Parámetros:** - `path` (requerido): Ruta relativa del archivo o directorio **Ejemplo:** ```json { "jsonrpc": "2.0", "id": "1", "method": "tools/call", "params": { "name": "file_info", "arguments": { "path": "archivo.txt" } } } ``` ## Proceso de Autenticación ### Paso 1: Obtener Token de Acceso 1. Ve a `http://localhost:8001/login` 2. Selecciona un proveedor (Google o GitHub) 3. Completa el proceso de autenticación OAuth2 4. Copia el `access_token` de la URL de éxito ### Paso 2: Usar el Token Incluye el token en el header `Authorization`: ``` Authorization: Bearer <tu_access_token> ``` ## Ejemplos de Uso ### Con cURL ```bash # Listar directorio raíz curl -X POST http://localhost:8001/mcp \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <tu_token>" \ -d '{ "jsonrpc": "2.0", "id": "1", "method": "tools/call", "params": { "name": "directory_list", "arguments": {} } }' ``` ### Con Python ```python import requests # Configurar base_url = "http://localhost:8001" access_token = "tu_access_token_here" # Listar directorio response = requests.post( f"{base_url}/mcp", json={ "jsonrpc": "2.0", "id": "1", "method": "tools/call", "params": { "name": "directory_list", "arguments": {"path": ""} } }, headers={ "Content-Type": "application/json", "Authorization": f"Bearer {access_token}" } ) if response.status_code == 200: result = response.json() print(result["result"]["content"][0]["text"]) ``` ## Configuración de Acceso ### Variables de Entorno Configura en tu archivo `.env`: ```env # Emails específicos permitidos (separados por comas) ALLOWED_EMAILS=usuario1@example.com,usuario2@example.com # Dominios permitidos (separados por comas) ALLOWED_DOMAINS=gmail.com,github.com # Requerir aprobación manual para nuevos usuarios REQUIRE_MANUAL_APPROVAL=false ``` ### Sin Restricciones Si no configuras `ALLOWED_EMAILS` ni `ALLOWED_DOMAINS`, todos los usuarios autenticados tendrán acceso. ## Limitaciones 1. **Solo lectura**: No se pueden modificar archivos 2. **Solo texto**: Los archivos binarios no se pueden leer 3. **Tamaño limitado**: Por defecto 1MB por archivo 4. **Un directorio**: Solo acceso a `E:\VentanaExterior` y subdirectorios 5. **Autenticación requerida**: Todos los accesos requieren token válido ## Pruebas ### Cliente de Prueba Usa el script incluido: ```bash # Sin autenticación (debería fallar) python test_directory_access.py # Con token de autenticación python test_directory_access.py <tu_access_token> ``` ### Verificación Manual 1. Inicia el servidor: `python src/server.py` 2. Ve a `http://localhost:8001/login` 3. Autentícate con Google/GitHub 4. Usa las herramientas desde la documentación de la API en `http://localhost:8001/docs` ## Solución de Problemas ### Error 401 - Unauthorized - Verifica que tienes un token válido - Asegúrate de incluir `Bearer ` antes del token - El token puede haber expirado (60 minutos por defecto) ### Error 403 - Forbidden - Verifica que tu email está en la lista permitida - Contacta al administrador si necesitas acceso ### Error - Acceso denegado - path fuera del directorio autorizado - Solo puedes acceder a `E:\VentanaExterior` y sus subdirectorios - Verifica que el path no contiene `..` o caracteres especiales ### Error - El archivo es demasiado grande - Aumenta el parámetro `max_size` o usa archivos más pequeños - Por defecto el límite es 1MB ## Logs Todos los accesos se registran en los logs del servidor. Busca mensajes como: - `Herramienta directory_list llamada` - `Usuario autenticado: usuario@email.com` - `directory_list completada: X elementos`

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/growley/MCP_TAVILI_DATE_OAUT'

If you have feedback or need assistance with the MCP directory API, please join our Discord server