国际象棋游戏服务

MCP Chess是一个多人在线国际象棋应用,支持OAuth登录、实时游戏更新、游戏邀请邮件和MCP风格的工具调用。

  • by SamREye
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 SamREye/mcp-chess

使用说明

MCP国际象棋

一个最小的多人国际象棋应用程序,其中游戏突变被暴露为MCP风格的工具调用。

特性

  • OAuth登录(谷歌通过NextAuth)
  • 公共游戏列表和公共游戏详细信息页面
  • 只有经过身份验证的游戏玩家才能移动棋子
  • 每场游戏聊天(仅限玩家)
  • 游戏创建时通过SMTP发送游戏邀请电子邮件
  • 通过端点打开提醒电子邮件(阈值以分钟为单位)
  • 游戏/聊天更新的实时事件
  • MCP行动:
    • 通过电子邮件查询用户(也匹配姓名)
    • 新游戏
    • 移动件
    • 快照(SVG图像)
    • 状态(工件位置)
    • 历史(按时间顺序移动)

跑

  1. cp .env.example .env
  2. 填写OAuth、Ably和SMTP值:
    • DATABASE_URL (MongoDB连接字符串)
    • NEXTAUTH_SECRET, GOOGLE_ID, GOOGLE_SECRET
    • 仅适用于本地/测试: GOOGLE_ALLOW_EMAIL_ACCOUNT_LINKING=true
    • ABLY_API_KEY
    • SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASS, SMTP_FROM
  3. pnpm install
  4. pnpm run prisma:generate
  5. pnpm run db:init (将Prisma模式/索引应用于MongoDB)
  6. pnpm run dev

如果在热重新加载过程中出现dev-chok/CSS 404:

  • 跑 pnpm run dev:fresh 清除dev构建缓存并重新启动
  • 使用 pnpm run build && pnpm run start 用于稳定的非HMR预览会话

部署笔记(铁路)

  • 使用持久MongoDB服务并设置 DATABASE_URL 到该连接字符串。
  • start 跑 db:init 自动执行 prisma db push --skip-generate.

MCP端点

POST /api/mcp 使用JSON-RPC有效载荷:

  • initialize
  • tools/list
  • tools/call

工具名称位于 lib/mcp-tools.ts.

MCP客户端的OAuth:

  • 受保护的资源元数据: GET /.well-known/oauth-protected-resource
  • 授权服务器元数据: GET /.well-known/oauth-authorization-server
  • 授权端点: GET /oauth/authorize
  • 令牌终结点: POST /oauth/token
  • 可选RFC 7591动态注册: POST /oauth/register
  • 可选允许列表:set MCP_OAUTH_ALLOWED_CLIENT_IDS 以逗号分隔的客户端ID

Ably实时

  • 令牌终结点: GET /api/ably/token
  • 游戏页面使用的频道: game:<gameId>
  • 已发布事件:
    • game.created
    • move.created
    • game.finished
    • chat.created

转动提醒端点

POST /api/reminders/turn

标题:

  • content-type: application/json
  • x-reminder-key: <REMINDER_API_KEY> (仅在以下情况下需要 REMINDER_API_KEY 已设置)

有效载荷:

{
  "gameId": "your-game-id",
  "minMinutesSinceLastMove": 60,
  "dryRun": false
}