Releases: williamcodes/speedrun-mcp
Release list
v0.3.4
Supporting speedrun.com
speedrun.com is paid for by the ads on its pages, and API reads skip them. Starting with this release, when the server cannot tell that you are a speedrun.com Supporter, the first result of a session and every third after it carry a short supporter_notice, and the assistant is asked to mention the Supporter program in a sentence. Supporters who add their API key never see it. Nothing is gated; every read tool still works without a key. See Supporting speedrun.com in the README for the reasoning.
whoaminow reportssupporter: true/false/nullfor the key's account.- The Claude Desktop bundle
speedrun-mcp-0.3.4.mcpbis attached below.
pipx install speedrun-mcp # or: uv tool install speedrun-mcp
v0.3.3
Fixes
list_runs,list_unverified_runsand theexaminerfilter now resolve game abbreviations and usernames to ids instead of silently returning unrelated runs.get_user_personal_bestserrors on an unknown user instead of reporting zero PBs, and echoes the resolved player.get_leaderboard/get_world_recordreject an invaliddateand unknown variable ids instead of dropping them and returning the unfiltered board.get_runnow includes game, category, level, status, examiner, platform, emulated flag, submission time and subcategory values.- Blank ids fail with a clear message rather than an AttributeError; blank search names are rejected locally.
- Paged results carry an explicit envelope with counts and scope.
New
- Claude Desktop one-click install.
speedrun-mcp-0.3.3.mcpbis attached below. Open it with Claude Desktop; it installs Python and dependencies itself. The optional API key and the writes toggle are extension settings. - Releases now publish to the MCP registry automatically, listing both the PyPI package and the bundle.
pipx install speedrun-mcp # or: uv tool install speedrun-mcp
v0.3.2
Hardening + local write validation (patch)
- Local write validation —
submit_run/set_run_statusreject obvious garbage (non-finite/non-positive times, blank ids, malformed dates, non-http(s)video URLs, whitespace-only rejection reasons) before a round-trip; the API stays the source of truth for game rules. - Release pipeline — publishing now gates on full CI, a tag↔version assertion, and a built-wheel smoke test.
- Coverage — added an MCP-protocol stdio smoke test (in CI) and a scheduled read-only live contract suite.
- Plus the earlier defensive-formatter hardening and the dev-tooling layer (Ruff format + mypy + pre-commit).
v0.3.1
Defensive hardening + test coverage (patch)
Outcome of a multi-agent code review. No API changes.
- Formatters/client now degrade gracefully on malformed/partial API payloads (null embed blocks, missing variable ids, empty 204 write bodies, bare-string video links) instead of aborting a tool call.
- 403 errors no longer assert a bad key (covers non-moderator permission denials); pagination clamps to the API's 200-per-page cap; client enforces the documented
times/ reject-reason contracts; notifications fetch is bounded. - +16 tests (46 offline): all five write tools verified to refuse in read-only mode (incl. the irreversible
delete_run), 420/404 status mapping, pagination walk, empty-body writes.
v0.3.0
More read coverage + registry schema bump
New read tools (all public, no key)
search_series/get_series— game series and their gamesget_game_records— every category's records for a game in one calllist_runs— runs by player / game / category / status / examiner
Other
server.jsonmigrated to the2025-12-11MCP registry schema- A high-effort multi-agent code review ran on the diff; fixes applied (compact level ids in
get_game_records, concurrent fetches inget_series)
Full read + write surface; identity/writes remain opt-in via SPEEDRUN_API_KEY / SPEEDRUN_ENABLE_WRITES.
v0.2.0
API-key authentication: identity reads + opt-in run submission & moderation
v0.1.0 was read-only and keyless. v0.2.0 adds optional speedrun.com API-key support, fully opt-in.
Without a key (unchanged)
All public read tools work exactly as before — no account, no setup.
With SPEEDRUN_API_KEY (read-only by default)
whoami,list_notifications— identity reads- The write tools become visible but stay disabled; calling one explains how to enable writes
With SPEEDRUN_ENABLE_WRITES=1 (read-write)
submit_run,verify_run,reject_run,set_run_players,delete_run
Security
- Key is read only from the environment, never a tool argument
- Read-only is the default; writes require a separate, explicit flag
- All tools carry MCP read-only / destructive annotations
See the README's Authenticated features section for setup.
v0.1.0
What's Changed
- Add CI, PyPI trusted-publishing, and MCP registry manifests by @williamcodes in #2
New Contributors
- @williamcodes made their first contribution in #2
Full Changelog: https://github.com/williamcodes/speedrun-mcp/commits/v0.1.0