国际象棋引擎

一个基于模型上下文协议(MCP)构建的强大国际象棋引擎和游戏服务器,支持与AI对战、位置分析,并可将国际象棋功能集成到AI应用中。

  • by arvid-berndtsson
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 arvid-berndtsson/Chess-MCP

使用说明

国际象棋MCP(模型上下文协议)

使用模型上下文协议(MCP)构建的强大国际象棋引擎和游戏服务器。与人工智能下棋,分析位置,并将象棋功能集成到您的人工智能应用程序中。

🎯 特性

核心象棋引擎

  • 完整的国际象棋规则:完成所有国际象棋规则的执行,包括投掷、通行和典当推广
  • 移动验证:自动验证所有国际象棋棋步
  • 游戏状态跟踪:跟踪检查、核对、相持和平局条件
  • 移动历史记录:使用代数符号完成移动历史记录

多种游戏模式

  • 人类vs人类:经典双人象棋
  • 人类vs人工智能:与电脑对战,难度可调(1-5级)
  • AI vs AI:观看AI对战

高级AI功能

  • 智能AI引擎:具有alpha-beta修剪的Minimax算法
  • 置换表:通过位置缓存将性能提高2-5倍
  • 迭代深化:具有最佳时间管理的渐进式深度搜索
  • 内存优化:LRU驱逐和受控内存使用
  • 5难度级别:从初学者(随机)到专家(深度8)
  • 自动播放:AI在人工智能模式下自动响应
  • 手动控制:使用 ai 人工智能手动移动命令
  • 职位分析:AI可以分析位置并建议最佳行动

高级功能

  • 职位分析:分析职位并获得最佳行动建议
  • FEN支持:使用FEN符号加载和保存位置
  • PGN支持:以PGN格式导入和导出游戏
  • 移动撤消:撤消移动以探索变化
  • 合法移动显示:显示任何职位的所有合法动作

漂亮的UI

  • ASCII国际象棋:使用Unicode棋子的清晰易读的棋盘表示
  • 颜色编码输出:不同类型的信息有不同的颜色
  • 交互式命令:易于使用的命令系统
  • 实时状态:实时游戏状态更新

🚀 安装

先决条件

  • Node.js 18+
  • npm或纱线

设置

# Clone the repository
git clone <repository-url>
cd Chess-MCP

# Install dependencies
npm install

# No build step needed - uses tsx for direct TypeScript execution

📖 用法

交互式CLI模式(建议播放)

立即开始下棋:

# Start the interactive chess interface
npm run cli

# You'll see the chess prompt: chess>
# Type 'help' to see all available commands

作为MCP服务器

国际象棋MCP可以集成到任何兼容MCP的客户端中:

# Run the MCP server directly with tsx
npx tsx src/index.ts

# Or use the npm script
npm start

📚 文档

有关详细文档,请参阅 文档 文件夹:

🎮 可用命令

基本游戏命令

  • move <move> -采取行动(例如。, move e2e4, move Nf3)
  • board -显示当前电路板
  • status -显示游戏状态
  • history -显示移动历史记录
  • undo -撤消上次移动
  • reset -重置到起始位置

分析命令

  • moves <square> -显示正方形的合法移动(例如。, moves e2)
  • all-moves -显示所有合法动作
  • analyze [depth] -分析位置(默认深度:3)

游戏模式命令

  • mode <type> [ai-level] -设置游戏模式:
    • mode human-vs-human -两名人类玩家
    • mode human-vs-ai 3 -对抗AI(1-5级)
    • mode ai-vs-ai 5 -观看AI对战
  • ai -让AI玩一个动作(用于手动控制)

导入/导出命令

  • fen <position> -FEN的负载位置
  • pgn <game> -从PGN加载游戏
  • save -将当前游戏保存到PGN

🔧 MCP工具

国际象棋MCP为AI集成提供了以下工具:

游戏管理

  • start_new_game -使用指定模式开始新游戏
  • reset_game -重置到起始位置
  • get_game_status -获取当前游戏状态

移动操作

  • make_move -下象棋
  • get_legal_moves -获得方块或所有棋子的合法移动
  • undo_move -撤消上次移动

董事会和分析

  • get_board_state -获取当前板状态
  • analyze_position -分析头寸并提出行动建议
  • get_move_history -获取完整的移动历史记录

AI功能

  • ai_move -让AI发挥作用
  • load_position -FEN的负载位置
  • save_game -将游戏保存到PGN
  • load_game -从PGN加载游戏

🎯 示例用法

对抗AI

快速入门:

# Start the interactive CLI
npm run cli

# Set up Human vs AI (Level 2 - moderate difficulty)
chess> mode human-vs-ai 2

# Make your first move
chess> move e2e4
# AI automatically responds!

# Continue playing
chess> move g1f3
# AI automatically responds!

# Check the board
chess> board

# See game status
chess> status

AI难度级别:

  • 级别1:随机移动(非常适合初学者)
  • 2级:基本策略(适合休闲游戏)
  • 级别3:中等难度(具有挑战性)
  • 级别4:先进的战略(极具挑战性)
  • 五级:专家级(极具挑战性)

人工智能手动控制:

# Set mode but control when AI plays
chess> mode human-vs-ai 3
chess> move e2e4
chess> ai  # Tell AI to play now
chess> move g1f3
chess> ai  # Tell AI to play again

观看AI与AI:

chess> mode ai-vs-ai 3
chess> ai  # First AI move
chess> ai  # Second AI move
chess> ai  # Continue watching...

开始游戏

chess> mode human-vs-ai 3
Game mode set to: human-vs-ai (AI level: 3)

chess> move e2e4
Move e2e4 made successfully!

  Chess Board
    a b c d e f g h
  ┌─────────────────┐
 8│ ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜ │ 8
 7│ ♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟ │ 7
 6│ · · · · · · · · │ 6
 5│ · · · · · · · · │ 5
 4│ · · · · ♙ · · · │ 4
 3│ · · · · · · · · │ 3
 2│ ♙ ♙ ♙ ♙ · ♙ ♙ ♙ │ 2
 1│ ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖ │ 1
  └─────────────────┘
    a b c d e f g h

Current turn: Black

AI played: e7e5

分析职位

chess> analyze 4
Position Analysis (Depth: 4):
Evaluation: +0.3

Best moves:
1. Nf3
2. Nc3
3. d4

获得合法行动

chess> moves e2
Legal moves for e2:
1. e3
2. e4

🏗️ 建筑

国际象棋MCP采用模块化架构构建:

  • ChessEngine:使用chess.js的核心国际象棋逻辑
  • ChessUI:用户界面和显示逻辑
  • ChessAI:采用极小极大算法的AI对手
  • ChessMCPServer:MCP协议实施
  • InteractiveCLI:本地测试接口

🎨 用户体验提示

从用户的角度让它更酷

  1. 视觉吸引力

    • 美丽的Unicode棋子
    • 不同信息类型的颜色编码输出
    • 干净、可读的电路板布局
  2. 易用性

    • 简单直观的命令
    • 有用的错误消息
    • 自动完成建议
  3. 高级功能

    • 基于评估分数的职位分析
    • 多种AI难度级别
    • 游戏导入/导出功能
  4. 交互式元素

    • 实时游戏状态更新
    • 用有用的反馈移动验证
    • 撤消探索功能
  5. 教育价值

    • 法律行动亮点
    • 职位分析说明
    • 移动历史跟踪

🔮 未来的增强功能

  • web界面:基于浏览器的国际象棋界面
  • 打开数据库:内置开本
  • 残局桌面:完美的残局
  • 联网对战:网络多人游戏
  • 锦标赛模式:循环赛
  • 拼图模式:国际象棋谜题和战术
  • 语音命令:语音控制象棋
  • 移动应用程序:iOS/Android国际象棋应用程序

🤝 贡献

欢迎投稿!请随时提交pull请求或打开bug和功能请求的问题。

📄 许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

🙏 致谢

🔧 故障排除

常见问题

“找不到命令:npm”

  • 请确保已安装Node.js: node --version
  • 从以下位置安装Node.js nodejs.org

“找不到模块”错误

  • 跑 npm install 安装依赖项
  • 跑 npm run build 编译TypeScript

交互式CLI未启动

  • 使用 npm run cli (不是 npm run dev)
  • 确保你在国际象棋MCP目录中

AI没有响应

  • 检查游戏模式: mode human-vs-ai 2
  • 在人类vs人工智能模式下,人工智能会自动响应
  • 使用 ai 人工智能手动移动命令

移动不起作用

  • 检查合法行动: moves <square>
  • 使用正确的格式: move e2e4 或 move Nf3
  • 检查游戏状态: status

获取帮助

  • 类型 help 在命令列表的国际象棋CLI中
  • 使用 status 查看当前游戏状态
  • 使用 moves <square> 看到法律行动
  • 使用 undo 如果你犯了错误

下棋快乐! ♔♕♖♗♘♙