vpf08-library-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vpf08-library-mcpfind me books by J.K. Rowling"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
📚 Библиотека — MCP-проект
MCP-проект для управления каталогом книг, состоящий из MCP-сервера, CLI-клиента и Telegram-бота.
📋 Содержание
Related MCP server: MCP Open Library & File Search Server
📁 Структура проекта
├── .env.example # Пример конфигурации
├── .gitignore # Игнорируемые файлы
├── requirements.txt # Зависимости Python
├── README.md # Этот файл
├── TEST_RESULTS.md # Результаты тестирования
├── TEST_PLAN_v1.2.0.md # План тестирования LLM-контекста (v1.2.0)
├── ProgressOfWork.md # Журнал работы
├── mcp_server/
│ ├── __init__.py
│ ├── server.py # FastAPI сервер
│ ├── db.py # Работа с SQLite
│ ├── tools.py # MCP-инструменты
│ └── library.db # База данных (создаётся автоматически)
├── cli_client.py # CLI-клиент для тестирования
└── telegram_bot/
├── __init__.py
├── bot.py # Telegram-бот (словарь команд + state machine)
├── llm.py # LLM fallback (GPT с историей диалога)
├── config.py # Загрузка .env
└── mcp_client.py # Вызов MCP-инструментов🛠 Установка
Создайте виртуальное окружение:
python -m venv venvАктивируйте виртуальное окружение:
Windows:
venv\Scripts\activateLinux/macOS:
source venv/bin/activate
Установите зависимости:
pip install -r requirements.txtНастройте переменные окружения:
copy .env.example .env # Windows cp .env.example .env # Linux/macOSОтредактируйте
.env, указав свои значения API-ключей и токена бота.
🚀 Запуск
1. MCP-сервер
python mcp_server/server.pyСервер запускается на http://localhost:8000. Логи записываются в mcp_server/library.log.
2. CLI-клиент
python cli_client.pyКлиент подключается к запущенному MCP-серверу и работает через интерактивное нумерованное меню.
3. Telegram-бот
python telegram_bot/bot.pyБот запускается и ожидает сообщения от пользователей.
⚠️ Если бот не запускается с ошибкой
Read timed out— Telegram API недоступен в вашей сети. Укажите прокси в.env:TELEGRAM_PROXY_URL=http://127.0.0.1:8080Также можно увеличить таймаут:
TELEGRAM_TIMEOUT=60
🧰 MCP-инструменты
Инструмент | Описание | Аргументы |
| Возвращает все книги | нет |
| Поиск по названию |
|
| Поиск по автору |
|
| Поиск по жанру |
|
| Добавить книгу |
|
| Безопасный калькулятор |
|
💻 CLI-клиент
CLI-клиент использует структурированное нумерованное меню для взаимодействия с сервером.
Возможности:
📚 Показать все книги — каталог с пагинацией
🔍 Найти книгу по названию — поиск по ключевым словам
👤 Найти книгу по автору — поиск по имени автора
📖 Найти книгу по жанру — выбор из списка доступных жанров
➕ Добавить книгу — пошаговый ввод (название → автор → жанр → год)
🧮 Калькулятор — вычисление математических выражений
📊 Статистика — общее количество книг и жанров
🧹 Очистка БД — удаление всех книг (с подтверждением)
Пример работы:
📚 Библиотека — CLI клиент
Выберите действие:
1. 📚 Показать все книги
2. 🔍 Найти книгу по названию
3. 👤 Найти книгу по автору
4. 📖 Найти книгу по жанру
5. ➕ Добавить книгу
6. 🧮 Калькулятор
7. 📊 Статистика
8. 🧹 Очистить БД
0. Выйти
📖 > 1🤖 Telegram-бот
Telegram-бот использует гибридный подход:
Детерминированные команды — словарь точных команд (быстро, без API-запросов)
LLM fallback — если команда не распознана, фраза отправляется в GPT вместе с историей диалога (понимает свободную речь и контекст)
Память диалога — бот помнит последние 10 сообщений, умеет показывать историю (
/history) и повторять последнее действие («ещё раз»)
Возможности:
📚 Показать все книги — текстовый список
🔍 Найти книгу по названию — с обложкой (из Open Library API)
👤 Найти книгу по автору — текстовый список
📖 Найти книгу по жанру — выбор из списка жанров или ввод текстом
➕ Добавить книгу — пошаговый ввод (название → автор → жанр с кнопками → год)
🧮 Калькулятор — вычисление выражений
🗑️ Очистить историю — сброс состояния
🚪 Выйти — остановка бота
Приветствие бота:
👋 Привет! Я бот для работы с базой данных книг.
Я могу помочь Вам:
▪️ Показать все книги
▪️ Найти книгу по названию
▪️ Найти книгу по автору
▪️ Найти книгу по жанру
▪️ Добавить новую книгу
▪️ Выполнить математические вычисления
Просто напишите мне, что Вы хотите сделать, например:
▪️ /all_books или "покажи все книги"
▪️ /find_book или "найди книгу по названию"
▪️ /find_author или "найди книгу по автору"
▪️ /find_genre или "найди книгу по жанру"
▪️ /add_book или "добавь новую книгу"
▪️ /calc 10*5 или "сколько будет 10*5"Команды бота:
Команда | Описание | Пример использования |
| Начать новый диалог, показать главное меню |
|
| Показать справку по всем командам |
|
| Показать историю диалога (последние 10 сообщений) |
|
| Очистить историю диалога, сбросить состояние |
|
| Остановить бота |
|
| Показать все книги из каталога |
|
| Поиск книги по названию |
|
| Поиск книг по автору |
|
| Поиск книг по жанру |
|
| Добавить новую книгу в каталог |
|
| Математический калькулятор |
|
Как работают команды:
📚 Просмотр каталога:
\/all_books— мгновенно показывает список всех книг
🔍 Поиск:
\/find_book→ бот просит ввести название → показывает результат с обложкой\/find_author→ бот просит ввести имя автора → показывает список\/find_genre→ бот показывает кнопки с жанрами из БД → выбираете жанр
➕ Добавление книги:
\/add_book→ пошаговый ввод: название → автор → жанр (кнопки) → год (опционально)Или одной фразой через LLM:
добавь книгу Метро 2033, Глуховский, фантастика, 2002
🧮 Калькулятор:
\/calc→ введите математическое выражение (например:10 * 5 + 3)Или сразу:
сколько будет 2+2*3,calc 10*5, просто2+2*3
📜 История диалога:
\/history— показать последние 10 сообщенийещё раз/повтори— повторить последнее действие
⚙️ Управление:
\/clear— сбросить текущую операцию\/exit— завершить работу бота\/help— показать полную справку
Свободная речь (LLM):
Если фраза не входит в словарь команд, бот отправляет её в GPT вместе с историей диалога. LLM возвращает JSON с действием, бот выполняет его через MCP-инструменты:
Запрос | Что делает LLM |
«что есть у Пушкина?» | → поиск по автору «Пушкин» |
«найди фантастику» | → поиск по жанру «Sci-Fi» (LLM знает жанры из БД!) |
«найди Войну и мир» | → поиск по названию «Война и мир» (нормализует падежи) |
«а ещё раз покажи» | → повторяет предыдущий запрос из контекста |
«добавь Мастер и Маргарита, Булгаков, роман» | → добавляет книгу одной фразой |
«что ты умеешь?» | → отвечает текстом о возможностях |
💡 Известные команды обрабатываются словарём без обращения к LLM — мгновенно и без расхода API.
Текстовые команды:
Помимо команд с /, бот понимает обычные текстовые команды на русском и английском:
Действие | Текстовые команды |
📚 Все книги |
|
🔍 Найти по названию |
|
👤 Найти по автору |
|
📖 Найти по жанру |
|
➕ Добавить книгу |
|
🧮 Калькулятор |
|
🗑️ Очистить |
|
🚪 Выйти |
|
Как работает:
Пользователь получает главное меню при
/startКоманды из словаря обрабатываются мгновенно (без LLM)
Свободные фразы отправляются в LLM с историей диалога (контекст помнит 10 сообщений)
При поиске по названию бот показывает обложку книги (через Open Library API)
Если обложка не найдена — показывается дефолтная обложка с emoji 📕
Состояние диалога отслеживается для многошаговых операций (добавление книги)
Поиск в БД не зависит от регистра и падежей («войну» найдёт «Война»)
Все команды регистрируются в Telegram автоматически при запуске (
set_my_commands)
🔌 API Endpoints
Метод | Endpoint | Описание |
|
| Проверка работоспособности |
|
| Список всех книг |
|
| Поиск по названию |
|
| Поиск по автору |
|
| Поиск по жанру |
|
| Добавить книгу (JSON) |
|
| Калькулятор (JSON) |
🧪 Протокол тестирования
1. Подготовка
✅ Убедитесь, что все зависимости установлены:
pip install -r requirements.txt✅ Проверьте, что файл
.envсоздан и содержит корректные ключи✅ База данных
library.dbсоздаётся автоматически при первом запуске сервера
2. Тестирование MCP-сервера
Запуск:
python mcp_server/server.pyПроверки:
✅ Сервер запускается без ошибок
✅ В папке
mcp_server/создаётся файлlibrary.db✅ Документация FastAPI доступна по адресу:
http://127.0.0.1:8000/docs✅ Эндпоинты
/tools/*возвращают данные в формате JSON✅ Эндпоинт
/healthвозвращает{"status": "ok"}✅ Логи записываются в
mcp_server/library.log
3. Тестирование CLI-клиента
Запуск:
python cli_client.pyТестовые запросы:
Действие | Результат | Статус |
Показать все книги | Список книг из БД (30+) | ✅ |
Найти книгу по названию | Информация о книге | ✅ |
Найти книгу по автору | Список книг автора | ✅ |
Найти книгу по жанру | Список книг в жанре | ✅ |
Добавить книгу | Сообщение об успешном добавлении | ✅ |
Калькулятор | Результат вычисления | ✅ |
Статистика | Количество книг и жанров | ✅ |
Очистить БД | БД очищена (с подтверждением) | ✅ |
Выйти | Выход из программы | ✅ |
Результат: CLI-клиент работает корректно, все 21 тест пройден.
4. Тестирование Telegram-бота
Запуск:
python telegram_bot/bot.pyКоманды:
Команда | Описание | Статус |
| Приветствие и меню | ✅ |
| Справка по командам | ✅ |
| Очистка истории диалога | ✅ |
| Остановка бота | ✅ |
Текстовые команды:
Команда | Результат | Статус |
| Список книг из БД | ✅ |
| Поиск с обложкой | ✅ |
| Список книг автора | ✅ |
| Список книг жанра | ✅ |
| Пошаговый ввод | ✅ |
| Результат вычисления | ✅ |
| Бот остановлен | ✅ |
Функции:
✅ Текстовые команды (рус/англ) + свободная речь через LLM
✅ Контекст диалога (/history, «ещё раз»)
✅ Пошаговый ввод параметров + добавление одной фразой
✅ Обложки книг (Open Library API)
✅ Дефолтная обложка при отсутствии
✅ Состояние диалога (state machine)
✅ Кнопки выбора жанра
✅ Работа через прокси (TELEGRAM_PROXY_URL)
5. Проверка логирования
✅ Логи записываются в
mcp_server/library.log✅ Логи содержат информацию о запуске, инициализации БД и запросах
✅ Консольный вывод минимизирован (только запуск/остановка сервера)
📋 Чек-лист результатов
Компонент | Тест | Статус |
Сервер | Запуск без ошибок | ✅ |
Создание БД | ✅ | |
Эндпоинт | ✅ | |
Эндпоинт | ✅ | |
Эндпоинт | ✅ | |
Логирование в файл | ✅ | |
CLI-клиент | Все 21 тест | ✅ |
Telegram-бот | Главное меню | ✅ |
Текстовые команды | ✅ | |
Пошаговый ввод | ✅ | |
Обложки книг | ✅ | |
Команда /exit | ✅ |
💻 Технологии
Python 3.11+
FastAPI — веб-фреймворк
SQLite — база данных
pyTelegramBotAPI — Telegram-бот
OpenAI API (ProxyAPI) — LLM fallback для свободной речи
requests — HTTP-запросы
colorama — цветной вывод в CLI
📝 Примечания
База данных автоматически инициализируется при первом запуске сервера (30 тестовых книг)
Telegram-бот требует настроенного токена в
.envLLM fallback использует
OPENAI_API_KEYиз.env(ProxyAPI); без ключа бот работает в детерминированном режимеЕсли
api.telegram.orgнедоступен напрямую — укажитеTELEGRAM_PROXY_URLв.envОбложки книг подтягиваются из Open Library API (
covers.openlibrary.org)При отсутствии обложки показывается дефолтная SVG-обложка с emoji 📕
Логи хранятся в
mcp_server/library.log
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
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 Russian books search, details, and recommendation candidates.
MCP server for Project Gutenberg — 75,000+ public-domain ebooks with full plain-text retrieval.
Read-only MCP server for verified book recommendations and reading lists.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that allows searching and retrieving book information from Aladin's book store API, including book details, bestseller lists, and category-based searches.94MIT
- AlicenseBqualityDmaintenanceMCP server that enables searching books by author via Open Library API and searching keywords inside local text files.2326MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that exposes tools for querying a bookstore inventory, allowing AI agents to search and retrieve book information via the Model Context Protocol.2251MIT
- AlicenseAqualityDmaintenanceA library management MCP server supporting book search, member management, and loan operations through natural language commands.134MIT
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/ElenaBelyasnik/vpf08-library-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server