Redlib MCP Server

Un servidor MCP que integra tu instancia privada de Redlib, permitiendo que asistentes de IA accedan para utilizar Redlib.

Documentación

Servidor MCP de Redlib

Docker Pulls Docker Image Size

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a los agentes de IA interactuar con Reddit a través de tu instancia privada de Redlib. ¡Sin necesidad de claves de API de Reddit, solo necesitas una instancia de Redlib en funcionamiento!


https://github.com/user-attachments/assets/66eec084-e911-4eed-a51f-be303e86f1a7

Tabla de Contenidos


Características

  • Privacidad Primero - Usa tu Redlib autoalojado, sin rastreo ni claves de API
  • 3 Herramientas Potentes - Busca publicaciones, obtén publicaciones populares, recupera detalles completos de publicaciones con comentarios
  • Listo para Docker - Imágenes Docker simples y reforzadas disponibles
  • Configuración Fácil - Funciona con Claude Desktop, Cursor, VS Code, Codex, ForgeCode, KiloCode y cualquier cliente compatible con MCP
  • Salida Estructurada - Devuelve JSON limpio en lugar de HTML sin procesar

Implementación Actual: Transporte Stdio

Importante: Este servidor utiliza actualmente transporte stdio (comunicación stdin/stdout) para desarrollo local. Se ejecuta como un proceso hijo y se comunica a través de la entrada/salida estándar.

Qué Significa Esto:

  • Sin endpoint HTTP - El servidor no expone ningún puerto HTTP
  • Solo local - Diseñado para escenarios de desarrollo y pruebas locales
  • Proceso hijo - Los clientes MCP inician este servidor como un subproceso
  • Sin acceso a red - Toda la comunicación ocurre localmente vía stdin/stdout

Planes Futuros:

La funcionalidad de transporte HTTP está planificada para futuras versiones para habilitar:

  • Acceso remoto a través de HTTP
  • Múltiples conexiones de clientes concurrentes
  • Escenarios de despliegue en producción
  • Verificaciones de salud basadas en red

Requisitos Previos

Antes de usar este servidor MCP, necesitas:

  1. Instancia de Redlib - Una instancia de Redlib en funcionamiento (predeterminado: http://localhost:8080)

  2. Cliente MCP - Uno de:


Inicio Rápido

Opción 1: Docker (Recomendado)

# Pull and run the default version
docker run -i --rm \
  --network host \
  -e REDLIB_URL=http://localhost:8080 \
  alfafadock/mcp-redlib:latest

Opción 2: Docker Reforzado (Enfocado en Seguridad)

# Uses non-root user and minimal privileges
docker run -i --rm \
  --network host \
  --cap-drop=ALL \
  --security-opt no-new-privileges:true \
  -e REDLIB_URL=http://localhost:8080 \
  alfafadock/mcp-redlib:hardened

Opción 3: Desarrollo Local

# Clone and setup
git clone https://github.com/Devthatdoes/redlib-mcp-server.git
cd redlib-mcp-server

# Install dependencies
npm install

# Build
npm run build

# Run
npm start

Docker Compose

Haz clic para expandir la configuración de Docker Compose

Crea docker-compose.yml:

services:
  redlib-mcp:
    image: alfafadock/mcp-redlib:latest
    container_name: redlib-mcp
    network_mode: "host"  # Uses host network for MCP client communication
    environment:
      - REDLIB_URL=http://localhost:8080  # Change if Redlib is on a different port
    restart: unless-stopped
    # For hardened image, change image to: alfafadock/mcp-redlib:hardened

Configuración

Variables de Entorno

VariablePredeterminadoDescripción
REDLIB_URLhttp://localhost:8080URL de tu instancia de Redlib

Ejemplo de Puerto Personalizado de Redlib

Si tu Redlib se ejecuta en un puerto diferente (por ejemplo, 8085):

docker run -i --rm \
  --network host \
  -e REDLIB_URL=http://localhost:8085 \
  alfafadock/mcp-redlib:latest

Ejemplo de Archivo .env

Copia .env.example a .env y modifica según sea necesario:

cp .env.example .env

Herramientas Disponibles

1. search_reddit

Busca publicaciones de Reddit usando tu instancia privada de Redlib.

Parámetros:

  • query (obligatorio) - Cadena de consulta de búsqueda
  • subreddit (opcional) - Limitar la búsqueda a un subreddit específico

Ejemplo:

{
  "query": "rust programming",
  "subreddit": "rust"
}

Devuelve: JSON con IDs de publicaciones, títulos, autores, puntuaciones y recuentos de comentarios.


2. get_subreddit_hot

Obtén publicaciones populares de un subreddit específico.

Parámetros:

  • subreddit (obligatorio) - Nombre del subreddit (sin r/)
  • limit (opcional) - Número de publicaciones (predeterminado: 25)

Ejemplo:

{
  "subreddit": "rust",
  "limit": 10
}

3. get_post

Obtén una publicación específica con sus comentarios.

Parámetros:

  • subreddit (obligatorio) - Nombre del subreddit
  • postId (obligatorio) - ID de la publicación de Reddit (de los resultados de búsqueda)

Ejemplo:

{
  "subreddit": "rust",
  "postId": "abc123"
}

Devuelve: Cuerpo completo de la publicación, puntuación y hasta 10 comentarios principales.


🔌 Integración con Clientes de IA

Claude Desktop

Edita ~/.config/claude/claude_desktop_config.json (Linux/macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "redlib": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "--network", "host",
        "-e", "REDLIB_URL=http://localhost:8080",
        "alfafadock/mcp-redlib:latest"
      ]
    }
  }
}

Para puerto personalizado de Redlib (por ejemplo, 8085):

{
  "mcpServers": {
    "redlib": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "--network", "host",
        "-e", "REDLIB_URL=http://localhost:8085",
        "alfafadock/mcp-redlib:latest"
      ]
    }
  }
}

Después de actualizar: Reinicia Claude Desktop. Deberías ver un ícono de martillo (🔨) que indica que las herramientas MCP están disponibles.

Referencia: Documentación MCP de Claude Desktop


Cursor

Añade a ~/.cursor/mcp.json (global) o .cursor/mcp.json (nivel de proyecto):

{
  "mcpServers": {
    "redlib": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--network", "host", "-e", "REDLIB_URL=http://localhost:8080", "alfafadock/mcp-redlib:latest"]
    }
  }
}

Configuración a nivel de proyecto: Crea .cursor/mcp.json en la raíz de tu proyecto.

Después de actualizar: Cursor detectará automáticamente los cambios. Usa la Paleta de Comandos (Cmd/Ctrl+Shift+P) y busca "MCP" para gestionar servidores.

Referencia: Documentación MCP de Cursor


VS Code / GitHub Copilot

Opción A: Configuración del Espacio de Trabajo

Crea .vscode/mcp.json en tu proyecto:

{
  "servers": {
    "redlib": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--network", "host", "-e", "REDLIB_URL=http://localhost:8080", "alfafadock/mcp-redlib:latest"]
    }
  }
}

Opción B: Configuración de Usuario (Global)

Usa la Paleta de Comandos (Cmd/Ctrl+Shift+P) → "MCP: Abrir Configuración de Usuario":

{
  "mcp": {
    "servers": {
      "redlib": {
        "command": "docker",
        "args": ["run", "-i", "--rm", "--network", "host", "-e", "REDLIB_URL=http://localhost:8080", "alfafadock/mcp-redlib:latest"]
      }
    }
  }
}

Después de actualizar: Recarga VS Code. Las herramientas aparecerán en el Modo Agente de GitHub Copilot.

Referencia: Documentación MCP de VS Code


OpenAI Codex

Edita ~/.codex/config.toml (global) o .codex/config.toml (proyecto):

[mcp_servers.redlib]
command = "docker"
args = ["run", "-i", "--rm", "--network", "host", "-e", "REDLIB_URL=http://localhost:8080", "alfafadock/mcp-redlib:latest"]

Configuración a nivel de proyecto: Crea .codex/config.toml en la raíz de tu proyecto.

Después de actualizar: Reinicia Codex. Usa codex mcp list para verificar que el servidor esté cargado.

Referencia: Documentación MCP de Codex


ForgeCode

ForgeCode admite servidores MCP a través del comando forge mcp para importación fácil.

Opción A: Importación Rápida (Recomendado)

Usa la funcionalidad de importación MCP integrada:

# Import the Redlib MCP server
forge mcp import alfafadock/mcp-redlib:latest

# List imported servers
forge mcp list

# Reload to apply changes
forge mcp reload

Opción B: Configuración del Proyecto

Crea .mcp.json en la raíz de tu proyecto:

{
  "mcpServers": {
    "redlib": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--network", "host", "-e", "REDLIB_URL=http://localhost:8080", "alfafadock/mcp-redlib:latest"]
    }
  }
}

Opción C: Configuración Global

Edita el directorio de configuración de ForgeCode (consulta la configuración de la extensión para la ruta exacta).

Después de actualizar: Recarga la extensión de ForgeCode usando forge mcp reload. Las herramientas MCP deberían aparecer en la interfaz del asistente de IA.

Referencia: Documentación de ForgeCode


KiloCode

Opción A: Configuración Global

Edita ~/.config/kilo/kilo.jsonc o usa Configuración → MCP en KiloCode:

{
  "mcpServers": {
    "redlib": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--network", "host", "-e", "REDLIB_URL=http://localhost:8080", "alfafadock/mcp-redlib:latest"]
    }
  }
}

Opción B: Configuración del Proyecto

Crea .kilocode/mcp.json o kilo.jsonc en la raíz de tu proyecto:

{
  "mcpServers": {
    "redlib": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--network", "host", "-e", "REDLIB_URL=http://localhost:8080", "alfafadock/mcp-redlib:latest"]
    }
  }
}

Después de actualizar: Abre Configuración de KiloCode → MCP → Añadir Servidor, o edita el archivo de configuración directamente.

Referencia: Documentación MCP de KiloCode


Seguridad: Predeterminado vs Reforzado

CaracterísticaPredeterminado (latest)Reforzado (hardened)
UsuariorootNo root (mcpuser)
Propiedad de Archivosrootmcpuser
Etapas de ConstrucciónÚnicaMulti-etapa (más pequeña)
Capacidades de EjecuciónPredeterminadoRequiere --cap-drop=ALL
Caso de UsoDesarrollo, pruebasProducción

Usando la Imagen Reforzada

docker run -i --rm \
  --cap-drop=ALL \
  --security-opt no-new-privileges:true \
  --network host \
  -e REDLIB_URL=http://localhost:8080 \
  alfafadock/mcp-redlib:hardened

Desarrollo

Estructura del Proyecto

redlib-mcp-server/
├── src/
│   └── index.ts          # Main server code (stdio transport)
├── dist/                  # Compiled JavaScript (gitignored)
├── Dockerfile             # Default Docker image
├── Dockerfile.hardened    # Hardened Docker image
├── docker-compose.yml     # Production compose
├── package.json
├── tsconfig.json
└── README.md

Compilar desde el Código Fuente

# Install dependencies
npm install

# Build TypeScript
npm run build

# Run locally
npm start

Compilar Imágenes Docker Personalizadas

# Default version
docker build -t redlib-mcp-server .

# Hardened version
docker build -f Dockerfile.hardened -t redlib-mcp-server:hardened .

Ejemplo de Uso con IA

Una vez conectado a tu cliente de IA (por ejemplo, Claude), puedes:

User: "Search Reddit for 'home lab setup' and summarize the top results"

AI uses search_reddit tool →
Returns structured JSON with posts →
AI summarizes the findings for you
User: "Get the full post and comments for that Rust tutorial I searched earlier"

AI uses get_post with postId →
Returns post body + comments →
AI provides detailed analysis

Contribuciones

¡Las contribuciones son bienvenidas! Por favor:

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Envía una solicitud de extracción

Licencia

Licencia MIT - ¡siéntete libre de usar este proyecto como quieras!


Agradecimientos

  • Redlib - El front-end privado de Reddit con el que este servidor interactúa
  • Protocolo de Contexto de Modelo - El protocolo que hace posible esta integración
  • Cheerio - Biblioteca de análisis HTML utilizada para extraer datos estructurados

Enlaces


Hecho con ❤️ para la comunidad de Reddit consciente de la privacidad