rzhunemogu-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port to use when running in streamable HTTP transport mode, e.g. 8081 | |
| TRANSPORT | No | Transport mode for the server, e.g. http for streamable HTTP or stdio for local agents | |
| DATABASE_URL | Yes | PostgreSQL connection string, e.g. postgres://user:password@localhost:5432/rzhunemogu |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_categoriesA | Возвращает полный список категорий юмора на РжуНеМогу: id, slug, название, признак «18+», количество опубликованных записей. Только чтение, без побочных эффектов. Ответ — JSON-массив в поле content[0].text. Используй id из этого списка как categoryId в random_joke/get_jokes_by_category. |
| random_jokeA | Возвращает одну случайную запись (анекдот/историю/афоризм) из базы РжуНеМогу. Если указан categoryId — выбирается случайная запись только из этой категории; иначе из всех опубликованных, включая категории 18+. Только чтение, без побочных эффектов. Повторные вызовы с тем же аргументом могут вернуть разные записи (детерминированности нет). При отсутствии записей в категории возвращается текст «Анекдот не найден». |
| get_joke_by_idA | Возвращает запись юмора по её числовому ID. ID можно получить из search_jokes или random_joke (поле id). Только чтение, без побочных эффектов. Если записи с таким ID нет или она не опубликована — возвращается текст «Анекдот с таким ID не найден». |
| get_jokes_by_categoryA | Возвращает список записей конкретной категории с пагинацией, отсортированных от новых к старым по id (по убыванию). categoryId обязателен (возьми из list_categories). limit — до 50 записей за раз (по умолчанию 15), offset — смещение для пагинации. Только чтение, без побочных эффектов. Ответ содержит total (всего записей в категории) и items (список). Для постраничного просмотра увеличивай offset кратно limit. |
| search_jokesA | Полнотекстовый поиск записей по ключевым словам на русском языке (например, «врач», «Штирлиц», «тёща», «теща»). Использует морфологию русского языка PostgreSQL: word-формы приводятся к основе, поэтому «врач» найдёт и «врачи», «врачом» и т.п. Результаты отсортированы по релевантности (ts_rank). query обязателен; поиск без него вернёт пустой результат. Только чтение, без побочных эффектов. limit до 50 (по умолчанию 15), offset для пагинации. |
| popular_tagsA | Возвращает наиболее часто используемые теги записей, отсортированные по убыванию частоты (count). Показывает темы, чаще всего встречающиеся в базе РжуНеМогу. Только чтение, без побочных эффектов. limit задаёт сколько тегов вернуть (1-100, по умолчанию 30). Каждый тег — {name, count}, где count — число записей с этим тегом. |
| site_statsA | Возвращает общую статистику базы РжуНеМогу: число опубликованных записей (total_jokes), число категорий (total_categories), число уникальных тегов (total_tags) и дату последнего обновления (last_update). Полезно для получения общего представления о размере и активности базы. Только чтение, без побочных эффектов. Стоимость вызова мала по сравнению с поиском — подходит для быстрых проверок доступности. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Each tool targets a clearly distinct retrieval mode: category enumeration, single random pick, lookup by ID, paginated category listing, full-text search, tag frequency, and aggregate stats. Descriptions explicitly cross-reference each other (e.g. categoryId from list_categories feeds random_joke/get_jokes_by_category), so an agent can pick correctly. No pair of tools is genuinely interchangeable.
Most names follow a verb_noun pattern (list_categories, get_joke_by_id, get_jokes_by_category, search_jokes), but three are bare noun phrases (random_joke, popular_tags, site_stats). The deviation is minor and the intent of each name remains instantly readable. No casing inconsistency — all snake_case throughout.
Seven tools is well-scoped for a read-only joke database: discovery, retrieval by three complementary paths, search, tags, and stats. Every tool earns its place with no filler or trivially overlapping wrapper. Nothing feels thin given the narrow domain.
The read-only surface is thorough: categories, random, by ID, by category with pagination, full-text search, tags, and stats. The one noticeable gap is that popular_tags surfaces tags but no get_jokes_by_tag tool lets an agent act on them, and there is no explicit 18+ exclusion filter despite the flag being prominent. These are workarounds-able but real dead ends.