LanternFS
LanternFS - MCP de sistema de archivos seguro
LanternFS es un servidor MCP de sistema de archivos remoto que permite a clientes MCP como ChatGPT acceder a un directorio local controlado.
Protege el endpoint MCP remoto con OAuth, de modo que exponer el servidor a través de ngrok no significa que cualquiera que descubra la URL pública pueda acceder al sistema de archivos.
Modelo de seguridad
ChatGPT
|
| OAuth
v
LanternFS
|
| Valid access token
v
MCP endpoint
|
v
Filesystem tools
|
v
ALLOW_ROOTSLa contraseña se utiliza únicamente durante el paso de autorización OAuth. No se utiliza como token de acceso MCP y nunca se envía a las herramientas MCP.
Características
Autorización OAuth para clientes MCP remotos.
Diseñado para conexiones MCP OAuth de ChatGPT.
Autenticación solo con contraseña o con usuario y contraseña opcionales.
Flujo de código de autorización con PKCE S256.
Tokens de acceso de corta duración.
Tokens de actualización rotatorios de larga duración.
Descubrimiento y metadatos OAuth a través del SDK de TypeScript de MCP.
Endpoint MCP HTTP transmitible protegido.
Raíces del sistema de archivos configurables.
Soporte de túnel HTTPS de ngrok.
Secretos excluidos de Git.
Configuración
1. Instalar Node.js
Usa una versión actual y compatible de Node.js.
node --version
npm --version2. Clonar el repositorio
git clone https://github.com/deviprasadshetty-dev/filesystem-mcp.git
cd filesystem-mcp
npm install3. Crear el archivo de entorno
Copia el archivo de ejemplo:
Copy-Item .env.example .envÁbrelo:
notepad .env4. Configurar la raíz del sistema de archivos
La configuración ALLOW_ROOTS controla qué directorios puede acceder LanternFS.
Para una configuración segura, crea un espacio de trabajo dedicado:
New-Item -ItemType Directory -Force D:\mcp-workspaceLuego usa:
ALLOW_ROOTS=D:\mcp-workspaceEvita exponer una unidad completa a menos que la necesites intencionadamente:
ALLOW_ROOTS=D:\OAuth controla quién puede conectarse, mientras que ALLOW_ROOTS controla a qué puede acceder un cliente autorizado. Debes usar ambos.
5. Configurar la contraseña OAuth
Establece una contraseña segura en .env:
MCP_AUTH_PASSWORD=replace-with-your-own-long-random-passwordLa contraseña debe tener al menos 16 caracteres.
Opcionalmente, puedes configurar un usuario:
MCP_AUTH_USERNAME=deviprasad
MCP_AUTH_PASSWORD=replace-with-your-own-long-random-passwordSi MCP_AUTH_USERNAME está vacío, LanternFS usa una página de inicio de sesión solo con contraseña.
Si se configura un usuario, tanto el usuario como la contraseña deben coincidir.
Cómo se utiliza la contraseña
No introduces esta contraseña en la configuración MCP de ChatGPT.
Cuando ChatGPT se conecta por primera vez, inicia el flujo de autorización OAuth y abre la página de inicio de sesión de LanternFS.
Introduce las mismas credenciales que configuraste en .env:
Username: deviprasad
Password: ********
[ Authorize ]Tras una autorización exitosa, ChatGPT recibe un código de autorización OAuth y lo canjea por un token de acceso y un token de actualización.
La contraseña no se envía a /mcp.
6. Configurar ngrok
LanternFS necesita una URL pública HTTPS para que ChatGPT pueda alcanzar el servidor MCP.
El proyecto puede usar un authtoken de ngrok desde cualquiera de estas ubicaciones:
Recomendado: configuración local de ngrok
Autentica ngrok normalmente en tu máquina usando la CLI de ngrok y mantén el token en la propia configuración de ngrok.
Por ejemplo:
ngrok config add-authtoken YOUR_NGROK_TOKENNo necesitas poner el token de ngrok en .env si ya está configurado localmente.
Alternativa: archivo .token
LanternFS también admite un archivo local .token que contiene solo el authtoken de ngrok:
YOUR_NGROK_TOKENEl archivo .token está ignorado por Git.
Alternativa: variable de entorno
También puedes proporcionar:
NGROK_AUTHTOKEN=YOUR_NGROK_TOKENEsto es opcional. No lo añadas a .env a menos que quieras específicamente que LanternFS reciba el token a través del entorno.
Configurar el dominio de ngrok
Para una URL estable, configura tu dominio de ngrok:
NGROK_DOMAIN=your-domain.ngrok-free.appSi NGROK_DOMAIN está vacío, ngrok puede usar una URL efímera cuando tu cuenta/configuración lo admita. Se recomienda un dominio estable para una conexión MCP persistente con ChatGPT.
7. Ejemplo de .env
Una configuración recomendada tiene este aspecto:
PORT=3000
ALLOW_ROOTS=D:\mcp-workspace
NGROK_DOMAIN=your-domain.ngrok-free.app
MCP_AUTH_USERNAME=deviprasad
MCP_AUTH_PASSWORD=replace-with-your-own-long-random-passwordObserva que NGROK_AUTHTOKEN no es necesario aquí cuando ngrok ya está autenticado localmente.
Nunca hagas commit de .env o .token.
Ejecutar LanternFS
Revisa el proyecto primero:
npm run build
npm testDespués inicia el servidor:
npm startEl servidor inicia el servicio HTTP MCP local y crea el túnel HTTPS de ngrok.
La consola imprime la URL pública.
Mantén el proceso en ejecución mientras ChatGPT necesite la conexión MCP.
Descripción recomendada para el cliente MCP
Al añadir LanternFS a un cliente MCP, usa la siguiente descripción para que el cliente sepa cuándo debe usar este servidor:
LanternFS proporciona acceso a mi sistema de archivos local y archivos de proyecto. Usa este MCP siempre que una tarea implique archivos, carpetas, código fuente, repositorios, documentos u otros datos que puedan existir en mi ordenador local. Prefiere LanternFS antes que adivinar o pedirme que pegue el contenido de los archivos cuando los archivos necesarios estén disponibles localmente. No lo uses para información que no requiera acceso a mi sistema de archivos local.
Esta descripción está pensada para la descripción del servidor del cliente MCP o para la guía de uso de las herramientas. Le indica al cliente que prefiera LanternFS para tareas con archivos locales, evitando a la vez. Uso innecesario para conocimiento general o tareas basadas en la web.
Conectar a ChatGPT
Inicia LanternFS con
npm start.Copia la URL MCP pública HTTPS que se imprime en la consola.
Añade un conector MCP remoto en ChatGPT.
Selecciona
OAuthcomo método de autenticación.Introduce la URL MCP de LanternFS.
ChatGPT realiza el descubrimiento OAuth.
Tu navegador abre la página de autorización de LanternFS.
Introduce el usuario y la contraseña de
.env.Haz clic en
Authorize.ChatGPT completa el flujo OAuth y se conecta a
/mcp.
Solo necesitarás introducir la contraseña cuando se requiera una nueva autorización.
Conexión persistente
LanternFS no usa un token de acceso permanente.
La implementación actual utiliza:
Tokens de acceso que caducan después de un corto período de tiempo.
Tokens de actualización de larga duración que permiten al cliente obtener nuevos tokens de acceso.
Rotación del token de actualización (refresco) cuando se usa uno.
La contraseña configurada solo para la autorización inicial.
Esto permite que ChatGPT siga autorizado sin pedir la contraseña cada vez, a la vez que evita un token de acceso permanente al sistema de archivos.
Eliminar .oauth-state.json elimina el estado OAuth almacenado localmente y requiere que los clientes se autor.end de nuevo.
Endpoints OAuth
LanternFS usa las interfaces de autorización proporcionadas por el SDK de TypeScript de MCP instalado.
Endpoint | Propósito |
| Metadatos del recurso protegido |
| Metadatos del servidor de autorización OAuth |
| Flujo de autorización OAuth |
| Intercambio del código de autorización y token de actualización |
| Registro del cliente OAuth |
| Revocación de token OAuth |
| Endpoint MCP HTTP transmitible protegido |
Recomendaciones de seguridad
Usar una contraseña segura
Usa una contraseña única y aleatoria y al menos 16 caracteres.
Por ejemplo, PowerShell puede generar bytes aleatorios:
[Convert]::ToBase64String((1..48 | ForEach-Object { Get-Random -Maximum 256 }))No copies una contraseña de ejemplo para producción.
Restringir el sistema de archivos
Prefiere:
ALLOW_ROOTS=D:\mcp-workspacesobre:
ALLOW_ROOTS=D:\Proteger los secretos
Nunca hagas commit de:
.env
.token
.oauth-state.jsonAntes de hacer push de los cambios:
git status
git diff --cachedNunca fuerces la adición de estos archivos.
Proteger tu cuenta de ngrok
Si se expone un authtoken de, debes rotarlo a través de tu cuenta de ngrok.
Detén el acceso remoto cuando no sea necesario
Detener LanternFS detiene el endpoint HTTP MCP y el túnel de ngrok.
Solución de problemas
ChatGPT no puede completar el descubrimiento OAuth
Comprueba que:
Está ejecutando LanternFS.
ngrok está autenticado.
El túnel ngrok esté activo.
La URL pública use HTTPS.
NGROK_DOMAINes correcto si configuraste uno.
Se rechaza la contraseña
Revisa .env y reinicia LanternFS después de cambiarla.
Si hay un valor de MCP_AUTH_USERNAME, ambos usuario y contraseña deben coincidir.
ChatGPT pide autorización de nuevo
Verifica que .oauth-state.json exista y no haya sido eliminado o reemplazado.
Un restablecimiento del estado OAuth deliberadamente solicita autor otra vez.
No está disponible una ruta del sistema de archivos
Revisa ALLOW_ROOTS y asegúrate de que la ruta solicitada esté dentro de una de las raíces configuradas.
Desarrollo
npm install
npm run build
npm test
npm startnpm run build realiza una comprobación de tipos de TypeScript.
npm test ejecuta un autoimpr en el sistema de archivos.
Referencias
LanternFS se basa en la arquitectura de autorización proporcionada por el SDK de TypeScript del Protocolo Contexto de Modelo y en los estándares de OAuth relevantes.
Especificación de autorización de MCP: https://modelcontextprotocol.io/specification/draft/basic/authorization
MCP TypeScript SDK: https://ts.sdk.modelcontextprotocol.io/
Guía para el registro de clientes de MCP: https://blog.modelcontextprotocol.io/posts/client_registration/
RFC 8414 - Metadatos del servidor (Authorization) de OAuth 2.0: https://www.rfc-editor.org/rfc/rfc8414
RFC 9728 - Metadatos del recurso class protegido de OAuth 2.0: https://www.rfc-editor.org/rfc/rfc9728
RFC 7636 - Clave de prueba para intercambio de código (PKCE): https://www.rfc-editor.org/rfc/rfc7636
RFC 7009 - Revocación de tokens OAuth 2.0: <https://www.rfc-editor.org/rfc/}
Es importante mantenerse actualizado: el comportamiento de autorización de MCP puede cambiard the specification evolves.
Licencia
Añade un licencia antes de publicar LanternFS para su reutilización generalizada.
This server cannot be installed
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 Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
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/deviprasadshetty-dev/filesystem-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server