返回市场
爸爸笑话MCP服务器

爸爸笑话MCP服务器

作者:OrenGrinker2 星标更新:2025-06-20

项目介绍

爸爸笑话 MCP 服务器

MIT 许可证 Node.js 版本 TypeScript

一个专业的模型上下文协议(MCP)服务器,将爸爸笑话的乐趣带入您的开发工作流程。非常适合在代码审查、团队会议或需要快速笑一笑时调节气氛。

🎯 功能

  • 多种笑话风格:经典、双关、温馨、令人尴尬的变体
  • 基于主题生成:根据特定主题生成笑话
  • 随机笑话生成:在需要灵感时获取随机笑话
  • 笑话评分系统:对爸爸笑话进行评分并获得反馈
  • 类别浏览器:浏览可用的笑话类别
  • 趣味统计:获取有趣的爸爸笑话统计数据
  • 类型安全:使用 TypeScript 构建以实现稳健开发
  • 专业架构:干净、易于维护的代码结构

🚀 快速开始

先决条件

  • Node.js >= 18.0.0
  • npm 或 yarn
  • TypeScript 知识(可选但有帮助)

安装

# 克隆仓库
git clone https://github.com/OrenGrinker/dad-jokes-mcp-server.git
cd dad-jokes-mcp-server

# 安装依赖
npm install

# 构建项目
npm run build

# 启动服务器
npm start

开发设置

# 在开发模式下运行并自动重建
npm run dev

# 运行代码检查
npm run lint

# 运行测试(当实现时)
npm test

# 清理构建目录
npm run clean

📋 可用提示

generate-dad-joke

根据特定主题生成爸爸笑话,可选风格。

参数:

  • topic (字符串):笑话的主题
  • style (可选字符串):"classic"、"punny"、"wholesome" 或 "groan-worthy"

示例:

{
  "topic": "编程",
  "style": "punny"
}

样本输出:

"为什么程序员喜欢暗模式?因为光会吸引虫子!"

random-dad-joke

生成随机爸爸笑话。

参数:

  • count (可选字符串):要生成的笑话数量("1" 到 "5")

示例:

{
  "count": "3"
}

rate-dad-joke

获取爸爸笑话的专业评分和反馈。

参数:

  • joke (字符串):要评估的笑话

示例:

{
  "joke": "为什么科学家不相信原子?因为它们构成了一切!"
}

🛠️ 可用工具

get-joke-categories

检索所有可用的笑话类别。

参数:

返回值: 包括动物、食物、科技、体育等在内的15个笑话类别列表。

joke-stats

获取关于爸爸笑话的趣味统计数据。

参数:

返回值: 如成功概率、平均尴尬时间等有趣的统计数据!

🔧 与 MCP 客户端集成

Claude Desktop 集成

添加到您的 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": {}
    }
  }
}

其他 MCP 客户端

对于其他兼容 MCP 的客户端,使用 stdio 传输:

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

🏗️ 架构

服务器采用干净的对象导向架构构建:

src/
├── index.ts          # 主服务器类和启动逻辑
├── types/            # TypeScript 类型定义(未来扩展)
├── prompts/          # 提示配置(未来扩展)
└── tools/            # 工具实现(未来扩展)

关键组件

  • DadJokesMcpServer:处理 MCP 协议的主要服务器类
  • 提示管理:组织提示定义并进行适当验证
  • 工具集成:可扩展的工具系统以增加功能
  • 错误处理:全面的错误处理和日志记录
  • 类型安全:严格的 TypeScript 覆盖配置

📖 使用示例

示例工作流

  1. 以幽默开始一天:

    提示:random-dad-joke
    数量:1
    
  2. 生成特定主题的笑话:

    提示:generate-dad-joke
    主题:"TypeScript"
    风格:"punny"
    
  3. 评价团队笑话:

    提示:rate-dad-joke
    笑话:"为什么开发者戴眼镜?因为他们不能 C#!"
    
  4. 浏览类别寻找灵感:

    工具:get-joke-categories
    

集成想法

  • 代码审查评论:在 PR 审查中添加爸爸笑话以轻松氛围
  • 团队站会:每天会议开始时讲一个爸爸笑话
  • 错误消息:通过幽默软化构建失败
  • 文档:为技术文档增添个性
  • Slack 机器人:与团队沟通工具集成

🧪 测试

项目包括基本的测试结构:

# 运行测试(在 tests/ 目录中实现测试)
npm test

# 在监视模式下运行测试
npm test -- --watch

# 带覆盖率运行测试
npm test -- --coverage

手动测试

手动测试服务器:

# 构建并启动
npm run build && npm start

# 在另一个终端中,使用示例 MCP 客户端测试
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

🔧 配置

环境变量

# 可选:启用调试日志
DEBUG=true

# 可选:设置自定义日志级别
LOG_LEVEL=info

自定义

修改笑话类别、风格或统计数据,编辑 src/index.ts 中的数组:

// 添加新类别
const categories = [
  "动物", "食物", "科技", // ... 现有的
  "您自定义的类别"
];

// 添加新的笑话风格
const styles = ["经典", "双关", "温馨", "令人尴尬", "您的风格"];

📦 发布

发布到 npm:

# 确保已登录 npm
npm login

# 构建并准备发布
npm run prepublishOnly

# 发布(先更新 package.json 中的版本)
npm version patch  # 或 minor/major
npm publish

🤝 贡献

我们欢迎贡献!这是如何开始的:

贡献者快速入门

  1. 在 GitHub 上分叉仓库
  2. 克隆您的分叉:
    git clone https://github.com/YOUR-USERNAME/dad-jokes-mcp-server.git
    cd dad-jokes-mcp-server
    
  3. 创建功能分支:
    git checkout -b feature/amazing-feature
    
  4. 进行更改并测试
  5. 提交更改:
    git commit -m "添加精彩功能"
    
  6. 推送到您的分支:
    git push origin feature/amazing-feature
    
  7. 在 GitHub 上打开拉取请求

开发指南

  • 遵循 TypeScript 最佳实践
  • 为新功能添加测试
  • 更新 API 更改的文档
  • 提交前运行 npm run lint
  • 保持笑话适合家庭且包容

贡献想法

  • 🎭 新的笑话类别(科学、游戏等)
  • 🛠️ 附加工具(笑话历史、收藏夹)
  • 🎨 笑话格式(ASCII 艺术、表情符号)
  • 🧪 测试覆盖改进
  • 📚 文档增强
  • 🚀 性能优化

🐛 故障排除

常见问题

  1. 构建错误:

    # 清除缓存并重新构建
    npm run clean && npm install && npm run build
    
  2. MCP 连接问题:

    • 验证 Node.js 版本 >= 18.0.0
    • 检查 MCP 客户端配置中的文件路径
    • 确保构建文件存在于 dist/
  3. TypeScript 错误:

    • 运行 npm run lint 检查问题
    • 验证所有依赖项是否已安装

获取帮助

📄 许可证

此项目采用 MIT 许可证——详情参见 LICENSE 文件。

🎭 为什么是爸爸笑话?

爸爸笑话不仅仅是幽默——它们是:

  • 破冰者,适用于团队会议
  • 减压器,在紧张的编码时段
  • 话题开启者,在代码审查中
  • 士气提升者,为开发团队
  • 通用语言,超越技术障碍
  • 信心建立者(如果你能承受爸爸笑话,你就能应对任何代码审查)

🚀 发展路线图

我们正在考虑的未来增强功能:

  • 🎯 笑话持久性(保存收藏夹)
  • 🌐 多语言支持
  • 🤖 AI 助力的笑话生成改进
  • 📊 分析(最受欢迎的笑话、使用统计)
  • 🎨 丰富的格式(markdown、表情符号)
  • 🔌 更多集成(Slack、Discord 等)

🙏 致谢

  • 模型上下文协议 团队提供的优秀框架
  • 爸爸笑话社区提供的无限灵感
  • 所有帮助改进此项目的贡献者
  • 每一位欣赏糟糕双关语的开发者

📊 项目统计

  • 语言:TypeScript
  • 运行时:Node.js
  • 协议:模型上下文协议(MCP)
  • 许可证:MIT
  • 维护者OrenGrinker

记住:没有笑声的一天是浪费的一天,但充满爸爸笑话的一天则是大家一起尴尬的日子。 😄

趣闻:这份 README 包含了恰好 42 个爸爸笑话引用。这不是巧合——这是对生命、宇宙以及一切的答案……包括为什么开发者喜欢糟糕的双关语!🤓