Dad Jokes MCP Server

Genera chistes de papá con múltiples estilos y temas, completos con calificaciones y estadísticas divertidas.

Documentación

Servidor MCP de Dad Jokes

License: MIT Node.js Version TypeScript

Un servidor profesional de Model Context Protocol (MCP) que lleva la alegría de los dad jokes a tu flujo de trabajo de desarrollo. Perfecto para alegrar el ambiente durante revisiones de código, reuniones de equipo o cuando necesitas un descanso rápido con una risa.

🎯 Características

  • Múltiples estilos de chistes: Clásicos, con juegos de palabras, familiares y dignos de un gemido
  • Generación por tema: Genera chistes sobre temas específicos
  • Generación aleatoria de chistes: Obtén chistes aleatorios cuando necesites inspiración
  • Sistema de calificación: Califica y recibe comentarios sobre dad jokes
  • Explorador de categorías: Explora las categorías de chistes disponibles
  • Estadísticas divertidas: Obtén estadísticas interesantes sobre dad jokes
  • Seguridad de tipos: Construido con TypeScript para un desarrollo robusto
  • Arquitectura profesional: Estructura de código limpia y mantenible

🚀 Inicio rápido

Requisitos previos

  • Node.js >= 18.0.0
  • npm o yarn
  • Conocimiento de TypeScript (opcional pero útil)

Instalación

# Clone the repository
git clone https://github.com/OrenGrinker/dad-jokes-mcp-server.git
cd dad-jokes-mcp-server

# Install dependencies
npm install

# Build the project
npm run build

# Start the server
npm start

Configuración de desarrollo

# Run in development mode with auto-rebuild
npm run dev

# Run linting
npm run lint

# Run tests (when implemented)
npm test

# Clean build directory
npm run clean

📋 Prompts disponibles

generate-dad-joke

Genera un dad joke sobre un tema específico con estilo opcional.

Parámetros:

  • topic (string): El tema del chiste
  • style (string opcional): "classic", "punny", "wholesome" o "groan-worthy"

Ejemplo:

{
  "topic": "programming",
  "style": "punny"
}

Salida de muestra:

"¿Por qué los programadores prefieren el modo oscuro? ¡Porque la luz atrae a los bugs!"

random-dad-joke

Genera dad jokes aleatorios.

Parámetros:

  • count (string opcional): Número de chistes a generar ("1" a "5")

Ejemplo:

{
  "count": "3"
}

rate-dad-joke

Obtén una calificación profesional y comentarios para un dad joke.

Parámetros:

  • joke (string): El chiste a evaluar

Ejemplo:

{
  "joke": "Why don't scientists trust atoms? Because they make up everything!"
}

🛠️ Herramientas disponibles

get-joke-categories

Recupera todas las categorías de chistes disponibles.

Parámetros: Ninguno

Devuelve: Lista de 15 categorías de chistes, incluyendo Animales, Comida, Tecnología, Deportes, etc.

joke-stats

Obtén estadísticas divertidas sobre dad jokes.

Parámetros: Ninguno

Devuelve: Estadísticas entretenidas como tasas de éxito, tiempo promedio de gemido, ¡y más!

🔧 Integración con clientes MCP

Integración con Claude Desktop

Añade a tu archivo de configuración de Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "dad-jokes": {
      "command": "node",
      "args": ["/path/to/dad-jokes-mcp-server/dist/index.js"],
      "env": {}
    }
  }
}

Otros clientes MCP

Para otros clientes compatibles con MCP, usa el transporte stdio:

node /path/to/dad-jokes-mcp-server/dist/index.js

🏗️ Arquitectura

El servidor está construido con una arquitectura limpia y orientada a objetos:

src/
├── index.ts          # Main server class and startup logic
├── types/            # TypeScript type definitions (future expansion)
├── prompts/          # Prompt configurations (future expansion)
└── tools/            # Tool implementations (future expansion)

Componentes clave

  • DadJokesMcpServer: Clase principal del servidor que maneja el protocolo MCP
  • Gestión de prompts: Definiciones de prompts organizadas con validación adecuada
  • Integración de herramientas: Sistema extensible de herramientas para funcionalidad adicional
  • Manejo de errores: Manejo integral de errores y registro
  • Seguridad de tipos: Cobertura completa de TypeScript con configuración estricta

📖 Ejemplos de uso

Flujo de trabajo de ejemplo

  1. Comienza tu día con humor:

    Prompt: random-dad-joke
    Count: 1
    
  2. Genera chistes sobre temas específicos:

    Prompt: generate-dad-joke
    Topic: "TypeScript"
    Style: "punny"
    
  3. Califica los chistes del equipo:

    Prompt: rate-dad-joke
    Joke: "Why do developers wear glasses? Because they can't C#!"
    
  4. Explora categorías para inspirarte:

    Tool: get-joke-categories
    

Ideas de integración

  • Comentarios en revisiones de código: Añade dad jokes para alegrar las revisiones de PR
  • Reunión diaria del equipo: Comienza las reuniones con un dad joke diario
  • Mensajes de error: Suaviza los fallos de compilación con humor
  • Documentación: Añade personalidad a los documentos técnicos
  • Bots de Slack: Integra con herramientas de comunicación del equipo

🧪 Pruebas

El proyecto incluye una estructura básica de pruebas:

# Run tests (implement tests in tests/ directory)
npm test

# Run tests in watch mode
npm test -- --watch

# Run tests with coverage
npm test -- --coverage

Pruebas manuales

Prueba el servidor manualmente:

# Build and start
npm run build && npm start

# In another terminal, test with sample MCP client
echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0.0"}}}' | node dist/index.js

🔧 Configuración

Variables de entorno

# Optional: Enable debug logging
DEBUG=true

# Optional: Set custom logging level
LOG_LEVEL=info

Personalización

Modifica las categorías de chistes, estilos o estadísticas editando los arreglos en src/index.ts:

// Add new categories
const categories = [
  "Animals", "Food", "Technology", // ... existing
  "Your Custom Category"
];

// Add new joke styles
const styles = ["classic", "punny", "wholesome", "groan-worthy", "your-style"];

📦 Publicación

Para publicar en npm:

# Ensure you're logged into npm
npm login

# Build and prepare for publishing
npm run prepublishOnly

# Publish (update version in package.json first)
npm version patch  # or minor/major
npm publish

🤝 Contribuciones

¡Agradecemos las contribuciones! Así es como puedes comenzar:

Inicio rápido para contribuyentes

  1. Haz un fork del repositorio en GitHub
  2. Clona tu fork:
    git clone https://github.com/YOUR-USERNAME/dad-jokes-mcp-server.git
    cd dad-jokes-mcp-server
    
  3. Crea una rama de características:
    git checkout -b feature/amazing-feature
    
  4. Haz tus cambios y pruébalos
  5. Confirma tus cambios:
    git commit -m "Add amazing feature"
    
  6. Sube a tu rama:
    git push origin feature/amazing-feature
    
  7. Abre un Pull Request en GitHub

Pautas de desarrollo

  • Sigue las mejores prácticas de TypeScript
  • Añade pruebas para nuevas características
  • Actualiza la documentación para cambios en la API
  • Ejecuta npm run lint antes de confirmar
  • Mantén los chistes aptos para toda la familia e inclusivos

Ideas para contribuciones

  • 🎭 Nuevas categorías de chistes (Ciencia, Gaming, etc.)
  • 🛠️ Herramientas adicionales (historial de chistes, favoritos)
  • 🎨 Formato de chistes (arte ASCII, emojis)
  • 🧪 Mejoras en la cobertura de pruebas
  • 📚 Mejoras en la documentación
  • 🚀 Optimizaciones de rendimiento

🐛 Solución de problemas

Problemas comunes

  1. Errores de compilación:

    # Clear cache and rebuild
    npm run clean && npm install && npm run build
    
  2. Problemas de conexión MCP:

    • Verifica que la versión de Node.js sea >= 18.0.0
    • Revisa las rutas de archivos en la configuración del cliente MCP
    • Asegúrate de que los archivos compilados existan en dist/
  3. Errores de TypeScript:

    • Ejecuta npm run lint para verificar problemas
    • Verifica que todas las dependencias estén instaladas

Obtener ayuda

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT: consulta el archivo LICENSE para más detalles.

🎭 ¿Por qué dad jokes?

Los dad jokes son más que solo humor—son:

  • Rompehielos para reuniones de equipo
  • Aliviadores de estrés durante sesiones intensas de codificación
  • Iniciadores de conversación en revisiones de código
  • Impulsores de moral para equipos de desarrollo
  • Lenguaje universal que trasciende barreras técnicas
  • Constructores de confianza (si puedes sobrevivir a un dad joke, puedes manejar cualquier revisión de código)

🚀 Hoja de ruta

Mejoras futuras que estamos considerando:

  • 🎯 Persistencia de chistes (guardar favoritos)
  • 🌐 Soporte multilingüe
  • 🤖 Mejoras en la generación de chistes con IA
  • 📊 Analíticas (chistes más populares, estadísticas de uso)
  • 🎨 Formato enriquecido (markdown, emojis)
  • 🔌 Más integraciones (Slack, Discord, etc.)

🙏 Agradecimientos

  • Al equipo de Model Context Protocol por el excelente framework
  • A la comunidad de dad jokes por la inspiración infinita
  • A todos los contribuyentes que ayudan a mejorar este proyecto
  • A cada desarrollador que aprecia un buen (malo) juego de palabras

📊 Estadísticas del proyecto

  • Lenguaje: TypeScript
  • Runtime: Node.js
  • Protocolo: Model Context Protocol (MCP)
  • Licencia: MIT
  • Mantenedor: OrenGrinker

Recuerda: Un día sin risas es un día desperdiciado, pero un día con dad jokes es un día donde todos gimen juntos. 😄

Dato curioso: Este README contiene exactamente 42 referencias a dad jokes. No es una coincidencia: es la respuesta a la vida, el universo y todo lo demás... ¡incluyendo por qué los desarrolladores aman los juegos de palabras terribles! 🤓