Dad Joke MCP Server
A Python-based MCP server that generates creative dad joke prompts on any topic in various styles, enabling AI agents to produce dad jokes through natural language requests.
README
Dad Joke MCP Server š
A Python-based MCP (Model Context Protocol) server that generates creative dad joke prompts. Connect your AI agent to this server and request dad jokes on any topic in various styles!
While this project was entirely vibe slopped, shoutout to OrenGrinker's Dad Joke MCP Server for inspiration and possibly examples the vibe coding LLM referenced.
Features
- šŖ 8 Joke Styles: pun, wordplay, observational, anti-humor, question-answer, one-liner, knock-knock, and classic
- š ļø MCP Tools:
joke_stylesandbuild_dad_joke_promptfor automated prompt building - š Network Support: Runs over SSE (Server-Sent Events) transport with standardized endpoints (
/sseand/messages) - š Extensive Logging: Full request/response logging with structured JSON format
- š³ Docker Ready: Complete Docker configuration for standalone deployment
How It Works
When you request a dad joke through an MCP client:
- User Request: "Add a dad joke about fish"
- MCP Server Returns: A prompt like "You are an expert comedian skilled with puns. Create a joke about fish that is appropriate for a workplace."
- AI Agent Executes: The prompt and generates the actual joke
- Result: "Why was the fish unsuccessful? He dropped out of school!"
Installation
Local Installation
-
Clone or navigate to the project directory:
cd joke-poc-mcp-server -
Create a virtual environment (recommended):
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install dependencies:
pip install -r requirements.txt -
Configure environment (optional):
cp .env.example .env # Edit .env with your preferred settings -
Run the server:
python -m src.server
The server will start on http://0.0.0.0:8000 by default.
- SSE Connection:
http://localhost:8000/sse(or/messagesfor compatibility) - Message Posting:
http://localhost:8000/messages
Docker Installation
-
Build and run with Docker Compose:
docker-compose up -d -
View logs:
docker-compose logs -f dad-joke-mcp -
Stop the server:
docker-compose down
Alternatively, use Docker directly:
# Build the image
docker build -t dad-joke-mcp-server .
# Run the container
docker run -d -p 8000:8000 --name dad-joke-mcp dad-joke-mcp-server
# View logs
docker logs -f dad-joke-mcp
Configuration
Configure the server using environment variables or a .env file:
| Variable | Default | Description |
|---|---|---|
HOST |
0.0.0.0 |
Server host address |
PORT |
8000 |
Server port |
LOG_LEVEL |
INFO |
Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
LOG_FORMAT |
json |
Log format (json or text) |
LOG_FILE |
logs/dad-joke-mcp.log |
Log file path |
LOG_TO_FILE |
false |
Enable file logging |
LOG_REQUESTS |
true |
Log incoming requests |
LOG_RESPONSES |
true |
Log outgoing responses |
MCP Client Configuration
Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"dad-joke": {
"url": "http://localhost:8000/sse"
}
}
}
Cline (VS Code Extension)
Add to your Cline MCP settings:
{
"mcpServers": {
"dad-joke": {
"url": "http://localhost:8000/sse",
"transport": "sse"
}
}
}
Usage
Prompts
Use the dad_joke prompt to generate a prompt for an LLM:
- Required:
topic - Optional:
style(default:classic)
Tools
The server provides tools for automated interaction:
-
joke_styles: Returns a list of all available joke styles.- Arguments: None
-
build_dad_joke_prompt: Programmatically generates a dad joke prompt.- Arguments:
topic(string, required): The subject of the joke.style(string, optional): The style of the joke.
- Arguments:
Available styles:
pun- Clever wordplay and multiple meaningswordplay- Creative word combinations and homophonesobservational- Funny observations about everyday situationsanti-humor- Subverted expectations with literal punchlinesquestion-answer- Classic "Why did..." or "What do you call..." formatone-liner- Short, punchy single-sentence jokesknock-knock- Traditional knock-knock joke formatclassic- Traditional dad joke style (default)
Examples
Cursor
build_dad_joke_prompt( football ) and use the output as a prompt and then append the result of that prompt to the test.txt file. Only append the result, oo not include the call to the tool or the parameters.
Calls the tool and uses the output as a prompt
append /dad-joke/dad_joke to the test.txt file
Uses the prompt (the slash will trigger a dialog asking for the topic and style)
Logging
The server provides extensive logging with full request/response details:
JSON Format (Default)
{
"timestamp": "2026-02-01T20:24:00.123Z",
"logger": "dad_joke_mcp",
"level": "INFO",
"message": "Generated dad joke prompt",
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"topic": "fish",
"style": "classic",
"prompt_length": 145
}
Text Format
Set LOG_FORMAT=text for human-readable logs:
2026-02-01 20:24:00,123 - dad_joke_mcp - INFO - Generated dad joke prompt
Architecture
āāāāāāāāāāāāāāāāāāā
ā MCP Client ā
ā (Claude/Cursor) ā
āāāāāāāāāā¬āāāāāāāāā
ā SSE/HTTP
ā¼
āāāāāāāāāāāāāāāāāāā
ā Dad Joke MCP ā
ā Server ā
ā ā
ā āāāāāāāāāāāāā ā
ā ā Prompts / ā ā
ā ā Tools ā ā
ā ā Handlers ā ā
ā āāāāāāāāāāāāā ā
ā ā
ā āāāāāāāāāāāāā ā
ā ā Logger ā ā
ā ā (JSON) ā ā
ā āāāāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāāā
Development
Running Tests
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
Project Structure
joke-poc-mcp-server/
āāā src/
ā āāā __init__.py # Package initialization
ā āāā config.py # Configuration management
ā āāā server.py # Main MCP server
āāā Dockerfile # Docker image definition
āāā docker-compose.yml # Docker Compose configuration
āāā pyproject.toml # Project metadata
āāā requirements.txt # Python dependencies
āāā .env.example # Example environment config
āāā README.md # This file
Troubleshooting
Server won't start
- Check if port 8000 is already in use:
lsof -i :8000 - Verify Python version:
python --version(requires 3.11+) - Check logs for error messages
MCP client can't connect
- Ensure server is running:
curl http://localhost:8000/sse - Verify firewall settings allow connections on port 8000
- Check client configuration matches server host/port (ensure using
/ssefor GET)
No logs appearing
- Set
LOG_LEVEL=DEBUGfor verbose logging - Verify
LOG_REQUESTS=trueandLOG_RESPONSES=true - Check console output or log file if
LOG_TO_FILE=true
License
Free, as in beer... use this for anything, no attribution required, steal this code, say it's your own, etc.
Made with ā¤ļø and terrible puns
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.