Skip to content

Releases: williamcodes/speedrun-mcp

v0.3.4

Choose a tag to compare

@williamcodes williamcodes released this 18 Sep 16:39

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.

  • whoami now reports supporter: true/false/null for the key's account.
  • The Claude Desktop bundle speedrun-mcp-0.3.4.mcpb is attached below.
pipx install speedrun-mcp   # or: uv tool install speedrun-mcp

v0.3.3

Choose a tag to compare

@williamcodes williamcodes released this 18 Sep 15:32

Fixes

  • list_runs, list_unverified_runs and the examiner filter now resolve game abbreviations and usernames to ids instead of silently returning unrelated runs.
  • get_user_personal_bests errors on an unknown user instead of reporting zero PBs, and echoes the resolved player.
  • get_leaderboard / get_world_record reject an invalid date and unknown variable ids instead of dropping them and returning the unfiltered board.
  • get_run now 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.mcpb is 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

Choose a tag to compare

@williamcodes williamcodes released this 23 Jun 15:16

Hardening + local write validation (patch)

  • Local write validationsubmit_run / set_run_status reject 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

Choose a tag to compare

@williamcodes williamcodes released this 23 Jun 00:18

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

Choose a tag to compare

@williamcodes williamcodes released this 22 Jun 21:42

More read coverage + registry schema bump

New read tools (all public, no key)

  • search_series / get_series — game series and their games
  • get_game_records — every category's records for a game in one call
  • list_runs — runs by player / game / category / status / examiner

Other

  • server.json migrated to the 2025-12-11 MCP registry schema
  • A high-effort multi-agent code review ran on the diff; fixes applied (compact level ids in get_game_records, concurrent fetches in get_series)

Full read + write surface; identity/writes remain opt-in via SPEEDRUN_API_KEY / SPEEDRUN_ENABLE_WRITES.

v0.2.0

Choose a tag to compare

@williamcodes williamcodes released this 22 Jun 16:38

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

Choose a tag to compare

@williamcodes williamcodes released this 22 Jun 15:23

What's Changed

  • Add CI, PyPI trusted-publishing, and MCP registry manifests by @williamcodes in #2

New Contributors

Full Changelog: https://github.com/williamcodes/speedrun-mcp/commits/v0.1.0