Dad Jokes MCP Server

Gera piadas de pai com múltiplos estilos e tópicos, completas com avaliações e estatísticas divertidas.

Documentação

Servidor MCP de Piadas de Pai

License: MIT Node.js Version TypeScript

Um servidor profissional de Model Context Protocol (MCP) que traz a alegria das piadas de pai para o seu fluxo de trabalho de desenvolvimento. Perfeito para alegrar o clima durante revisões de código, reuniões de equipe ou quando você precisa de uma pausa rápida para rir.

🎯 Recursos

  • Múltiplos Estilos de Piadas: Clássicas, trocadilhos, wholesome e variantes dignas de gemidos
  • Geração Baseada em Tópicos: Gere piadas sobre assuntos específicos
  • Geração de Piadas Aleatórias: Obtenha piadas aleatórias quando precisar de inspiração
  • Sistema de Avaliação de Piadas: Avalie e receba feedback sobre piadas de pai
  • Navegador de Categorias: Explore as categorias de piadas disponíveis
  • Estatísticas Divertidas: Obtenha estatísticas interessantes sobre piadas de pai
  • Type-Safe: Construído com TypeScript para desenvolvimento robusto
  • Arquitetura Profissional: Estrutura de código limpa e de fácil manutenção

🚀 Início Rápido

Pré-requisitos

  • Node.js >= 18.0.0
  • npm ou yarn
  • Conhecimento em TypeScript (opcional, mas útil)

Instalação

# 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

Configuração de Desenvolvimento

# 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 Disponíveis

generate-dad-joke

Gere uma piada de pai sobre um tópico específico com estilo opcional.

Parâmetros:

  • topic (string): O assunto da piada
  • style (string opcional): "classic", "punny", "wholesome" ou "groan-worthy"

Exemplo:

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

Exemplo de Saída:

"Por que programadores preferem o modo escuro? Porque a luz atrai bugs!"

random-dad-joke

Gere piadas de pai aleatórias.

Parâmetros:

  • count (string opcional): Número de piadas a gerar ("1" a "5")

Exemplo:

{
  "count": "3"
}

rate-dad-joke

Obtenha uma avaliação profissional e feedback para uma piada de pai.

Parâmetros:

  • joke (string): A piada a ser avaliada

Exemplo:

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

🛠️ Ferramentas Disponíveis

get-joke-categories

Recupere todas as categorias de piadas disponíveis.

Parâmetros: Nenhum

Retorna: Lista de 15 categorias de piadas, incluindo Animais, Comida, Tecnologia, Esportes, etc.

joke-stats

Obtenha estatísticas divertidas sobre piadas de pai.

Parâmetros: Nenhum

Retorna: Estatísticas divertidas como taxas de sucesso, tempo médio de gemido e muito mais!

🔧 Integração com Clientes MCP

Integração com Claude Desktop

Adicione ao seu arquivo de configuração do 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": {}
    }
  }
}

Outros Clientes MCP

Para outros clientes compatíveis com MCP, use o transporte stdio:

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

🏗️ Arquitetura

O servidor é construído com uma arquitetura limpa e 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 Principais

  • DadJokesMcpServer: Classe principal do servidor que lida com o protocolo MCP
  • Gerenciamento de Prompts: Definições organizadas de prompts com validação adequada
  • Integração de Ferramentas: Sistema extensível de ferramentas para funcionalidades adicionais
  • Tratamento de Erros: Tratamento abrangente de erros e registro de logs
  • Segurança de Tipos: Cobertura completa de TypeScript com configuração estrita

📖 Exemplos de Uso

Fluxo de Trabalho de Exemplo

  1. Comece o dia com humor:

    Prompt: random-dad-joke
    Count: 1
    
  2. Gere piadas específicas por tópico:

    Prompt: generate-dad-joke
    Topic: "TypeScript"
    Style: "punny"
    
  3. Avalie piadas da equipe:

    Prompt: rate-dad-joke
    Joke: "Why do developers wear glasses? Because they can't C#!"
    
  4. Navegue pelas categorias para inspiração:

    Tool: get-joke-categories
    

Ideias de Integração

  • Comentários em Revisões de Código: Adicione piadas de pai para alegrar as revisões de PR
  • Reuniões Diárias da Equipe: Comece as reuniões com uma piada de pai diária
  • Mensagens de Erro: Suavize falhas de build com humor
  • Documentação: Adicione personalidade aos documentos técnicos
  • Bots do Slack: Integre com ferramentas de comunicação da equipe

🧪 Testes

O projeto inclui uma estrutura básica de testes:

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

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

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

Testes Manuais

Teste o 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

🔧 Configuração

Variáveis de Ambiente

# Optional: Enable debug logging
DEBUG=true

# Optional: Set custom logging level
LOG_LEVEL=info

Personalização

Modifique as categorias de piadas, estilos ou estatísticas editando os arrays em 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"];

📦 Publicação

Para publicar no 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

🤝 Contribuindo

Aceitamos contribuições! Veja como começar:

Início Rápido para Contribuidores

  1. Faça um fork do repositório no GitHub
  2. Clone o seu fork:
    git clone https://github.com/YOUR-USERNAME/dad-jokes-mcp-server.git
    cd dad-jokes-mcp-server
    
  3. Crie um branch de funcionalidade:
    git checkout -b feature/amazing-feature
    
  4. Faça suas alterações e teste-as
  5. Faça commit das suas alterações:
    git commit -m "Add amazing feature"
    
  6. Envie para o seu branch:
    git push origin feature/amazing-feature
    
  7. Abra um Pull Request no GitHub

Diretrizes de Desenvolvimento

  • Siga as melhores práticas de TypeScript
  • Adicione testes para novos recursos
  • Atualize a documentação para mudanças na API
  • Execute npm run lint antes de fazer commit
  • Mantenha as piadas adequadas para a família e inclusivas

Ideias para Contribuições

  • 🎭 Novas categorias de piadas (Ciência, Jogos, etc.)
  • 🛠️ Ferramentas adicionais (histórico de piadas, favoritos)
  • 🎨 Formatação de piadas (arte ASCII, emojis)
  • 🧪 Melhorias na cobertura de testes
  • 📚 Aprimoramentos na documentação
  • 🚀 Otimizações de desempenho

🐛 Solução de Problemas

Problemas Comuns

  1. Erros de Build:

    # Clear cache and rebuild
    npm run clean && npm install && npm run build
    
  2. Problemas de Conexão MCP:

    • Verifique se a versão do Node.js é >= 18.0.0
    • Verifique os caminhos dos arquivos na configuração do cliente MCP
    • Certifique-se de que os arquivos compilados existam em dist/
  3. Erros de TypeScript:

    • Execute npm run lint para verificar problemas
    • Verifique se todas as dependências estão instaladas

Obtendo Ajuda

📄 Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.

🎭 Por que Piadas de Pai?

Piadas de pai são mais do que apenas humor—elas são:

  • Quebra-gelos para reuniões de equipe
  • Aliviadores de estresse durante sessões intensas de codificação
  • Iniciadores de conversa em revisões de código
  • Impulsionadores de moral para equipes de desenvolvimento
  • Linguagem universal que transcende barreiras técnicas
  • Construtores de confiança (se você sobreviver a uma piada de pai, pode lidar com qualquer revisão de código)

🚀 Roteiro

Aprimoramentos futuros que estamos considerando:

  • 🎯 Persistência de piadas (salvar favoritos)
  • 🌐 Suporte a múltiplos idiomas
  • 🤖 Melhorias na geração de piadas com IA
  • 📊 Análises (piadas mais populares, estatísticas de uso)
  • 🎨 Formatação rica (markdown, emojis)
  • 🔌 Mais integrações (Slack, Discord, etc.)

🙏 Agradecimentos

  • Equipe do Model Context Protocol pelo excelente framework
  • A comunidade de piadas de pai pela inspiração infinita
  • Todos os contribuidores que ajudam a tornar este projeto melhor
  • Todo desenvolvedor que aprecia um bom (ruim) trocadilho

📊 Estatísticas do Projeto

  • Linguagem: TypeScript
  • Runtime: Node.js
  • Protocolo: Model Context Protocol (MCP)
  • Licença: MIT
  • Mantenedor: OrenGrinker

Lembre-se: Um dia sem risadas é um dia desperdiçado, mas um dia com piadas de pai é um dia em que todos gemem juntos. 😄

Fato Divertido: Este README contém exatamente 42 referências a piadas de pai. Isso não é coincidência – é a resposta para a vida, o universo e tudo mais... incluindo por que desenvolvedores amam trocadilhos terríveis! 🤓