返回市场
乐透-MCP服务器

乐透-MCP服务器

作者:labforadvancedstudy2 星标更新:2025-05-22

项目介绍

同行乐透 MCP 服务器

这是一个使用 Model Context Protocol (MCP) 的服务器,可以自动购买同行乐透的彩票并检查中奖结果。

📋 功能

  • 自动购买彩票:通过同行乐透账户登录后自动购买彩票
  • 检查中奖结果:自动检查已购买的彩票号码的中奖情况
  • 增强安全性:加密存储 ID 和密码以确保安全
  • 支持 Docker:无需安装即可通过 Docker 直接运行

🚀 安装及运行方法

方法 1: 使用 npx (推荐) ⚡

# 账户设置助手
npx @labforadvanced.study/lotto-mcp-server --setup

# 或者直接编码
echo "your_id,your_password" | base64

Claude Desktop 设置:

{
  "mcpServers": {
    "lotto": {
      "command": "npx",
      "args": ["@labforadvanced.study/lotto-mcp-server"],
      "env": {
        "LOTTO_CREDENTIALS": "your_base64_credentials"
      }
    }
  }
}

关于 npm 的详细用法,请参阅 NPM_GUIDE.md

方法 2: 使用 Docker 🐳

无需额外安装或构建,可以直接使用发布的 Docker 镜像!

第一步: 编码账户信息

在终端简单地进行编码:

# macOS/Linux
echo "your_lotto_id,your_password" | base64

# Windows (PowerShell)
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("your_id,your_password"))

# 示例结果: bXlfbG90dG9faWQsbXlfcGFzc3dvcmQ=

第二步: Claude Desktop 设置

claude_desktop_config.json 文件中添加以下配置:

{
  "mcpServers": {
    "lotto": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "LOTTO_CREDENTIALS=bXlfbG90dG9faWQsbXlfcGFzc3dvcmQ=",
        "your-dockerhub-username/lotto-mcp-server:latest"
      ]
    }
  }
}

第三步: 重启 Claude Desktop

重启 Claude Desktop 即可开始使用!

给我买三张彩票

方法 3: 本地安装

2-1. 必要条件

  • Node.js 18.0.0 及以上版本
  • 同行乐透账户(需预先充值)

2-2. 安装

# 安装依赖
npm install

# 安装 Playwright 浏览器
npm run install-playwright

# 构建
npm run build

3. 设置账户信息(两种方式)

方法 1: 简单模式(Base64 编码)- 推荐 ⭐

# 方法 1-A: 使用交互式工具
npm run encrypt-credentials
# 选择: 1 (简单模式)

# 方法 1-B: 使用简单脚本
npm run simple-encode

# 方法 1-C: 在终端直接
echo "your_id,your_password" | base64

示例输出:

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

方法 2: 高级模式(AES 加密)

npm run encrypt-credentials
# 选择: 2 (高级模式)

示例输出:

{
  "mcpServers": {
    "lotto": {
      "command": "node",
      "args": ["path/to/lotto-mcp-server/dist/index.js"],
      "env": {
        "LOTTO_ENCRYPTED_ID": "YWJjZGVmZ2hpams...",
        "LOTTO_ENCRYPTED_PASSWORD": "bXlwYXNzd29yZA...",
        "LOTTO_SECRET_KEY": "optional-custom-key"
      }
    }
  }
}

4. Claude Desktop 设置

  1. 将上面生成的配置复制到 claude_desktop_config.json 文件中
  2. "path/to/lotto-mcp-server/dist/index.js" 替换为实际路径
  3. 重启 Claude Desktop

5. 开发模式运行

npm run dev

6. 生产环境运行

npm start

🛠️ 使用方法

此 MCP 服务器提供以下两个工具:

1. purchase_lotto - 购买彩票

自动从同行乐透购买彩票。ID/密码会从设置中自动获取。

输入参数:

  • count (number): 要购买的彩票游戏数量 (1-5)

示例输出:

{
  "success": true,
  "numbers": [
    [1, 14, 21, 27, 30, 44],
    [4, 5, 27, 29, 40, 44],
    [9, 18, 19, 24, 38, 42]
  ],
  "message": "成功购买了3个游戏"
}

2. check_lotto_winning - 检查中奖

检查彩票号码的中奖情况。

输入参数:

  • numbers (array): 要检查的彩票号码数组 (例如: [[1,2,3,4,5,6], [7,8,9,10,11,12]])
  • round (number, 可选): 要检查的期数 (默认值: 当前期数)

示例输出:

{
  "success": true,
  "results": [
    {
      "numbers": [1, 2, 3, 4, 5, 6],
      "rank": 5,
      "matchedNumbers": [1, 2, 3]
    },
    {
      "numbers": [7, 8, 9, 10, 11, 12],
      "rank": 0,
      "matchedNumbers": []
    }
  ],
  "message": "检查了第1143期的中奖结果"
}

💡 在 MCP 客户端中使用

在 Claude Desktop 中使用

完成设置后,在 Claude 中可以这样使用:

给我买三张彩票
检查这些彩票号码是否中奖: [[1,2,3,4,5,6], [7,8,9,10,11,12]]

🔐 安全功能

简单模式(Base64)- 推荐

  • 可以通过终端 echo "id,password" | base64 简单生成
  • 原始密码不会直接暴露
  • 无法直接在设置文件中查看密码
  • 对大多数用户来说已经足够安全

高级模式(AES 加密)

  • 使用 AES-256-CBC 对称加密
  • 支持自定义加密密钥
  • 通过 Base64 进一步编码来加强安全层
  • 在需要高级安全的情况下使用

直接在终端生成

可以在终端直接生成简单模式:

# macOS/Linux
echo "your_id,your_password" | base64

# Windows (PowerShell)
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("your_id,your_password"))

安全级别比较

方式安全级别便利性使用场景
简单模式⭐⭐⭐⭐⭐⭐⭐⭐一般用户,个人电脑
高级模式⭐⭐⭐⭐⭐⭐⭐⭐敏感环境,公用电脑

⚠️ 注意事项

  1. 预存金额:购买前必须预先向同行乐透账户充值足够的金额。
  2. 账户安全:妥善管理加密的账户信息和密钥。
  3. 购买限制:一次最多只能购买5个游戏。
  4. 中奖号码:彩票号码必须是1到45之间的6个数字。
  5. 浏览器资源:Playwright 运行 Chromium,因此会占用系统资源。

🔧 配置选项

可以在 src/lotto-service.ts 文件中修改以下选项:

this.lottoService = new BaseLottoService({
  controller: chromium,
  headless: true,              // 更改为 false 则显示浏览器窗口
  defaultViewport: { 
    width: 1280, 
    height: 720 
  },
  logLevel: 2                  // 日志级别 (0: ERROR, 1: WARN, 2: INFO, 3: DEBUG)
});

📁 项目结构

lotto-mcp-server/
├── src/
│   ├── index.ts              # MCP 服务器主文件
│   ├── lotto-service.ts      # 彩票服务类
│   ├── crypto-utils.ts       # 加密/解密工具
│   └── encrypt-credentials.ts # 账户信息编码工具
├── scripts/
│   └── simple-encode.sh      # 简单编码脚本
├── dist/                     # 构建结果
├── package.json
├── tsconfig.json
└── README.md

🐛 问题解决

浏览器安装错误

# 重新安装 Playwright 浏览器
npx playwright install chromium

账户信息错误

# 使用简单模式重新设置
npm run simple-encode

# 或者使用高级模式重新设置
npm run encrypt-credentials

登录失败

  • 确认 ID 和密码正确无误
  • 直接登录同行乐透网站检查账户状态
  • 检查是否有因安全设置导致的登录限制

购买失败

  • 确认账户有足够的预存金额
  • 检查同行乐透网站的服务时间(周六晚上至周日下午可能会暂停服务)

📄 许可证

MIT License

🤝 贡献

欢迎提交 bug 报告或功能建议,请通过 Issue 提交。

⚖️ 法律声明

此工具不使用同行乐透的官方 API,而是通过网页抓取实现。使用过程中产生的所有责任由用户自行承担,对于因过度使用而导致的账户处罚或其他问题,我们概不负责。