笑话生成MCP服务

一个基于Python的MCP服务器,用于生成创意爸爸笑话提示,支持多种笑话风格和网络传输协议。

  • by bdurrett
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 bdurrett/joke-poc-mcp-server

使用说明

爸爸笑话MCP服务器🎭

一个基于Python的MCP(模型上下文协议)服务器,可以生成创意爸爸笑话提示。将您的AI代理连接到此服务器,并请求爸爸以各种风格就任何主题讲笑话!

虽然这个项目完全是一团糟,但应该 OrenGrinker的爸爸开玩笑MCP服务器 以获取灵感,并可能参考振动编码LLM的示例。

特性

  • 🎪 8种笑话风格双关语、文字游戏、观察、反幽默、问答、一句话、敲门和经典
  • 🛠️ MCP工具: joke_styles 和 build_dad_joke_prompt 用于自动提示构建
  • 🌐 网络支持:通过具有标准化端点的SSE(服务器发送事件)传输运行(/sse 和 /messages)
  • 📝 广泛的日志记录:采用结构化JSON格式的完整请求/响应日志记录
  • 🐳 Docker就绪:完成独立部署的Docker配置

运作原理

当你通过MCP客户端请求一个爸爸笑话时:

  1. 用户请求:“添加一个关于鱼的爸爸笑话”
  2. MCP服务器返回:一个提示,比如“你是一个擅长双关语的喜剧专家。创造一个适合工作场所的关于鱼的笑话。”
  3. AI代理执行:提示并生成实际笑话
  4. 结果“为什么鱼不成功?他辍学了!”

安装

本地安装

  1. 克隆或导航到项目目录:

    cd joke-poc-mcp-server
    
  2. 创建虚拟环境 (推荐):

    python3 -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. 安装依赖项:

    pip install -r requirements.txt
    
  4. 配置环境 (可选):

    cp .env.example .env
    # Edit .env with your preferred settings
    
  5. 运行服务器:

    python -m src.server
    

服务器将于启动 http://0.0.0.0:8000 默认情况下。

  • SSE连接: http://localhost:8000/sse (或 /messages 为了兼容性)
  • 留言发布: http://localhost:8000/messages

Docker安装

  1. 使用Docker Compose构建和运行:

    docker-compose up -d
    
  2. 查看日志:

    docker-compose logs -f dad-joke-mcp
    
  3. 停止服务器:

    docker-compose down
    

或者,直接使用Docker:

# 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

配置

使用环境变量或 .env 文件:

变量 默认值 描述
HOST 0.0.0.0 服务器主机地址
PORT 8000 服务器端口
LOG_LEVEL INFO 日志记录级别(调试、信息、警告、错误、严重)
LOG_FORMAT json 日志格式(json或文本)
LOG_FILE logs/dad-joke-mcp.log 日志文件路径
LOG_TO_FILE false 启用文件日志记录
LOG_REQUESTS true 记录传入请求
LOG_RESPONSES true 记录传出响应

MCP客户端配置

克劳德桌面版

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "dad-joke": {
      "url": "http://localhost:8000/sse"
    }
  }
}

Cline(VS代码扩展)

添加到您的Cline MCP设置中:

{
  "mcpServers": {
    "dad-joke": {
      "url": "http://localhost:8000/sse",
      "transport": "sse"
    }
  }
}

用法

提示

使用 dad_joke 提示生成LLM提示:

  • 必修的: topic
  • 可选: style (默认值: classic)

工具

服务器提供自动化交互工具:

  1. joke_styles:返回所有可用笑话样式的列表。

    • 参数:无
  2. build_dad_joke_prompt:通过程序生成一个爸爸笑话提示。

    • 参数:
      • topic (字符串,必填):笑话的主题。
      • style (字符串,可选):笑话的风格。

可用样式:

  • pun -巧妙的文字游戏和多重含义
  • wordplay -创造性单词组合和同音词
  • observational -对日常情况的有趣观察
  • anti-humor -用文字妙语颠覆期望
  • question-answer -经典的“为什么…”或“你叫什么…”格式
  • one-liner -简短有力的单句笑话
  • knock-knock -传统的敲门笑话形式
  • classic -传统的爸爸笑话风格(默认)

例子

光标

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. 调用该工具并将输出用作提示

append /dad-joke/dad_joke to the test.txt file 使用提示(斜线将触发一个对话框,询问主题和样式)

日志记录

服务器提供广泛的日志记录,其中包含完整的请求/响应详细信息:

JSON格式(默认)

{
  "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
}

文本格式

集 LOG_FORMAT=text 对于人类可读的日志:

2026-02-01 20:24:00,123 - dad_joke_mcp - INFO - Generated dad joke prompt

建筑

┌─────────────────┐
│   MCP Client    │
│ (Claude/Cursor) │
└────────┬────────┘
         │ SSE/HTTP
         ▼
┌─────────────────┐
│  Dad Joke MCP   │
│     Server      │
│                 │
│  ┌───────────┐  │
│  │ Prompts / │  │
│  │   Tools   │  │
│  │ Handlers  │  │
│  └───────────┘  │
│                 │
│  ┌───────────┐  │
│  │  Logger   │  │
│  │ (JSON)    │  │
│  └───────────┘  │
└─────────────────┘

发展

运行测试

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

项目结构

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

故障排除

服务器无法启动

  • 检查端口8000是否已在使用中: lsof -i :8000
  • 验证Python版本: python --version (要求3.11+)
  • 检查日志中的错误消息

MCP客户端无法连接

  • 确保服务器正在运行: curl http://localhost:8000/sse
  • 验证防火墙设置是否允许端口8000上的连接
  • 检查客户端配置是否与服务器主机/端口匹配(确保使用 /sse 对于GET)

没有出现日志

  • 集 LOG_LEVEL=DEBUG 用于详细日志记录
  • 验证 LOG_REQUESTS=true 和 LOG_RESPONSES=true
  • 如果出现以下情况,请检查控制台输出或日志文件 LOG_TO_FILE=true

许可证

免费,就像啤酒一样。..将其用于任何用途,无需归因,窃取此代码,说这是你自己的,等等。


由以下材料制成❤️ 还有可怕的双关语