MCP-сервер для поиска и скачивания книг с Flibusta через любой AI-клиент с поддержкой MCP
Two tools with complete schemas and descriptions in Russian. Both tools have proper Zod schema definitions with type constraints (min/max for limit, int/positive for id). Descriptions are moderately detailed (100-200 chars) and explain purpose and return values. However, parameter descriptions lack actionable format guidance (e.g., no enum for format values in download_book despite listing 'fb2, epub, mobi, pdf, txt, rtf, html'). Error handling is present but generic. No tool annotations (readOnlyHint/destructiveHint). Output structure is text-only rather than structured JSON, limiting downstream tool chaining.
Скачать книгу с Flibusta в заданном формате. Файл сохраняется в папку загрузок (FLIBUSTA_DOWNLOAD_DIR, по умолчанию ~/Downloads), возвращается абсолютный путь. id берётся из результата search_books; format — один из доступных форматов (например fb2, epub, mobi, pdf).
Искать книги на Flibusta по названию и/или автору. Возвращает ранжированный список: id, название, автор, доступные форматы, размер, число скачиваний. id и формат понадобятся для download_book.
download_book 'format' parameter lacks enum constraint. Description lists 'fb2, epub, mobi, pdf, txt, rtf, html' as examples, but LLMs may hallucinate invalid formats. Should declare as enum or validate with clear error message.
Both tools return plain text responses instead of structured JSON. Downstream tool chaining is impossible, agent cannot extract book IDs or file paths programmatically. Should return {books: [{id, title, author, formats, size, downloads}]} and {path, size, format}.
No tool annotations. download_book is destructive (WRITE risk noted) but lacks destructiveHint. search_books is read-only but lacks readOnlyHint. Agents cannot infer safety properties without explicit annotations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Error messages are generic ('Не удалось скачать книгу...') and do not guide recovery. Should include: was the ID invalid? Format unsupported? Network timeout? Each error type requires different agent action.
search_books returns up to 20 results (limit max=20) but no pagination support. If user wants results 21-40, tool cannot provide them. Should add offset/page parameter and return total_count.