Skip to main content
Glama
smeet666

mcp-rule34

mcp-rule34

npm CI license

Сервер 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-rule34

Claude 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

Что это такое

По умолчанию

RULE34_USER_ID

Ваш числовой идентификатор аккаунта. Обязательно.

RULE34_API_KEY

Ваш ключ API. Обязателен и личный.

RULE34_MIN_INTERVAL_MS

Миллисекунды между двумя запросами.

1000, и никогда меньше

RULE34_TIMEOUT_MS

Сколько времени может занять один запрос.

20000

RULE34_MAX_RETRIES

Попытки после первой, при временных сбоях.

3

RULE34_CACHE_TTL_MS

Как долго ответ остаётся в памяти.

300000

RULE34_CACHE_MAX_ENTRIES

Сколько ответов остаётся в памяти.

300

RULE34_USER_AGENT

Переопределяет агент, который отправляет этот клиент.

mcp-rule34/<version> (+…)

RULE34_LOG_LEVEL

silent, error, info или debug, в stderr.

error

Откуда берутся учётные данные. Войдите, откройте Параметры аккаунта и найдите строку API Access Credentials. Она показывает &api_key=…&user_id=…; эти два значения и есть то, что идёт в конфигурацию выше. Если ключ пуст, отметьте Generate New Key? и сохраните.

Сайт выдаёт один ключ на человека и просит, чтобы приложения, обслуживающие его контент, не показывали рекламу и не ставили его за платный доступ. Этот сервер не поставляет собственный ключ, и каждый пользователь приносит свой.

Сервер, запущенный без учётных данных, всё равно запускается, публикует свой инструмент и отвечает на каждый вызов, называя две переменные, которые нужно установить. Он никогда не отправляет запрос, который, как он знает, сайт отклонит.

Инструменты

Инструмент

Что делает

Ключевые параметры

search_posts

Находит посты с тегом или несколькими сразу.

tags, any_of, exclude, media_type, rating, sort, limit, page

get_post

Читает один пост целиком, с типом для каждого тега.

id, url

find_tags

Находит, как сайт пишет тег, и сколько постов его несут.

query

Как пишется тег

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-rule34

Claude 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

RULE34_USER_ID

L'identifiant numérique du compte. Obligatoire.

RULE34_API_KEY

La clé d'API. Obligatoire, et personnelle.

RULE34_MIN_INTERVAL_MS

Millisecondes entre deux requêtes.

1000, jamais moins

RULE34_TIMEOUT_MS

Durée maximale d'une requête.

20000

RULE34_MAX_RETRIES

Tentatives après la première, sur panne passagère.

3

RULE34_CACHE_TTL_MS

Durée de vie d'une réponse en mémoire.

300000

RULE34_CACHE_MAX_ENTRIES

Nombre de réponses gardées en mémoire.

300

RULE34_USER_AGENT

Remplace l'agent que ce client envoie.

mcp-rule34/<version> (+…)

RULE34_LOG_LEVEL

silent, error, info ou debug, sur stderr.

error

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

Инструмент

Что он делает

Основные параметры

search_posts

Находит посты с одним тегом или несколькими.

tags, any_of, exclude, media_type, rating, sort, limit, page

get_post

Читает пост целиком, с типом каждого из его тегов.

id, url

find_tags

Находит, как сайт пишет тег, и сколько постов его несут.

query

Как пишется тег

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.

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
3Releases (12mo)
Commit activity

Related MCP Servers

  • F
    license
    Not graded
    quality
    F
    maintenance
    Enables 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
  • F
    license
    Not graded
    quality
    D
    maintenance
    Integrates 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.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
  • A
    license
    A
    quality
    D
    maintenance
    Integrates 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.
    26
    6
    4
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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