使用说明
MCP国际象棋
一个最小的多人国际象棋应用程序,其中游戏突变被暴露为MCP风格的工具调用。
特性
- OAuth登录(谷歌通过NextAuth)
- 公共游戏列表和公共游戏详细信息页面
- 只有经过身份验证的游戏玩家才能移动棋子
- 每场游戏聊天(仅限玩家)
- 游戏创建时通过SMTP发送游戏邀请电子邮件
- 通过端点打开提醒电子邮件(阈值以分钟为单位)
- 游戏/聊天更新的实时事件
- MCP行动:
- 通过电子邮件查询用户(也匹配姓名)
- 新游戏
- 移动件
- 快照(SVG图像)
- 状态(工件位置)
- 历史(按时间顺序移动)
跑
cp .env.example .env- 填写OAuth、Ably和SMTP值:
DATABASE_URL(MongoDB连接字符串)NEXTAUTH_SECRET,GOOGLE_ID,GOOGLE_SECRET- 仅适用于本地/测试:
GOOGLE_ALLOW_EMAIL_ACCOUNT_LINKING=true ABLY_API_KEYSMTP_HOST,SMTP_PORT,SMTP_SECURE,SMTP_USER,SMTP_PASS,SMTP_FROM
pnpm installpnpm run prisma:generatepnpm run db:init(将Prisma模式/索引应用于MongoDB)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有效载荷:
initializetools/listtools/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.createdmove.createdgame.finishedchat.created
转动提醒端点
POST /api/reminders/turn
标题:
content-type: application/jsonx-reminder-key: <REMINDER_API_KEY>(仅在以下情况下需要REMINDER_API_KEY已设置)
有效载荷:
{
"gameId": "your-game-id",
"minMinutesSinceLastMove": 60,
"dryRun": false
}