使用说明
MCP Filesystem Server
Сервер файлової системи та моніторингу для Model Context Protocol (MCP). Надає безпечний доступ до файлів, аналіз директорій та моніторинг ресурсів системи.
Опис
Цей сервер реалізує MCP протокол для роботи з файловою системою та системою загалом:
- 📂 Файлова система: Читання, запис, пошук, безпечне видалення файлів.
- 🛡️ Безпека: Аналіз директорій на вразливості та "сміття" (
analyze_directory_security). - 📊 Моніторинг: Перегляд використання CPU, RAM, дисків та інформації про систему.
- ⚙️ Керування: Динамічне додавання/видалення дозволених директорій під час роботи.
Встановлення
Передумови
- Python 3.11+
- uv (рекомендовано) або pip
Швидкий старт (uv)
# Клонуйте репозиторій
git clone <repository-url>
cd filesystem-mcp-server
# Встановіть залежності
uv sync
# Запустіть (без аутентифікації для локального використання)
python main.py --allow-cwd --no-auth
Використання та аргументи
Основні параметри запуску
Сервер підтримує гнучкі налаштування через аргументи командного рядка:
| Аргумент | Опис |
|---|---|
roots |
Шляхи до дозволених директорій (наприклад python main.py /path/to/dir). |
--allow-cwd |
Дозволити доступ до поточної робочої директорії. |
--no-auth |
Рекомендовано. Вимикає аутентифікацію (корисно, якщо виникають помилки з токенами). |
--transport |
Тип транспорту: stdio (за замовчуванням), http або sse. |
--host, --port |
Хост та порт для HTTP/SSE (за замовчуванням 127.0.0.1:8000). |
--persist |
Зберігати стан сервера (дозволені клієнти) між перезапусками. |
--debug |
Увімкнути детальне логування для розробки. |
Приклади запуску
- Локальний режим через STDIO (для Claude Desktop)
python main.py --allow-cwd --no-auth
- HTTP Server (для віддалених підключень)
python main.py --transport http --host 127.0.0.1 --port 8000 --persist
Доступні інструменти (Tools)
📁 Розширена робота з файлами
list_files(path)- Перегляд вмісту.list_directory_with_sizes(path)- Список файлів з їх розмірами.read_file(path)/read_multiple_files(paths)- Читання одного або кількох файлів.write_file(path, content)- Створення або перезапис файлу.move_file(source, dest)- Переміщення/перейменування.delete_file(path, confirm)- Видалення файлу. Вимагає підтвердження (confirm=Trueабо через діалог з користувачем).delete_directory(path, confirm)- Рекурсивне видалення папки.search_files(path, pattern)- Пошук за glob-шаблонами.filesystem_summary(path)- Звіт про кількість файлів та загальний розмір.
🛡️ Аналіз та AI
analyze_directory_security(path)- Сканує папку на підозрілі файли, дублі, великі файли та оцінює безпеку. Може використовувати AI для звіту.get_creative_file_description(path)- Використовує AI для опису вмісту файлу (якщо клієнт підтримує sampling).
📊 Моніторинг системи
get_system_resource_usage()- Завантаження CPU та RAM у реальному часі.get_disk_status()- Інформація про вільне місце на всіх дисках.get_system_info()- Деталі про OS, аптайм, версію ядра та хостнейм.
⚙️ Керування сервером
get_server_status()- Перевірка активного транспорту, features клієнта та поточних roots.list_allowed_roots()- Показати всі доступні папки.add_allowed_root(path)- Додати нову папку в білий список без перезапуску сервера.remove_root(path)- Забрати доступ до папки.
Налаштування MCP Клієнта (Claude Desktop / Cursor)
Рекомендована конфігурація (STDIO)
Найпростіший спосіб без проблем з портами та токенами.
{
"mcpServers": {
"filesystem": {
"command": "python",
"args": [
"absolute/path/to/main.py",
"--allow-cwd",
"--no-auth"
]
}
}
}
Не забудьте вказати повний шлях до python (наприклад .venv/Scripts/python), якщо використовуєте віртуальне середовище.
Конфігурація через HTTP (SSE)
Якщо ви запускаєте сервер окремо (python main.py --transport http --port 8000 --persist).
{
"mcpServers": {
"filesystem-http": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://127.0.0.1:8000/mcp"
]
}
}
}
Зверніть увагу на /mcp в кінці URL.
Налаштування авторизації (GitHub OAuth)
Для авторизації дивіться офіційний гайд: https://gofastmcp.com/integrations/github
Рекомендовано створити файл .env в корені сервера. config.py автоматично підтягне всі змінні.
Нюанси налаштування:
- Потрібен GitHub OAuth App з коректним callback URL згідно гайду.
- Заповніть
FASTMCP_SERVER_AUTH_GITHUB_CLIENT_IDтаFASTMCP_SERVER_AUTH_GITHUB_CLIENT_SECRETу.env. - Встановіть
FASTMCP_SERVER_AUTH_GITHUB_BASE_URLна базовий URL сервера (для локального тесту зазвичайhttp://127.0.0.1:8000). - Для персистентної авторизації потрібні
JWT_SIGNING_KEYтаSTORAGE_ENCRYPTION_KEYі запуск з--persist. - Якщо використовуєте Redis( не стабільне, не протестовано), задайте параметром
--redisі задайREDIS_HOST/REDIS_PORT. - Для локального dev можна( і бажано ) запускати з
--no-auth, якщо виникають помилки токенів.
Вирішення проблем
🔑 Проблеми з аутентифікацією (Invalid Token / Client Not Registered)
Якщо ви бачите помилки invalid_token або Client Not Registered:
- Зупиніть сервер.
- Запустіть його з прапорцем
--no-auth. - Оновіть конфіг клієнта, щоб він не очікував auth-flow.
Аутентифікація через GitHub зараз знаходиться в стадії активної розробки. Для стабільної роботи локально рекомендується її вимикати.
🌐 Помилка "Connection Refused" або 404
Переконайтеся, що ви вказуєте правильний порт і шлях. За замовчуванням сервер слухає порт 8000 і шлях /mcp.
- Неправильно:
http://127.0.0.1/ - Правильно:
http://127.0.0.1:8000/mcp
🔒 Access Denied / Path not allowed
Сервер дозволяє доступ тільки до тек, вказаних при запуску або доданих динамічно.
- Використовуйте
list_allowed_roots(), щоб побачити, куди є доступ. - Використовуйте
add_allowed_root("/path/to/dir"), щоб надати доступ. } } }
### Перевірка конфігурації
Після налаштування mcp.json:
1. **Перезапустіть MCP клієнт** (Claude Desktop, Cursor тощо)
2. **Перевірте підключення:**
- Використайте інструмент `get_client_features()` для перевірки можливостей
- Викличте `get_allowed_roots()` для перевірки доступних директорій
3. **Протестуйте базові операції:**
- `list_files(".")` - перегляд файлів
- `read_file("README.md")` - читання файлу
### Налагодження конфігурації
#### Проблема: Сервер не запускається
**Рішення:**
- Перевірте правильність шляхів в `command` та `args`
- Переконайтеся, що Python та залежності встановлені
- Перевірте права доступу до файлів
#### Проблема: "No allowed roots specified"
**Рішення:**
- Додайте директорії в `args` або використайте `--allow-cwd`
- Переконайтеся, що шляхи існують і доступні
#### Проблема: "Path is not within allowed roots"
**Рішення:**
- Перевірте список дозволених коренів через `get_allowed_roots()`
- Додайте необхідні директорії в конфігурацію
## Підтримка
Якщо у вас виникли питання або проблеми:
1. Перевірте розділ "Вирішення проблем" вище
2. Відвідайте [документацію FastMCP](https://gofastmcp.com) для детальної інформації
3. Створіть issue в репозиторії
---
**Примітка:** Цей сервер призначений для використання в безпечному середовищі. Завжди перевіряйте права доступу та обмежуйте доступ тільки до необхідних директорій.