mcp-rule34
mcp-rule34
Сервер MCP для rule34.xxx. Ищет посты сайта по тегу через его собственный API и возвращает для каждого поста его страницу, файл, размеры, оценку, рейтинг и полный список тегов, а также количество постов, соответствующих всему поиску.
Этому серверу нужны учётные данные. rule34.xxx выдаёт ключ API на каждый аккаунт, и его условия разрешают автоматическое чтение только через API. Получение ключа занимает минуту и описано в разделе Конфигурация.
(Version française plus bas / Французская версия ниже)
Quickstart
Claude Code
claude mcp add rule34 --env RULE34_USER_ID=your-id --env RULE34_API_KEY=your-key -- npx -y mcp-rule34Claude Desktop, Cursor и любой клиент, использующий стандартный формат конфигурации
{
"mcpServers": {
"rule34": {
"command": "npx",
"args": ["-y", "mcp-rule34"],
"env": {
"RULE34_USER_ID": "your-id",
"RULE34_API_KEY": "your-key"
}
}
}
}Поместите это в вашу пользовательскую конфигурацию, а не в файл проекта: .mcp.json в корне репозитория путешествует вместе с репозиторием, и ключ путешествует вместе с ним.
Related MCP server: Smart Search MCP Server
Configuration
Variable | Что это такое | По умолчанию |
| Ваш числовой идентификатор аккаунта. Обязательно. | — |
| Ваш ключ API. Обязателен и личный. | — |
| Миллисекунды между двумя запросами. |
|
| Сколько времени может занять один запрос. |
|
| Попытки после первой, при временных сбоях. |
|
| Как долго ответ остаётся в памяти. |
|
| Сколько ответов остаётся в памяти. |
|
| Переопределяет агент, который отправляет этот клиент. |
|
|
|
|
Откуда берутся учётные данные. Войдите, откройте Параметры аккаунта и найдите строку API Access Credentials. Она показывает &api_key=…&user_id=…; эти два значения и есть то, что идёт в конфигурацию выше. Если ключ пуст, отметьте Generate New Key? и сохраните.
Сайт выдаёт один ключ на человека и просит, чтобы приложения, обслуживающие его контент, не показывали рекламу и не ставили его за платный доступ. Этот сервер не поставляет собственный ключ, и каждый пользователь приносит свой.
Сервер, запущенный без учётных данных, всё равно запускается, публикует свой инструмент и отвечает на каждый вызов, называя две переменные, которые нужно установить. Он никогда не отправляет запрос, который, как он знает, сайт отклонит.
Инструменты
Инструмент | Что делает | Ключевые параметры |
| Находит посты с тегом или несколькими сразу. |
|
| Читает один пост целиком, с типом для каждого тега. |
|
| Находит, как сайт пишет тег, и сколько постов его несут. |
|
Как пишется тег
find_tags спрашивает rule34.xxx, какие имена начинаются с фрагмента текста, и сколько постов несёт каждое. Он сопоставляет с начала имени, поэтому kimagure находит kimagure_orange_road, а слово, находящееся в середине имени, не находит ничего. Сайт предлагает не более десяти имён, и ответ сообщает об этом, поскольку десять назад означает, что список был обрезан, а не исчерпан.
Это также то, на что опирается поиск, не нашедший ничего: когда требуемый тег не существует, ответ называет его и предлагает имена, которые сайт действительно содержит и которые начинаются с него.
Поиск называет посты, затем пост читается целиком
Пост на rule34.xxx несёт в среднем около двухсот тегов, а некоторые несут девятьсот. Страница из двадцати результатов с полным перечислением тегов потратила бы четыре пятых ответа на строки тегов, которые никто не читает, поэтому строка поиска показывает первые двенадцать и указывает, сколько всего тегов несёт пост.
get_post читает один пост по его id или по ссылке на его страницу и возвращает каждый тег с его типом: персонаж, копирайт, художник, общий или метаданные, и сколько постов его разделяют, вместе с загрузившим, количеством комментариев и датой, когда сайт его принял. Ссылка читается, а не переходит: этот сервер строит собственный запрос из id, который он в ней находит.
Чтение одного поста стоит двух запросов, потому что ни один из форматов, публикуемых API, не содержит всего: дата, когда сайт принял пост, берётся из одного, а имя загрузившего, количество комментариев и типы тегов — из другого.
Теги — это одиночные токены
rule34.xxx хранит тег как один токен, соединяя подчёркиваниями то, что человек говорит словами. asuka langley sohryu и asuka_langley_sohryu — это один и тот же тег, и этот сервер пишет второй из первого. Пунктуация внутри имени принадлежит ему: тег серии — ranma_1/2, включая слэш.
Три списка, три вопроса
{
"tags": ["asuka langley sohryu", "black hair"], // every one of these
"any_of": ["blonde hair", "red hair"], // at least one of these
"exclude": ["monochrome", "3d"], // none of these
}Фильтры живут в собственных аргументах, а не внутри тегов, поэтому ответ может указать рейтинг и сортировку, которые фактически использовались.
Запрос изображений, анимаций или видео
media_type принимает image, animated, video или any. rule34.xxx несёт различие в собственных тегах, поэтому сайт выполняет фильтрацию, и возвращаемый итог учитывает то, что было запрошено. Таким образом, классификация настолько же хороша, насколько хороша разметка сайта.
Цвет указывается по отсутствию: сайт помечает то, что чёрно-белое, и не помечает ничего, чтобы сказать, что пост цветной. Запросите цвет с помощью "exclude": ["monochrome", "greyscale", "grayscale"].
Рейтинги
Сайт содержит два рейтинга: questionable и explicit. Запрос к rule34.xxx за safe, general или sensitive возвращает ноль постов и без ошибки, что читается как отсутствие, а не как рейтинг, которого у сайта никогда не было, поэтому этот сервер отказывает этим трём вместо того, чтобы передавать их.
Когда поиск ничего не находит
Тег, который не существует, опустошает поиск точно так же, как комбинация, для которой у сайта ничего нет. Когда поиск по нескольким тегам возвращается пустым, этот сервер спрашивает сайт, какие из имён он содержит, и ответ говорит, какого именно нет:
No post on rule34.xxx matches neon_genesis_evangelion asuka_langley_sohry.
Note: rule34.xxx holds no tag named 'asuka_langley_sohry'. A tag that does not
exist empties a search on its own.Что содержит ответ
Каждый ответ несёт итог, который сайт подсчитал для всего поиска, страницу, которая была обслужена, и поиск, как он был отправлен на собственном языке сайта. Пост несёт свою страницу rule34.xxx, файл, миниатюру, размеры, оценку, рейтинг, теги, всё, что загрузивший указал как источник, и дату, когда rule34.xxx принял его.
Пост несёт две даты, и ни одна из них не является датой создания его предмета. Первая — день, когда сайт принял пост, вторая — день последнего изменения поста, которое сдвигает перетегирование. rule34.xxx импортировал большую часть своего старого каталога массово, поэтому тысячи постов разделяют один день в ноябре 2010 года: вопрос о том, что было раньше, решается импортом, а не работой.
Чего этот сервер не делает
Он никогда не загружает, не голосует, не комментирует и не пишет ничего на rule34.xxx.
Ошибки
Каждый сбой несёт один из шести кодов, и код открывает сообщение: not_found, invalid_input, rate_limited, parse_failure, network_error, timeout.
rate_limited означает, что сайт временно отказывает этому клиенту, и это никогда не означает, что поиск ничего не нашёл. rule34.xxx ограничивает свою частоту, не публикуя, какова она, поэтому этот клиент задаёт один вопрос за раз, с секундой между двумя запросами, которую никакая конфигурация не может сократить, и он отступает дальше, когда сайт отталкивает.
Использование в качестве библиотеки
Слой чтения публикуется отдельно, без протокола:
import { Rule34Client } from "mcp-rule34/client";Он несёт тот же темп, тот же кэш и ту же таксономию ошибок.
Разработка
npm install
npm test # unit tests, no network
npm run typecheck
npm run check # biome and prettier
npm run buildЖивой набор тестов достигает сайта и запускается только при наличии учётных данных:
RULE34_USER_ID=… RULE34_API_KEY=… npm run test:liveЛицензия
MIT.
mcp-rule34 (français)
Un serveur MCP pour rule34.xxx. Cherche les posts du site par tag, à travers sa propre API, et rend pour chacun sa page, son fichier, ses dimensions, son score, sa classification et ses tags, avec le nombre de posts que la recherche entière trouve.
Ce serveur demande des identifiants. rule34.xxx délivre une clé d'API par compte, et ses conditions n'autorisent la lecture automatisée que par cette API. En obtenir une prend une minute, voir Configuration.
Démarrage
Claude Code
claude mcp add rule34 --env RULE34_USER_ID=votre-id --env RULE34_API_KEY=votre-clé -- npx -y mcp-rule34Claude Desktop, Cursor, et tout client au format standard
{
"mcpServers": {
"rule34": {
"command": "npx",
"args": ["-y", "mcp-rule34"],
"env": {
"RULE34_USER_ID": "votre-id",
"RULE34_API_KEY": "votre-clé"
}
}
}
}À placer dans votre configuration utilisateur plutôt que dans un fichier de
projet : un .mcp.json à la racine d'un dépôt part avec le dépôt, et la clé
part avec lui.
Configuration
Variable | Ce que c'est | Défaut |
| L'identifiant numérique du compte. Obligatoire. | — |
| La clé d'API. Obligatoire, et personnelle. | — |
| Millisecondes entre deux requêtes. |
|
| Durée maximale d'une requête. |
|
| Tentatives après la première, sur panne passagère. |
|
| Durée de vie d'une réponse en mémoire. |
|
| Nombre de réponses gardées en mémoire. |
|
| Remplace l'agent que ce client envoie. |
|
|
|
|
Où trouver les identifiants. Connectez-vous, ouvrez
les options du compte, et
cherchez la ligne API Access Credentials. Elle affiche &api_key=…&user_id=… :
ces deux valeurs vont dans la configuration ci-dessus. Si la clé est vide, cochez
Generate New Key? puis enregistrez.
Le site délivre une clé par personne et demande qu'une application servant son contenu n'affiche aucune publicité et ne le mette derrière aucun péage. Ce serveur n'embarque aucune clé, et chacun apporte la sienne.
Un serveur démarré sans identifiants démarre quand même, publie son outil, et répond à chaque appel en nommant les deux variables à régler. Il n'émet jamais une requête dont il sait que le site la refusera.
Les outils
Инструмент | Что он делает | Основные параметры |
| Находит посты с одним тегом или несколькими. |
|
| Читает пост целиком, с типом каждого из его тегов. |
|
| Находит, как сайт пишет тег, и сколько постов его несут. |
|
Как пишется тег
find_tags спрашивает у rule34.xxx, какие имена начинаются с текста, и сколько постов несёт каждое. Соответствие идёт от начала имени, поэтому kimagure находит kimagure_orange_road, тогда как слово в середине имени не находит ничего. Сайт предлагает не более десяти имён, и ответ это говорит, поскольку десять в ответе означают обрезанный список, а не исчерпанный.
Это также запасной вариант поиска, который ничего не нашёл: когда требуемый тег не существует, ответ называет его и предлагает имена, которые есть на сайте и начинаются так же.
Поиск называет посты, карточка читает их целиком
Пост на rule34.xxx несёт в медиане около двухсот тегов, а некоторые несут девятьсот. Страница из двадцати результатов со всеми записанными тегами потратила бы четыре пятых своего ответа на строки, которые никто не читает, поэтому строка поиска показывает первые двенадцать и говорит, сколько всего тегов несёт пост.
get_post читает пост по его идентификатору или по ссылке на его страницу и возвращает каждый тег с его типом — персонаж, копирайт, художник, общий или метаданные — и количество постов, которые его разделяют, вместе с загрузившим, количеством комментариев и датой, когда сайт его взял. Ссылка читается, а не переходит: этот сервер строит собственный запрос из идентификатора, который он в ней находит.
Чтение карточки стоит двух запросов, потому что ни один из двух форматов, публикуемых API, не несёт всего: дата, когда сайт взял пост, приходит из одного, а имя загрузившего, количество комментариев и типы тегов — из другого.
Тег — это одно слово
rule34.xxx помещает тег в одно слово, соединяя подчёркиваниями то, что человек говорит несколькими словами. asuka langley sohryu и asuka_langley_sohryu — это один и тот же тег, и этот сервер пишет второй из первого. Пунктуация имени принадлежит ему: тег серии — ranma_1/2, включая косую черту.
Три списка, три вопроса
{
"tags": ["asuka langley sohryu", "black hair"], // tous ceux-là
"any_of": ["blonde hair", "red hair"], // au moins un de ceux-là
"exclude": ["monochrome", "3d"], // aucun de ceux-là
}Фильтры живут в собственных аргументах, а не в тегах, что позволяет ответу называть классификацию и сортировку, которые он действительно применил.
Запрашивать изображения, анимации или видео
media_type принимает image, animated, video или any. rule34.xxx несёт различие в собственных тегах, поэтому фильтрует сайт, и итог, который он возвращает, хорошо отражает то, что было запрошено. Ранжирование стоит столько, сколько стоит работа его участников.
Цвет выражается отсутствием: сайт помечает чёрно-белое и не помечает ничего, чтобы сказать, что пост цветной. Запрашивайте цвет через "exclude": ["monochrome", "greyscale", "grayscale"].
Классификации
Сайт ведёт две классификации: questionable и explicit. Запрос safe, general или sensitive к rule34.xxx возвращает ноль постов и никакой ошибки, что читается как отсутствие, а не как классификация, которой у сайта никогда не было, поэтому этот сервер отказывает этим трём вместо того, чтобы их передавать.
Когда поиск ничего не находит
Несуществующий тег опустошает поиск точно так же, как комбинация, которой у сайта нет. Когда поиск по нескольким тегам возвращается пустым, этот сервер спрашивает у сайта, какие из этих имён он держит, и ответ называет то, которое он не знает.
Что называет ответ
Каждый ответ несёт итог, посчитанный сайтом для всего поиска, обслуженную страницу и запрос, как он был отправлен на языке сайта. Пост несёт свою страницу rule34.xxx, свой файл, свою миниатюру, свои размеры, свой счёт, свою классификацию, свои теги, источник, указанный загрузившим, когда он указал его, и дату, когда rule34.xxx его взял.
Пост несёт две даты, и ни одна не является датой создания его сюжета. Первая — день, когда сайт взял пост, вторая — день, когда он изменился в последний раз, который сдвигает перетегирование. rule34.xxx массово импортировал большую часть своего старого фонда, поэтому тысячи постов несут один и тот же день ноября 2010 года: вопрос о том, что идёт первым, получает ответ от импорта, а никогда от произведения.
Чего этот сервер не делает
Он ничего не загружает, не голосует, не комментирует и ничего не пишет на rule34.xxx.
Ошибки
Любой сбой несёт один из шести кодов, и код открывает сообщение: not_found, invalid_input, rate_limited, parse_failure, network_error, timeout.
rate_limited означает, что сайт отказывает этому клиенту на данный момент, и никогда — что поиск ничего не нашёл. rule34.xxx ограничивает свой трафик, не публикуя какой именно, поэтому этот клиент задаёт один вопрос за раз, с секундой между двумя запросами, которую никакая конфигурация не может сократить, и он отступает сильнее, когда сайт его отталкивает.
Использование как библиотеки
Слой чтения публикуется отдельно, без протокола:
import { Rule34Client } from "mcp-rule34/client";Он несёт тот же ритм, тот же кэш и ту же таксономию ошибок.
Разработка
npm install
npm test # tests unitaires, sans réseau
npm run typecheck
npm run check # biome et prettier
npm run buildЖивой набор тестов достигает сайта и работает только с идентификаторами:
RULE34_USER_ID=… RULE34_API_KEY=… npm run test:liveЛицензия
MIT.
Maintenance
Tools
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceEnables searching and analyzing Danbooru tags, character statistics, and wiki information. Extracts tags from posts, analyzes frequently used tags for characters with customizable filters, and retrieves detailed wiki entries.1
- FlicenseNot gradedqualityDmaintenanceIntegrates a remote smart search API to provide powerful web search capabilities with structured JSON results. It allows users to perform filtered searches with configurable parameters like result count and pagination.
- AlicenseNot gradedqualityDmaintenanceEnables interaction with the Civitai API to search for AI models, browse images, and access creator information. It provides tools for filtering models by popularity, rating, or type and retrieving detailed version metadata.MIT
- AlicenseAqualityDmaintenanceIntegrates ThePornDB API into MCP-compatible applications to search for adult video scenes, movies, and JAV content. It enables users to retrieve detailed performer profiles and comprehensive content metadata through specialized tools for LLM applications.2664MIT
Related MCP Connectors
Search Stack Exchange questions, fetch Q&A threads as markdown, look up tag FAQs and user profiles.
X (formerly Twitter) posts, profiles, and search for AI agents. Free key, self-minted, no signup.
Fetch recent public X/Twitter posts by named handle for monitoring, comparison, OSINT, and research.
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/smeet666/mcp-rule34'
If you have feedback or need assistance with the MCP directory API, please join our Discord server