Rule 34
Busca publicaciones de rule34.xxx por etiqueta a través de la API del sitio. Requiere una clave de API de rule34.xxx.
Documentación
mcp-rule34
rule34.xxx es un tablón de imágenes de gran tamaño cuyas publicaciones están indexadas enteramente por etiquetas, y publica una API para leerlas. Una publicación lleva su identificador, la dirección de su página y de su archivo, sus dimensiones, la puntuación que le dieron sus espectadores, su clasificación y la lista completa de etiquetas bajo las que se archivó. El sitio contiene decenas de millones de publicaciones y responde a una búsqueda de etiquetas con el número que coincidió.
Este servidor conecta un cliente de chat con ese índice. Puedes buscar publicaciones por etiquetas, combinando etiquetas requeridas, alternativas y exclusiones, leer el registro de una publicación por su identificador y consultar cómo escribe el sitio una etiqueta antes de buscar en ella. Requiere una cuenta y una clave API, que el sitio emite por persona.
Instalación
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 y cualquier cliente que use el formato de configuración estándar
{
"mcpServers": {
"rule34": {
"command": "npx",
"args": ["-y", "mcp-rule34"],
"env": {
"RULE34_USER_ID": "your-id",
"RULE34_API_KEY": "your-key"
}
}
}
}
Se requiere Node 24 o posterior. Las dos credenciales son obligatorias; todo lo demás bajo Configuración es opcional.
Con Docker
{
"mcpServers": {
"rule34": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"RULE34_USER_ID",
"-e",
"RULE34_API_KEY",
"ghcr.io/smeet666/mcp-rule34:2.0.2"
]
}
}
}
-i mantiene abierto stdin, que es por donde viaja el protocolo, y -t se omite
porque una TTY reescribe el flujo. El contenedor necesita HTTPS saliente hacia
api.rule34.xxx y rule34.xxx, y las dos credenciales de tu entorno:
sin volumen, sin puerto.
Paquete, sin npm
Descarga mcp-rule34-2.0.2.mcpb desde
la última versión y
ábrelo. Un cliente que admita paquetes MCP lo instala por sí solo, sin necesidad de ejecutar
npm. Las credenciales se siguen configurando en la configuración del cliente.
Qué puedes preguntar
- "¿Cómo escribe el sitio esa etiqueta?"
- "Encuentra publicaciones etiquetadas con esas dos, ordenadas por puntuación."
- "Misma búsqueda, excluyendo monocromo."
- "Léeme el registro de la publicación 1234567."
- "¿Cuántas publicaciones coincide con esa búsqueda?"
El camino habitual va desde una consulta de etiqueta hasta una búsqueda: find_tags da la
ortografía que usa el sitio, y search_posts la toma.
Herramientas
| Herramienta | Qué hace |
|---|---|
find_tags | Encuentra cómo escribe el sitio una etiqueta y cuántas publicaciones la llevan. |
search_posts | Busca publicaciones por etiquetas, con alternativas y exclusiones. |
get_post | Lee el registro de una publicación por su identificador o su dirección. |
Consulta una etiqueta antes de buscar en ella. El sitio indexa solo por etiqueta, y una etiqueta que no tiene no coincide con nada, lo que se lee como un resultado vacío en lugar de como un error ortográfico.
find_tags
Encuentra cómo escribe el sitio una etiqueta.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
query | cadena, hasta 60 caracteres | sí | El texto a consultar. |
A cambio: query tal como se envió, y tags, cada uno con la ortografía que usa el sitio
y el número de publicaciones que lo llevan.
search_posts
Busca publicaciones por etiquetas.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
tags | matriz de 1 a 10 nombres de etiqueta | sí | Etiquetas que una publicación debe llevar. |
any_of | matriz de 1 a 10 nombres de etiqueta | no | Etiquetas de las que una publicación debe llevar al menos una. |
exclude | matriz de 1 a 10 nombres de etiqueta | no | Etiquetas que una publicación no debe llevar. |
media_type | image, animated, video o any, por defecto any | no | Imágenes fijas, GIF o MP4. |
rating | questionable o explicit | no | Se buscan ambas cuando se omite. |
sort | score, id, updated o random, por defecto score | no | El orden por el que ordena el sitio. |
limit | entero, 1 a 100, por defecto 20 | no | Publicaciones a servir. |
page | entero, 1 a 200, por defecto 1 | no | Qué página de publicaciones. |
media_type se lee de las propias etiquetas del sitio, por lo que la clasificación es tan buena como
el etiquetado. Las dos clasificaciones anteriores son las únicas que tiene el sitio: cualquier otro
valor responde cero publicaciones y sin error, lo que devolvería una ausencia que el sitio
nunca tuvo.
A cambio: tags, any_of y exclude tal como las escribe el sitio; query,
la búsqueda tal como se envió en el propio idioma del sitio; total, las publicaciones que
coinciden con toda la búsqueda según el recuento del sitio; y las propias publicaciones, cada una con
su id, post_url, file_url, preview_url, sample_url, width,
height, score, rating y tags. La puntuación es la propia del sitio y se
actualiza una vez al día.
get_post
Lee el registro de una publicación.
| Argumento | Tipo | Obligatorio | Qué hace |
|---|---|---|---|
id | entero, 1 o más | uno de dos | El identificador de la publicación. |
url | una URL de publicación de rule34.xxx | uno de dos | La dirección de la página de la publicación. |
A cambio: la publicación que lleva una fila de búsqueda, con su lista completa de etiquetas.
Configuración
Las dos credenciales son obligatorias. Todo lo demás es opcional, y todo va
en el bloque env de la configuración de tu cliente.
| Variable | Por defecto | Qué hace |
|---|---|---|
RULE34_USER_ID | ninguno, obligatorio | Tu identificador de cuenta numérico. |
RULE34_API_KEY | ninguno, obligatorio | Tu clave API, que es personal. |
RULE34_USER_AGENT | la identidad del proyecto | Nombra tu aplicación ante el sitio, con una dirección donde se pueda contactar a una persona. |
RULE34_MIN_INTERVAL_MS | 1000 | Intervalo entre dos solicitudes, de 1000 a 60000. |
RULE34_TIMEOUT_MS | 20000 | Plazo para una solicitud, de 1000 a 120000. |
RULE34_MAX_RETRIES | 3 | Intentos tras un fallo transitorio, de 0 a 10. |
RULE34_CACHE_TTL_MS | 300000 | Cuánto tiempo permanece una respuesta en memoria, de 0 a 86400000. |
RULE34_CACHE_MAX_ENTRIES | 300 | Respuestas mantenidas en memoria a la vez, de 0 a 10000. |
RULE34_LOG_LEVEL | error | silent, error, info o debug, escritos en stderr. |
De dónde vienen las credenciales. Inicia sesión, abre
Opciones de cuenta y busca
la fila llamada Credenciales de acceso a la API. Muestra &api_key=…&user_id=…, y
esos dos valores son los que van en la configuración anterior. Si la clave está vacía,
marca ¿Generar nueva clave? y guarda.
El sitio emite una clave por persona y pide que las aplicaciones que sirven su contenido no muestren publicidad y no lo pongan detrás de un muro de pago. Este servidor no incluye ninguna clave propia, y cada usuario aporta la suya. Si se inicia sin credenciales, se ejecuta, publica sus herramientas y responde a cada llamada nombrando las dos variables a configurar: no envía ninguna solicitud que sepa que el sitio rechazará.
Un valor fuera de su rango vuelve al valor por defecto, y el motivo se escribe en stderr.
Errores
Cada fallo lleva uno de seis códigos, un mensaje y, cuando ayuda, una pista que nombra el siguiente paso.
| Código | Qué pasó | Qué hacer |
|---|---|---|
not_found | El sitio respondió y no tiene nada en esa dirección. | Comprueba el identificador con search_posts. |
invalid_input | Los argumentos se rechazaron antes de enviar ninguna solicitud. | Lee el mensaje, que nombra el argumento. Aquí se informa de una credencial faltante. |
rate_limited | El sitio pidió a este cliente que fuera más lento. | Espera el número de segundos que nombre la pista y vuelve a llamar con los mismos argumentos. La publicación sigue ahí. |
parse_failure | La respuesta llegó en una forma que este cliente no puede leer. | Repórtalo en el rastreador de incidencias. |
network_error | La solicitud no se completó. | Inténtalo de nuevo en breve. |
timeout | La solicitud superó su plazo. | Sube RULE34_TIMEOUT_MS, o pide menos publicaciones. |
Como biblioteca
La capa que lee el sitio se publica por separado, con su ritmo, su caché y sus errores, y sin ningún protocolo adjunto.
import { Rule34Client } from "mcp-rule34/client";
const client = new Rule34Client({ credentials: { userId: "…", apiKey: "…" } });
const { data, cached } = await client.searchPosts({ tags: ["example"], limit: 5 });
console.log(data.total, cached);
Cada lectura responde { data, cached } y lanza un error con uno de los seis
códigos. El mínimo de un segundo entre dos solicitudes también se aplica aquí.
Ritmo y atribución
Las solicitudes salen de una en una con al menos un segundo entre ellas, y ese mínimo
se mantiene sin importar cómo esté configurado el servidor. El User-Agent siempre termina con la
identidad del proyecto y una dirección donde se pueda contactar a una persona.
Las lecturas van a la API que documenta el sitio, y las credenciales que emite son lo que sus términos piden que use la lectura automatizada. Cada resultado lleva la dirección de la página de la publicación. No se descarga nada: una dirección de archivo viaja a través de una respuesta como cadena.
Este servidor MCP es un proyecto no oficial, sin afiliación con rule34.xxx.
Privacidad
Este servidor no recopila nada sobre ti y no envía nada a su autor. Se ejecuta
en tu máquina, contacta con api.rule34.xxx y rule34.xxx y nada más,
mantiene sus respuestas en memoria mientras se ejecuta y no escribe nada en disco. Tus
credenciales se leen del entorno y se envían solo a ese sitio.
PRIVACY.md indica qué lleva una solicitud y qué ajustes cambian
algo de eso.
Desarrollo
npm install
npm run build:fixtures
npm test
npm run check
Las pruebas se ejecutan contra datos generados y no hacen ninguna solicitud de red. La suite en vivo,
npm run test:live, hace una solicitud por ruta y se ejecuta cada noche contra el
propio sitio.
Contribuciones
Los errores, preguntas e ideas van en el rastreador de incidencias. Las solicitudes de extracción son bienvenidas; abrir una incidencia primero ayuda a acordar la forma del cambio. Consulta CONTRIBUTING.md.
Licencia
MIT, consulta LICENSE. Las publicaciones y las etiquetas pertenecen a rule34.xxx y a las personas que las subieron.
mcp-rule34 (español)
rule34.xxx es un imageboard de gran tamaño cuyas publicaciones están indexadas enteramente por etiquetas, y publica una API para leerlas. Una publicación lleva su identificador, la dirección de su página y de su archivo, sus dimensiones, la nota que sus visitantes le han dado, su clasificación, y la lista completa de las etiquetas bajo las que está archivada. El sitio contiene decenas de millones de publicaciones y responde a una búsqueda por etiquetas dando el número que ha encontrado.
Este servidor conecta un cliente de conversación con ese índice. Se pueden buscar publicaciones por etiquetas, combinando las etiquetas exigidas, las alternativas y las exclusiones, leer la ficha de una publicación por su identificador, y verificar cómo el sitio escribe una etiqueta antes de buscar sobre ella. Requiere una cuenta y una clave de API, que el sitio entrega por persona.
Instalación
Claude Code
claude mcp add rule34 --env RULE34_USER_ID=votre-id --env RULE34_API_KEY=votre-cle -- npx -y mcp-rule34
Claude Desktop, Cursor, y cualquier cliente con formato de configuración estándar
{
"mcpServers": {
"rule34": {
"command": "npx",
"args": ["-y", "mcp-rule34"],
"env": {
"RULE34_USER_ID": "votre-id",
"RULE34_API_KEY": "votre-cle"
}
}
}
}
Se necesita Node 24 o más reciente. Los dos identificadores son obligatorios; todo lo demás, en Configuración, es opcional.
Con Docker
{
"mcpServers": {
"rule34": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"RULE34_USER_ID",
"-e",
"RULE34_API_KEY",
"ghcr.io/smeet666/mcp-rule34:2.0.2"
]
}
}
}
-i mantiene la entrada estándar abierta, que es el canal del protocolo, y -t se
omite porque un TTY reescribe el flujo. El contenedor necesita acceso HTTPS
saliente hacia api.rule34.xxx y rule34.xxx, y los dos identificadores tomados de
su entorno: sin volúmenes, sin puertos.
Bundle, sin npm
Descargue mcp-rule34-2.0.2.mcpb desde
la última publicación
y ábralo. Un cliente que gestione bundles MCP lo instala solo, sin necesidad de
ejecutar npm. Los identificadores se siguen colocando en la configuración del cliente.
Lo que se puede pedir
- «¿Cómo escribe el sitio esta etiqueta?»
- «Encuentra las publicaciones que llevan estas dos etiquetas, ordenadas por nota.»
- «La misma búsqueda, sin monocromo.»
- «Léeme la ficha de la publicación 1234567.»
- «¿Cuántas publicaciones encuentra esta búsqueda?»
El camino habitual va de una búsqueda de etiqueta a una búsqueda de
publicaciones: find_tags da la ortografía que emplea el sitio, y
search_posts la retoma.
Las herramientas
| Herramienta | Lo que hace |
|---|---|
find_tags | Encuentra la ortografía de una etiqueta, y cuántas publicaciones la llevan. |
search_posts | Busca publicaciones por etiquetas, con alternativas y exclusiones. |
get_post | Lee la ficha de una publicación por su identificador o su dirección. |
Verifique una etiqueta antes de buscar sobre ella. El sitio indexa solo por etiqueta, y una etiqueta que no conoce no corresponde a nada, lo que se lee como un resultado vacío en lugar de un error de ortografía.
find_tags
Encuentra la ortografía de una etiqueta.
| Argumento | Tipo | Requerido | Lo que hace |
|---|---|---|---|
query | cadena, hasta 60 caracteres | sí | El texto a verificar. |
En retorno: query tal como se envió, y tags, cada una con la ortografía
que emplea el sitio y el número de publicaciones que la llevan.
search_posts
Busca publicaciones por etiquetas.
| Argumento | Tipo | Requerido | Lo que hace |
|---|---|---|---|
tags | matriz de 1 a 10 nombres de etiquetas | sí | Etiquetas que una publicación debe llevar. |
any_of | matriz de 1 a 10 nombres de etiquetas | no | Etiquetas de las que una publicación debe llevar al menos una. |
exclude | matriz de 1 a 10 nombres de etiquetas | no | Etiquetas que una publicación no debe llevar. |
media_type | image, animated, video o any, por defecto any | no | Imágenes fijas, GIF o MP4. |
rating | questionable o explicit | no | Ambos se buscan cuando se omite. |
sort | score, id, updated o random, por defecto score | no | El orden de clasificación del sitio. |
limit | entero, 1 a 100, por defecto 20 | no | Publicaciones a servir. |
page | entero, 1 a 200, por defecto 1 | no | Qué página de publicaciones. |
media_type se lee sobre las etiquetas del propio sitio, por lo que la clasificación
vale lo que vale el etiquetado. Las dos clasificaciones anteriores son las únicas que
el sitio conoce: cualquier otro valor devuelve cero publicaciones y ningún error, lo
que entregaría una ausencia que el sitio nunca ha tenido.
En retorno: tags, any_of y exclude tal como el sitio las
escribe; query, la búsqueda tal como se envió en el idioma
del sitio; total, las publicaciones que toda la búsqueda encuentra, tal como el
sitio las cuenta; y las publicaciones mismas, cada una con su id,
post_url, file_url, preview_url, sample_url, width, height, score,
rating y tags. La nota es la del sitio y se actualiza una vez
al día.
get_post
Lee la ficha de una publicación.
| Argumento | Tipo | Requerido | Lo que hace |
|---|---|---|---|
id | entero, 1 o más | uno de los dos | El identificador de la publicación. |
url | una dirección de página rule34.xxx | uno de los dos | La dirección de la página. |
En retorno: la publicación que lleva una línea de búsqueda, con su lista completa de etiquetas.
Configuración
Los dos identificadores son obligatorios. Todo lo demás es opcional, y todo se
coloca en el bloque env de la configuración del cliente.
| Variable | Por defecto | Lo que hace |
|---|---|---|
RULE34_USER_ID | ninguno, obligatorio | El identificador numérico de su cuenta. |
RULE34_API_KEY | ninguno, obligatorio | Su clave de API, que es personal. |
RULE34_USER_AGENT | la identidad del proyecto | Nombra su aplicación ante el sitio, con una dirección donde contactar a una persona. |
RULE34_MIN_INTERVAL_MS | 1000 | Intervalo entre dos solicitudes, de 1000 a 60000. |
RULE34_TIMEOUT_MS | 20000 | Tiempo de espera de una solicitud, de 1000 a 120000. |
RULE34_MAX_RETRIES | 3 | Intentos tras un fallo pasajero, de 0 a 10. |
RULE34_CACHE_TTL_MS | 300000 | Duración durante la cual una respuesta permanece en memoria, de 0 a 86400000. |
RULE34_CACHE_MAX_ENTRIES | 300 | Respuestas guardadas en memoria a la vez, de 0 a 10000. |
RULE34_LOG_LEVEL | error | silent, error, info o debug, escrito en la salida de error. |
De dónde vienen los identificadores. Inicie sesión, abra
Account options, y
encuentre la línea API Access Credentials. Muestra &api_key=…&user_id=…,
y esos dos valores son lo que va en la configuración anterior. Si la clave está
vacía, marque Generate New Key? y guarde.
El sitio entrega una clave por persona, y pide que las aplicaciones que sirven su contenido no muestren publicidad y no lo coloquen detrás de ningún pago. Este servidor no incorpora ninguna clave, y cada uno aporta la suya. Iniciado sin identificadores, funciona, publica sus herramientas, y responde a cada llamada nombrando las dos variables a colocar: no envía ninguna solicitud que sepa que el sitio rechazará.
Un valor fuera de su rango cae en el valor por defecto, y la razón se escribe en la salida de error.
Errores
Cada fallo lleva uno de los seis códigos, un mensaje, y cuando ayuda una indicación del siguiente paso.
| Código | Lo que ha pasado | Qué hacer |
|---|---|---|
not_found | El sitio ha respondido, y no tiene nada en esa dirección. | Verifique el identificador con search_posts. |
invalid_input | Los argumentos fueron rechazados antes de cualquier solicitud. | Lea el mensaje, que nombra el argumento. Un identificador faltante se señala aquí. |
rate_limited | El sitio pide a este cliente que reduzca la velocidad. | Espere los segundos indicados y vuelva a llamar con los mismos argumentos. La publicación sigue ahí. |
parse_failure | La respuesta llegó en una forma ilegible aquí. | Repórtelo en el seguimiento de incidentes. |
network_error | La solicitud no se completó. | Reintente en breve. |
timeout | La solicitud superó su tiempo de espera. | Aumente RULE34_TIMEOUT_MS, o pida menos publicaciones. |
Como biblioteca
La capa que lee el sitio se publica sola, con su ritmo, su caché y sus errores, sin protocolo adjunto.
import { Rule34Client } from "mcp-rule34/client";
const client = new Rule34Client({ credentials: { userId: "…", apiKey: "…" } });
const { data, cached } = await client.searchPosts({ tags: ["example"], limit: 5 });
console.log(data.total, cached);
Cada lectura responde { data, cached }, y lanza un error que lleva uno de los seis
códigos. El mínimo de un segundo entre dos solicitudes también se aplica aquí.
Ritmo y atribución
Las solicitudes salen una a una con al menos un segundo entre ellas, y este
mínimo se mantiene sea cual sea la configuración. El User-Agent termina
siempre con la identidad del proyecto y una dirección donde contactar a una persona.
Las lecturas pasan por la API que el sitio documenta, y los identificadores que entrega son lo que sus condiciones piden emplear para una lectura automatizada. Cada resultado lleva la dirección de la página de la publicación. Nada se descarga: una dirección de archivo atraviesa una respuesta como una cadena de caracteres.
Este MCP es un proyecto no oficial, sin afiliación con rule34.xxx.
Privacidad
Este servidor no recopila nada sobre ti ni envía nada a su autor. Se ejecuta en
tu máquina, solo se conecta a api.rule34.xxx y rule34.xxx, guarda sus respuestas
en memoria mientras está en ejecución y no escribe nada en el disco. Tus credenciales
se leen del entorno y se envían únicamente a ese sitio. PRIVACY.md
indica qué lleva una solicitud y qué ajustes cambian eso.
Desarrollo
npm install
npm run build:fixtures
npm test
npm run check
Las pruebas se ejecutan sobre fixtures generados y no emiten ninguna solicitud.
La suite en vivo, npm run test:live, emite una solicitud por ruta y se ejecuta
cada noche contra el propio sitio.
Contribuir
Los errores, las preguntas y las ideas tienen su lugar en el seguimiento de incidencias. Las propuestas de modificación son bienvenidas; abrir un ticket primero ayuda a ponerse de acuerdo sobre la forma del cambio. Ver CONTRIBUTING.md.
Licencia
MIT, ver LICENSE. Las publicaciones y las etiquetas pertenecen a rule34.xxx y a las personas que las han subido.