mcpField
C
Chess Esca

Chess Esca

本地服务
github.com游戏娱乐07 周前更新

关于 Chess Esca

Chess Esca 是用于读取和解释国际象棋局面的 MCP 服务,面向需要规则事实而非棋力评估的 Agent。它提供合法性及依据、局面状态、残局、开局和 PGN 处理,答案同时包含枚举值与简明说明。

主要功能

  1. 01检查局面状态和可申诉和棋
  2. 02列出合法着法及分类
  3. 03解释着法合法性与原因
  4. 04读取残局信息和开局编码
  5. 05读取和生成 PGN

适用场景

  1. 01核验某步棋是否合法及原因
  2. 02整理局面中的和棋条件
  3. 03查询开局书着法
  4. 04解析或导出棋局 PGN

MCP 相关

该 MCP 服务通过工具向 MCP 客户端提供棋局规则、局面事实、开局信息和 PGN 读写能力。它不运行引擎,也不搜索或评估着法优劣。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"anglerfishchess-chess-esca": {
"command": "uvx",
"args": [
"chess-esca-mcp"
]
}
}
}
启动命令uvx chess-esca-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypichess-esca-mcp0.4.0

工具

9

收录的工具列表 · 更新于 2 周前

参数类型必填说明
fenany否以 FEN 或 EPD 表示的局面;省略时使用该变体的初始局面。
pgnany否以 PGN 表示的完整棋局,用于替代 `fen` 和 `moves`。
movesany否从 `fen` 开始的走法,每步使用 SAN('Nf3')或 UCI('g1f3')。只有提供导致当前局面的走法,才能检测重复局面和五十回合和棋申请。
variantstring否规则:'classic' 或 'chess960'。

详细介绍

chess-esca-mcp

一个基于 esca 的 MCP 服务:以 JSON 形式提供棋规,供 Agent 读取。

输入 FEN 和着法,输出枚举值及其对应的格子。着法是否合法及原因、局面的状态和双方可提出的和棋,以及局面的命名事实、子力决定的残局及其理论结论、开局的 ECO 代码、开局库中的着法,还有 PGN 的读取与写入。每个分类答案还会附带 prose:用一句通俗的英文描述同一内容,与枚举值并列,而非取而代之。

这里没有引擎,也没有搜索。 此服务的任何回答都不会说明某个着法有多 好。要获取数值和着法线路,请使用 chess-uci-mcp,它可以驱动 Stockfish 或 Leela;两者回答的问题不同,很适合并列使用。

依赖项

Python 3.12 或更新版本,以及 uv/uvx。

用法

"mcpServers": {
  "chess-esca-mcp": {
    "command": "uvx",
    "args": ["chess-esca-mcp@latest"]
  }
}

对于 Claude Desktop,请在 claude_desktop_config.json 中配置,路径为 Settings → Developer → Edit Config:

  • macOS:~/Library/Application\ Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%/Claude/claude_desktop_config.json
  • Linux:~/.config/Claude/claude_desktop_config.json

对于 Claude Code,插件会自动完成配置:

/plugin marketplace add AnglerfishChess/plugins
/plugin install chess-esca-mcp@anglerfish-chess

此服务不接受参数。它只会读取你提供的局面,以及你为 book_moves 指定的开局库文件。

工具

每个工具都以相同方式接收局面:fen(省略时使用初始局面)、从该局面开始的着法——每步以 SAN(Nf3)或 UCI(g1f3)格式书写——或改为提供完整棋局的 pgn。variant 的值为 classic 或 chess960。只有提供引导至该局面的着法时,才能判断重复局面和五十回合和棋请求,因为 FEN 不包含这些信息。

工具回答内容
position完整状态:行棋方、将军及其将军子、棋局状态、自动和棋及可请求的和棋及其依据、合法着法数量、开局、子力、双方两种王车易位的所有阻碍、吃过路兵机会、牵制和串击,以及由子力决定的残局。
legal_moves所有合法着法的 SAN 和 UCI 格式,以及每步着法的作用、被吃棋子、升变、将军和静态交换评估;并按吃子、将军、王车易位、升变、吃过路兵和非吃子着法分组。
explain_move某一步着法是否合法。若不合法,则一次列出所有原因及每个原因所依据的格子;若合法,则说明它会带来的变化、着法后的局面,以及它会开启的和棋请求。
facts按组列出局面的命名事实,每个值都标有名称;若双方的值不同,还会标明颜色。groups 用于选择分组;除非明确请求,否则不包含 placement 和 maps。
ending子力决定的残局:其标识、类别、理论上的结果判断、获胜技巧,以及判定所依据的兵赛、象和对王。
opening局面的 ECO 代码和名称,以及该线路到达的最深命名局面。
book_movesPolyglot 开局库中适用于该局面的着法及其权重。
pgn读取 PGN 棋局,返回棋局头信息、着法、注释、最终局面、开局和结果。
to_pgn将着法列表写成 PGN 棋局。

如果输入未指定局面、着法或棋局,返回内容为 {"error": {"kind": ..., "message": ..., "hint": ...}},不会返回回溯信息。

资源 esca://facts-catalogue 列出所有事实分组及其包含的字段、每个字段的类型,以及一条释义;它由 esca 根据事实定义自动生成。提示词 analyse-position 会引导 Agent 使用这些工具读取局面。

开局库

不附带任何棋库。book_moves 接受你自己的 Polyglot .bin 文件路径;这种格式很常见,因此任何支持读取 Polyglot 的引擎都能使用为其编写的棋库。esca.polyglot 提供用于获取棋库的 download(url, path),以及用于从 PGN 写入棋库的 Builder。

开发

该服务是 esca 仓库中的第二个发行包:库位于仓库根目录,此目录与其并列。开发时,它会使用相邻 crate 中的 esca;安装后,则会使用 PyPI 上的版本。

git clone https://github.com/AnglerfishChess/esca.git
cd esca/mcp

uv sync --all-groups     # builds the esca extension from ../ and installs it here
uv run --no-sync pytest
uvx ruff check . && uvx ruff format --check . && uvx pyrefly check

在检出目录中运行 uv run chess-esca-mcp。

版本号与 esca 自身一致:同一个标签会同时发布库和此服务,esca== 固定的也是同一个版本。

MCP 注册表

registry.modelcontextprotocol.io 是公开 MCP 服务的索引。该条目由 server.json 描述,名称为 io.github.AnglerfishChess/chess-esca-mcp;PyPI 软件包的所有权由本文件顶部附近的 mcp-name: 标记证明,该标记会成为 PyPI 显示的软件包描述。注册表从已发布的制品中读取,因此只有包含该标记的版本发布到 PyPI 后,条目才会生效。

相关项目

  • esca — 此服务所使用的库。
  • chess-uci-mcp — 引擎端:使用 Stockfish 或 Leela 进行分析并给出最佳着法。

许可证

MIT — 详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。