Навчальний курсовий MCP-проєкт: агент, який працює з файлами в одній заданій
локальній папці — шукає за змістом (RAG), читає, звітує про власний стан.
Клієнт — Claude Desktop (MCP-конектор) або власний agent_loop.py.
Claude (LLM) ↔ MCP-сервер (server.py, FastMCP) ↔ локальна папка (файли) +
Voyage AI (ембединги) + Chroma (векторна БД, локальна). Усі операції з
файлами проходять через sandbox-перевірку кореневої папки. Повна архітектурна
схема — окремо, у Draw.io (додається до захисту).
| Джерело | Роль | Де живе |
|---|---|---|
Локальна папка (AGENT_ROOT_DIR) |
Основні дані користувача (txt, md, pdf, docx, xml, xlsx, xls) | На диску користувача |
Voyage AI (voyage-4-lite) |
Ембединги для семантичного пошуку | Зовнішній API |
| Chroma | Векторна БД для RAG-пошуку | Локально, .chroma_index/ |
cd C:\Home_agen_LLM
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txtСтвори .env:
ANTHROPIC_API_KEY=<потрібен лише для agent_loop.py, не для Claude Desktop> VOYAGE_API_KEY=<з voyageai.com> AGENT_ROOT_DIR=C:\Home_agen_LLM\test_data
- Settings → Developer → Edit Config у Claude Desktop.
- Додай у
claude_desktop_config.json:
{
"mcpServers": {
"home-file-agent": {
"command": "C:\\Home_agen_LLM\\venv\\Scripts\\python.exe",
"args": ["C:\\Home_agen_LLM\\server.py"],
"env": {
"AGENT_ROOT_DIR": "C:\\Home_agen_LLM\\test_data",
"VOYAGE_API_KEY": "<ключ>"
}
}
}
}- Повний вихід із Claude Desktop і повторний запуск.
- У чаті: "Проіндексуй мою папку", потім будь-яке питання по вмісту.
python agent_loop.pyПотребує ANTHROPIC_API_KEY в .env.
list_folder(path="")— список файлів/підпапокread_file(path)— вміст файлу (txt, md, pdf, docx, xml, xlsx, xls)reindex()— перебудова RAG-індексу (запускати після зміни файлів)search_files(query, top_k=5)— семантичний пошукstatus()— стан індексу (для моніторингу)
pip install pytest pytest-asyncio ruff
pytest tests/ -v
ruff check .docker build -t home-file-agent .
docker run -i -p 8080:8080 `
-e VOYAGE_API_KEY=<ключ> `
-e AGENT_ROOT_DIR=/data `
-v C:\Home_agen_LLM\test_data:/data `
home-file-agentagent.log— структуровані логи (без вмісту файлів)python check_health.py— перевірка свіжості індексу й аномалій у логах (exit code 0/1)- tool
status()— те саме, але прямо з чату
Детально — у PROMPT_BOOK.md. Коротко: read-only, sandbox на кореневу папку,
allowlist розширень, ліміт розміру файлу, rate limiting, приховані файли
недоступні, логи без вмісту.