国际象棋API服务

一个提供Chess.com和Lichess API访问的MCP服务器,使LLM能够查找玩家资料、游戏历史、统计数据、俱乐部、锦标赛等信息。

  • by alegerber
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 alegerber/Chess.com-MCP

使用说明

国际象棋联合会

MCP(模型上下文协议)服务器,提供对 Chess.com发布数据API 和那个 地衣API。这使LLM能够从两个平台查找玩家资料、游戏历史、统计数据、俱乐部、锦标赛、谜题、排行榜等。

工具

Chess.com(29工具)

工具 说明
get_player_profile 获取玩家的个人资料(用户名、头衔、FIDE、状态等)
get_player_stats 获取所有游戏类型的玩家评分和赢/输/平局记录
is_player_online 检查玩家当前是否在线
get_current_daily_games 获取玩家当前正在玩的每日国际象棋游戏
get_games_to_move 在轮到玩家的地方进行日常游戏
get_game_archives 列出玩家每月可用的游戏档案
get_monthly_archives 获取特定月份的所有游戏
get_monthly_archive_pgn 将一个月的游戏作为单个PGN文档获取
get_player_clubs 获得球员所属的俱乐部
get_player_tournaments 获取玩家的锦标赛历史记录
get_player_matches 获取球员的球队比赛历史记录
get_titled_players 列出具有特定标题的玩家(GM、IM、FM等);分页 offset/limit
get_club_profile 获取俱乐部的个人资料信息
get_club_members 按活动级别获取俱乐部成员
get_club_matches 获取俱乐部的团队比赛
get_tournament 获取锦标赛详细信息
get_tournament_round 获取锦标赛回合的详细信息
get_tournament_round_group 获取锦标赛回合组的详细信息
get_team_match 获取每日球队比赛详情
get_team_match_board 从每日团队比赛中获取特定的棋盘
get_live_team_match 获取球队实时比赛详情
get_live_team_match_board 从现场团队比赛中获取特定的棋盘
get_country_profile 获取一个国家的个人资料
get_country_players 列出一个国家的球员;分页 offset/limit
get_country_clubs 列出一个国家的俱乐部;分页 offset/limit
get_daily_puzzle 获取今天的每日谜题
get_random_puzzle 获取一个随机谜题
get_streamers 列出Chess.com流媒体
get_leaderboards 获取所有游戏类型的排行榜

Liches(54个工具,+1个 LICHESS_TOKEN)

工具 说明
lichess_get_user 获取用户的个人资料、所有变体的评级、游戏计数和简介
lichess_get_user_status 检查用户是否在线、播放或流媒体(最多100个)
lichess_get_rating_history 通过每日数据点获取所有变体的评级历史
lichess_get_perf_stats 获取详细的性能统计数据:最佳胜利、最差失败、连胜
lichess_get_user_activity 获取最近的活动:游戏、锦标赛、练习等。
lichess_get_user_games 使用可选滤镜(评级、变体、颜色)获取最近的游戏; format: pgn 对于原始PGN
lichess_get_game 通过8个字符的ID获取特定游戏; format: pgn 对于原始PGN
lichess_get_current_game 获取用户当前正在进行的游戏或上次玩过的游戏
lichess_get_leaderboards 获得所有变种的前10名玩家
lichess_get_leaderboard 获得特定变体/速度的前N名玩家
lichess_get_daily_puzzle 获取包含解决方案和主题的每日谜题
lichess_get_puzzle 按ID获取特定谜题
lichess_get_next_puzzle 获得一个新的谜题,可选择按主题/难度
lichess_get_storm_dashboard 获取用户的Puzzle Storm统计数据
lichess_get_team 获取团队的个人资料、描述和成员数量
lichess_search_teams 按名称搜索团队
lichess_get_user_teams 获取用户所属的所有团队-- 仅在以下情况下注册 LICHESS_TOKEN 已设置,因为 /api/team/of 仅限OAuth
lichess_get_team_members 获取Lichess团队的成员
lichess_get_popular_teams 列出最受欢迎的球队(分页)
lichess_get_team_swiss_tournaments 列出一支球队的瑞士锦标赛
lichess_get_team_arena_tournaments 列出球队的竞技场锦标赛
lichess_get_current_tournaments 获取当前比赛日程
lichess_get_tournament 获取特定竞技场锦标赛的详细信息
lichess_get_user_tournaments 获取用户参加过的锦标赛
lichess_get_tv_channels 获取每个电视频道的特色游戏
lichess_get_tv_games 从特定电视频道获取最佳正在进行的游戏
lichess_get_streamers 在Twitch和YouTube上获取当前直播流媒体
lichess_get_crosstable 获取两个用户之间的正面记录
lichess_get_cloud_eval 获取FEN职位的云引擎评估
lichess_get_fide_player 通过数字ID(姓名、联盟、头衔、评级)查找FIDE球员
lichess_search_fide_players 按名字搜索FIDE球员
lichess_autocomplete_players 从部分术语中解析/消除Liches用户名的歧义
lichess_export_games_by_ids 按ID列表(JSON或PGN)一次导出多个游戏
lichess_get_users 按用户名列表一次获取多个用户(简洁摘要)
lichess_get_swiss 获取瑞士锦标赛的信息(状态、轮次、时钟、球员)
lichess_get_swiss_results 获得瑞士锦标赛的最终排名(前100名)
lichess_get_swiss_games 导出瑞士锦标赛的游戏(JSON或PGN)
lichess_export_swiss_trf 以FIDE TRF(x)格式导出瑞士锦标赛
lichess_get_tournament_results 获得竞技场锦标赛的最终排名(前100名)
lichess_get_tournament_teams 获得球队对战竞技场的每支球队排名
lichess_get_tournament_games 导出竞技场锦标赛的游戏(JSON或PGN)
lichess_get_simuls 列出当前同期展览(simul)
lichess_get_user_studies 列出用户的公共研究(元数据)
lichess_export_study_pgn 将整个公共研究导出为PGN(所有章节)
lichess_export_study_chapter_pgn 将单个研究章节导出为PGN
lichess_get_broadcasts 列出官方广播(现场锦标赛转播)
lichess_get_top_broadcasts 列出特色广播(活动/即将/过去)
lichess_get_broadcasts_by_user 列出用户创建的广播
lichess_get_broadcast 获取广播锦标赛的元数据和轮次
lichess_get_broadcast_round 以JSON格式获取广播回合的游戏/玩家
lichess_get_broadcast_round_pgn 获取广播轮次的PGN直播
lichess_get_broadcast_pgn 以单个PGN的形式获得整个广播锦标赛
lichess_opening_explorer 在打开资源管理器中查找位置(masters/lichess/player)
lichess_get_masters_game_pgn 从Opening Explorer获取OTB主游戏的PGN
lichess_tablebase FEN(标准/原子/反码)的残局表库查找(WDL/DTZ/DTM)

安装

无需克隆或构建--使用以下命令运行已发布的包 npx.

克劳德代码

claude mcp add chess-mcp -- npx -y chess-com-lichess-org-mcp

克劳德桌面版

将以下内容添加到您的配置中(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "chess-mcp": {
      "command": "npx",
      "args": ["-y", "chess-com-lichess-org-mcp"]
    }
  }
}

来源(开发)

npm install
npm run build

然后将MCP配置指向构建的入口点-- command: node, args: ["/absolute/path/to/chess-com-lichess-org-mcp/dist/index.js"].

可选:Lichess OAuth令牌

服务器是 默认情况下为零配置和无身份验证 --上面的每个工具(除了一个)都会访问公共端点,不需要登录。

少数Lichess端点仅支持OAuth。要启用需要它们的工具,请设置 LICHESS_TOKEN 环境变量为a Lichess个人访问令牌 (不需要范围 /api/team/of):

{
  "mcpServers": {
    "chess-mcp": {
      "command": "npx",
      "args": ["-y", "chess-com-lichess-org-mcp"],
      "env": { "LICHESS_TOKEN": "lip_xxxxxxxxxxxx" }
    }
  }
}
  • 设置后,令牌将按以下方式发送 Authorization: Bearer <token> 仅在 lichess.org 请求: (切勿访问单独的Opening Explorer/Tablebase主机),以及 lichess_get_user_teams 已注册。
  • 未设置时,行为不变:仅标记的工具根本不在工具列表中,所有公共工具都像以前一样工作。

用法示例

配置后,您可以询问LLM以下问题:

Chess.com:

  • “Hikaru的Chess.com评分是多少?”
  • “在Chess.com上给我看看马格努斯·卡尔森最近的闪电战游戏”
  • “谁是Chess.com排行榜上的顶级玩家?”
  • “获取今天的Chess.com每日谜题”
  • “在Chess.com上列出所有大师”

巫妖:

  • “显示Nykterstein博士的Lichess简介”
  • “Nykterstein博士和Firouzja2003在Lichess上的正面交锋记录是什么?”
  • “获取Lichess每日谜题”
  • “Lichess上最顶尖的子弹手是谁?”
  • “Lichess TV目前有哪些游戏?”
  • “获取此位置的云评估:rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/rnbqkbnr b KQkq-0 1”

跨平台:

  • “比较Hikaru在Chess.com和Lichess上的评分”
  • “从Chess.com和Lichess获取今天的每日谜题”

备注

  • 这两个API都是只读的,可以免费使用。公共端点不需要API密钥;可选 LICHESS_TOKEN 解锁一些仅限OAuth的Lichess阅读。
  • Chess.com:速率限制适用于并行请求。数据可以缓存长达12-24小时。
  • 巫妖:请求是连续的(一次一个)。429响应意味着您应该等待约1分钟。游戏将流导出为NDJSON或pass format: pgn 到 lichess_get_game / lichess_get_user_games 用于准备发动机分析的原始PGN。

许可证

麻省理工学院