LanternFS
LanternFS — защищённый файловый MCP-сервер
LanternFS — это удалённый файловый MCP-сервер, который позволяет MCP-клиентам, таким как ChatGPT, получать доступ к контролируемой локальной папке.
Он защищает удалённую конечную точку MCP с помощью OAuth, поэтому публикация сервера через ngrok не означает, что любой, кто обнаружит публичный URL, сможет получить доступ к файловой системе.
Модель безопасности
ChatGPT
|
| OAuth
v
LanternFS
|
| Valid access token
v
MCP endpoint
|
v
Filesystem tools
|
v
ALLOW_ROOTSПароль используется только на этапе авторизации OAuth. Он не используется в качестве токена доступа MCP и никогда не отправляется в инструменты MCP.
Возможности
Авторизация OAuth для удалённых MCP-клиентов.
Рассчитан на OAuth-подключения MCP из ChatGPT.
Аутентификация только по паролю или опционально с именем пользователя и паролем.
Поток Authorization Code с PKCE S256.
Недолговечные токены доступа.
Долгоживущие обновляемые refresh-токены.
OAuth discovery и метаданные через MCP TypeScript SDK.
Защищённая конечная точка MCP Streamable HTTP.
Настраиваемые корневые каталоги файловой системы.
Поддержка HTTPS-туннеля ngrok.
Секреты исключены из Git.
Настройка
1. Установите Node.js
Используйте актуальную поддерживаемую версию Node.js.
node --version
npm --version2. Клонируйте репозиторий
git clone https://github.com/deviprasadshetty-dev/filesystem-mcp.git
cd filesystem-mcp
npm install3. Создайте файл окружения
Скопируйте пример файла:
Copy-Item .env.example .envОткройте его:
notepad .env4. Настройте корневой каталог файловой системы
Параметр ALLOW_ROOTS определяет, к каким каталогам LanternFS может получить доступ.
Для безопасной настройки создайте отдельное рабочее пространство:
New-Item -ItemType Directory -Force D:\mcp-workspaceЗатем укажите:
ALLOW_ROOTS=D:\mcp-workspaceНе открывайте доступ ко всему диску, если вам это не нужно намеренно:
ALLOW_ROOTS=D:\OAuth управляет тем, кто может подключаться, а ALLOW_ROOTS — тем, к чему может обращаться авторизованный клиент. Используйте оба механизма.
5. Настройте пароль OAuth
Задайте надёжный пароль в файле .env:
MCP_AUTH_PASSWORD=replace-with-your-own-long-random-passwordПароль должен содержать не менее 16 символов.
При желании вы можете настроить имя пользователя:
MCP_AUTH_USERNAME=deviprasad
MCP_AUTH_PASSWORD=replace-with-your-own-long-random-passwordЕсли MCP_AUTH_USERNAME пуст, LanternFS использует страницу входа только с паролем.
Если имя пользователя настроено, должны совпадать и имя пользователя, и пароль.
Как используется пароль
Вы не вводите этот пароль в настройках MCP в ChatGPT.
При первом подключении ChatGPT запускает поток авторизации OAuth и открывает страницу входа LanternFS.
Введите те же учётные данные, которые вы указали в .env:
Username: deviprasad
Password: ********
[ Authorize ]После успешной авторизации ChatGPT получает код авторизации OAuth и обменивает его на токен доступа и refresh-токен.
Пароль не отправляется в /mcp.
6. Настройте ngrok
Для доступа ChatGPT к MCP-серверу LanternFS необходим публичный HTTPS-URL.
Проект может использовать ngrok authtoken из любого из этих источников:
Рекомендуемый способ: локальная конфигурация ngrok
Выполните обычную аутентификацию ngrok на вашей машине с помощью CLI ngrok и храните токен в собственной конфигурации ngrok.
Например:
ngrok config add-authtoken YOUR_NGROK_TOKENЕсли ngrok уже настроен локально, добавлять токен в .env не нужно.
Альтернатива: файл .token
LanternFS также поддерживает локальный файл .token, содержащий только ngrok authtoken:
YOUR_NGROK_TOKENФайл .token игнорируется Git.
Альтернатива: переменная окружения
Вы также можете указать:
NGROK_AUTHTOKEN=YOUR_NGROK_TOKENЭто необязательно. Не добавляйте её в .env, если вы специально не хотите, чтобы LanternFS получал токен из переменной окружения.
Настройка домена ngrok
Для стабильного URL задайте свой домен ngrok:
NGROK_DOMAIN=your-domain.ngrok-free.appЕсли NGROK_DOMAIN пуст, ngrok может использовать временный URL, если это поддерживается вашей учётной записью и конфигурацией. Стабильный домен рекомендуется для постоянного MCP-подключения ChatGPT.
7. Пример .env
Рекомендуемая конфигурация выглядит так:
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-passwordОбратите внимание, что NGROK_AUTHTOKEN здесь не требуется, если ngrok уже аутентифицирован локально.
Никогда не коммитьте .env и .token.
Запуск LanternFS
Сначала проверьте проект:
npm run build
npm testЗатем запустите сервер:
npm startСервер запускает локальный HTTP-сервис MCP и создаёт HTTPS-туннель ngrok.
В консоль выводится публичный URL.
Держите процесс запущенным, пока ChatGPT требуется MCP-подключение.
Рекомендуемое описание сервера для MCP-клиента
При добавлении LanternFS в MCP-клиент используйте следующее описание, чтобы клиент знал, когда использовать этот сервер:
LanternFS предоставляет доступ к моей локальной файловой системе и файлам проекта. Используйте этот MCP всякий раз, когда задача связана с файлами, папками, исходным кодом, репозиториями, документами или другими данными, которые могут находиться на моём локальном компьютере. Если нужны файлы доступны локально, предпочитайте LanternFS, а не догадки или попытки попросить вставить содержимое файлов. Не используйте его для информации, для которой не требуется доступ к моей локальной файловой системе.
Это описание предназначено для описания сервера MCP-клиента или руководства по использованию инструментов. Оно сообщает клиенту, что для задач с локальными файлами следует предпочесть LanternFS, но не использовать его для общих знаний или веб-задач.
Подключение к ChatGPT
Запустите LanternFS с помощью
npm start.Скопируйте публичный HTTPS MCP-URL, выведенный в консоль.
Добавьте удалённый MCP-компенсатор в ChatGPT.
Выберите
OAuthв качестве метода аутентификации.Введите URL MCP LanternFS.
ChatGPT выполнит OAuth discovery.
В вашем браузере откроется страница авторизации LanernFS.
Введите имя пользователя и пароль из
.env.Нажмите
Authorize.ChatGPT завершенит поток OAuth и подключается к конечной точке MCP.
Пароль потребуется только тогда, когда потребуется новая авторизация.
Постоянное подключение
LanternFS не использует постоянный токен доступа.
Текущая реализация использует:
Токены доступа, истекающие через короткое время.
Долгоживущие refresh-токены, которые позволяют клиенту получать новые токены доступа.
Ротацию refresh-токенов при использовании refresh-токена.
Настроенный пароль, только для первичной авторизации.
Это позволяет ChatGPT оставаться авторизованным без ввода пароля каждый раз и при этом избегать постоянного токена доступа к файловой системе.
Удаление .oauth-state.json сбрасывает локально сохранённое состояние OAuth и требует от клиента повторной авторизации.
Конечные точки OAuth
Беспеки LanternFS реализует интерфейсы авторизации, предоставляемые установленным MCP TypeScript SDK.
Endpoint | Purpose |
| Метаданные защищённого ресурса |
| Метаданные сервера авторизации OAuth |
| Поток авторизации OAuth |
| Обмен кода авторизации и refresh-токена |
| Регистрация OAuth-клиента |
| Отзыв OAuth-токена |
| Защищённая конечная точка MCP Streamable HTTP |
Рекомендации по безопасности
Используйте надёжный пароль
Используйте уникальный случайный пароль длиной не менее 16 символов.
Например, PowerShell может сгенерировать случайные байты:
[Convert]::ToBase64String((1..48 | ForEach-Object { Get-Random -Maximum 256 }))Не копируйте пример пароля в рабочую среду.
Ограничьте доступ к файловой системе
Используйте:
ALLOW_ROOTS=D:\mcp-workspaceвместо:
ALLOW_ROOTS=D:\Защищайте секреты
Никогда не коммитьте:
.env
.token
.oauth-state.jsonПеред отправкой изменений:
git status
git diff --cachedНикогда не принуддительно добавляйте эти файлы (git add -f).
Защищайте учётную запись ngrok
Если ngrok authtoken стал известен, измените его через свою учётную запись ngrok.
Отключайте удалённый доступ, когда он не нужен
Остановка LanternFS останавливает его HTTP MCP-конечную точку и туннель ngrok.
Устранение неполадок
ChatGPT не может выполнить OAuth discovery
Проверьте, что:
LanternFS запущен.
ngrok аутентифицирован.
туннель ngrok активен.
публичный URL использует HTTPS.
NGROK_DOMAINкорректный, если вы его задали.
Пароль отвергается
Проверьте .env и перезапустите LanternFS после изменения.
Если задан MCP_AUTH_USERNAME, и имя пользователя, и пароль должны совпадать.
ChatGPT снова запрашивает авторизацию
Проверьте, что .oauth-state.json по-прежнему существует и не был удалён или заменён.
Сброс состояния OAuth намеренно требует повторной авторизации.
Путь в файловой системе недоступен
Проверьте ALLOW_ROOTS и убедитесь, что запрошенный путь находится в одном из настроенных корневых каталогов.
Разработка
npm install
npm run build
npm test
npm startnpm run build выполняет проверку типов TypeScript.
npm test запускает самопроверку файловой системы.
Ссылки
LanternFS построен на архитектуре авторизации, предоставленной MCP TypeScript SDK, и соответствующих стандартах OAuth.
Рекомендации авторизации MCP: https://modelcontextprotocol.io/specification/draft/basic/authorization
MCP TypeScript SDK: https://ts.sdk.modelcontextprotocol.io/
MCP client registration guidance: https://blog.modelcontextprotocol.io/posts/client_registration/
RFC 8414 - OAuth 2.0 Authorization Server Metadata: https://www.rfc-editor.org/rfc/rfc8414
RFC 9728 - OAuth 2.0 Protected Resource Metadata: https://www.rfc-editor.org/rfc/rfc9728
RFC 7636 - Proof Key for Code Exchange (PKCE): https://www.rfc-editor.org/rfc/rfc7636
RFC 7009 - OAuth 2.0 Token Revocation: https://www.rfc-editor.org/rfc/rfc7009
Поведение авторизации MCP может меняться по мере развития спецификации. Обновляйте MCP TypeScript SDK и при переходе на новую версию проекта проверяйте документацию по авторизации.
Лицензия
Перед публикацией LanternFS для широкого использования добавьте лицензию.
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