Chess Esca MCP server
io.github.AnglerfishChess/chess-esca-mcp·v0.4.0Read chess positions by the rules: legality with its evidence, draws, facts, openings, PGN
0 stars30 downloads/wk
Reviews
Write oneNobody has reviewed Chess Esca yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Chess Esca tools (9)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
book_movesThe moves a Polyglot opening book holds for a position.
endingexplain_moveWhether one move is legal, and what it does or what forbids it.
factsThe named facts esca reads off a position, group by group.
legal_movesEvery legal move of a position, in SAN and in UCI.
openingThe ECO code and name of a position, and of the line that reached it.
pgnA PGN game read into its headers, its moves and where it ended up.
positionThe whole state of a chess position, read by the rules.
to_pgnA list of moves written out as a PGN game.
Public scan report
scanner v0.1.10 · 2026-10-14 · same rubric, same numbers if you re-run it
- Code scan7 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 33 days ago12/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year9/10
How Chess Esca compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 89/100
- higher than 80% of 48,243 servers
- Tools
- 9
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 30
- more than 18% of 12,306 servers with a package
What its tools let an agent do: 7 read · 2 create
Install Chess Esca in Claude Code, Cursor or VS Code
claude mcp add chess-esca-mcp -- uvx chess-esca-mcp
What the publisher says
From the Chess Esca repository's README, as published. We do not edit it. Read it on GitHub
esca
Esca is the anglerfish's lure — the light that shows what is really on the board.
Rust/Python MIT chess library: rules, facts, explanations, PGN, opening books and names, UCI client, and an MCP server over it; one API, Chess960 throughout.
Position is placement and state and nothing else. Rules live in Variant implementations — Classic and Chess960 — so a position answers a rules question by taking the variant that defines it, and a new variant is a new implementation and nothing else. A Game pairs a variant with the moves played, which is what repetition and claimable draws need. Facts answers what is true about one position — 221 named facts in 14 groups — and annotated_moves() answers what each of its legal moves does, with 27 more. Every fact is typed, named after what a player would call it, and told about White and Black by name.
Rust
[dependencies]
esca = "0.4"use esca::{Colour, Game, classic};
let mut game = Game::new(classic()); // Chess960 rules: `esca::chess960()`
game.play_san("e4").unwrap();
game.play_uci("e7e5").unwrap();
println!("{}", game.position().fen());
let facts = game.facts();
println!("{}", facts.tactics.legal_move_count.white);
println!("{:?}", facts.pawns.passed.of(Colour::Black).files());
println!("{}", facts.summary());Cargo features, none on by default: lichess (streaming reader for the Lichess evaluation dump), pgn (reading and writing games as PGN), polyglot (opening books), openings (the bundled ECO catalogue), serde (the one JSON form of the facts, and the JSON Schema for it), tensors (a run of positions as one typed array per fact) and python (the PyO3 module the wheel is built from). Position::polyglot_key needs no feature.
Python
pip install escaimport esca
game = esca.Game() # Chess960 rules: esca.Game(variant=esca.CHESS960)
game.play_san("e4")
game.play("e7e5")
print(game.position.fen)
facts = game.facts()
print(facts.tactics.legal_move_count.white)
print(list(facts.pawns.passed.black.files))
print(facts.to_dict()["material"]) # every group in the one JSON formWheels are abi3 for Python 3.12 and up. pip install esca[tensors] adds NumPy and esca.tensors, which turns a run of positions into one typed array per fact.
Examples
Three short programs a side, reading the same examples/games.pgn, in examples/ and python/examples/:
arrays. Takes the engine's path; without one it says so and stops.
- pgnreport / readgames.py — per game of a PGN file: opening, final position, ending, passers.
- whyillegal / legalmoves.py — every legal move and what it does, then why one other is not.
- enginegame / enginegame.py — a UCI engine against itself, its ending as English, JSON and
What it covers
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Chess Esca: common questions
- Is Chess Esca MCP server safe?
- Yes, by our scan: it is graded A (89/100). Read the Chess Esca safety report
- How do I install Chess Esca?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Chess Esca need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Chess Esca maintained?
- The last commit was 55 days ago (2026-09-11). The latest release is v0.4.0.
- How does Chess Esca compare with other MCP servers?
- safety score 89/100 (higher than 80% of 48,243 servers); tools 9 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.