MCP.Market

Chess Esca MCP server

by AnglerfishChess·io.github.AnglerfishChess/chess-esca-mcp·v0.4.0

Read chess positions by the rules: legality with its evidence, draws, facts, openings, PGN

A89/100grade A
What users say
No reviews yet
Be the first
Safety scan
A89/100

full report

Adoption
New

0 stars30 downloads/wk

Reviews

Write one

Nobody 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 posts

Read from the package source without running it. The installed server may list more.

  • book_moves

    The moves a Polyglot opening book holds for a position.

  • ending
  • explain_move

    Whether one move is legal, and what it does or what forbids it.

  • facts

    The named facts esca reads off a position, group by group.

  • legal_moves

    Every legal move of a position, in SAN and in UCI.

  • opening

    The ECO code and name of a position, and of the line that reached it.

  • pgn

    A PGN game read into its headers, its moves and where it ended up.

  • position

    The whole state of a chess position, read by the rules.

  • to_pgn

    A 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

no findings
  • 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
Overall 89/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

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
Add to Cursor

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 esca
import 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 form

Wheels 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.