Server data from the Official MCP Registry
Model and map U.S. election races: scenarios, swing, turnout and precinct-level roll-ups.
About
Model and map U.S. election races: scenarios, swing, turnout and precinct-level roll-ups.
Security Report
racemodel is a thin forwarding bridge to a hosted ElectionsMCP service with no local data handling, and no outright malicious code is visible. The score is held below 7.0 by an environment-overridable upstream URL that receives the API key, an auth header and forwarding behaviour that the README itself labels as unverified reconstructions, and the forwarding implementation (forward.ts body and types) being truncated so it could not be fully audited. Read/write tools that publish or share user data upstream (share_simulation, add_map_comment) also warrant user awareness. Supply chain analysis found 3 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue.
5 files analyzed · 10 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
How to Install
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-cloudcorprecords-racemodel": {
"args": [
"-y",
"@reneturcios/racemodel"
],
"command": "npx"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
racemodel
racemodel is a thin local bridge to the ElectionsMCP hosted MCP server, a modelling service for U.S. election races. Upstream, a user can resolve places and candidates, build a scenario, set candidate shares and turnout assumptions, apply a swing, and then read the race back as tallies, flipped seats, maps, charts and precinct-level roll-ups — including separate handling for primary races.
The bridge holds no election data and computes no
forecast of its own. It serves the upstream server's
tool list locally — exactly as captured from the live
endpoint — and forwards each tool call upstream,
returning the result untouched. Scenario and
simulation state lives upstream, so writes such as
creating a scenario or setting shares are the
service's own modelling operations, forwarded like
every other call. billing_status is a read; there
is no payment, donation or purchase tool in the
surface.
Tools
Geography, candidates and contests:
resolve_geography— turn a place name or shorthand into a canonical geo id (query, required).resolve_candidate— find who holds or runs for a seat from a person's name (name, required).search_candidates— browse the candidate registry by filters without supplying a name.lookup_address— resolve an address (address, required) to its geography.list_contests— list contests for a geography (geo_id, required).election_calendar— the election calendar. No required arguments.
Scenarios and simulations:
create_scenario— start a new scenario (name, required).list_scenarios,get_scenario(scenario_id),commit_version(scenario_id), anddiff_versions(scenario_id,version_a,version_b) — manage and compare saved scenario versions.set_performance— set shares for a geography in a scenario (scenario_id,geo_id,shares).target_precincts— precinct targeting for a scenario (scenario_id, required).set_candidates— set the candidate list for a simulation (simulation_id,level,candidates).set_turnout— set turnout assumptions (simulation_id, required).set_race_scope— set a simulation's race scope (simulation_id, required).list_simulationsandget_simulation(simulation_id, required) — enumerate and read simulations.share_simulation— share a simulation (simulation_id, required).
Views, swings and roll-ups:
get_view,render_viewandset_view— read, render or set a simulation's view (each takessimulation_id).render_chart— render a chart (type, required).add_map_comment(simulation_id,body) andlist_map_comments(simulation_id) — annotate and read back a simulation's map.apply_uniform_swing— apply a uniform swing in percentage points (simulation_id,level,swing_pp).apply_swing_to_query— apply a swing scoped by a query (simulation_id,state,filter).get_tally— the tally at a level (simulation_id,level).list_flipped— seats that flipped at a level (simulation_id,level).compare_simulations— compare two simulations at a level (simulation_id_a,simulation_id_b,level).roll_up_race— roll a simulation up to the race level (simulation_id, required).
Turnout, returns and reference data:
get_early_voting_turnout— early-voting turnout for a state (state, required).get_county_voter_turnout_and_registration,get_state_historical_turnout,get_live_early_vote_returnsandget_precinct_election_returns— turnout, registration, historical and returns reads. No required arguments.get_county_officialsandget_county_economic_and_wealth_profile— county reference profiles. No required arguments.billing_statusandconnection_status— account and connection reads. No required arguments.get_campaign_onboarding,helpandget_catalog— onboarding, help and catalog reads. No required arguments.
Primaries:
list_primary_calendar— primary calendar for a party (party, required).set_primary_shares— set primary shares (simulation_id,party).roll_up_primary— roll a primary up (simulation_id,party).primary_batch_edit— batch-edit a primary (simulation_id,edits).
Meta:
call_tool— invoke another tool by name through the upstream (name, required).
Configuration
ELECTIONSMCP_MCP_URL(optional) — override the upstream endpoint. Defaults tohttps://www.electionsmcp.com/mcp. (The override hook is this rebuild's own labelled reconstruction.)ELECTIONSMCP_API_KEY(optional) — when set, its value is sent on every upstream request under the header name the registry record pins for this remote,x-electionsmcp-key. When it is unset, no auth header is sent. (This forwarding is a labelled reconstruction; the original capture was keyless.)
Forwarding mechanics
On the first tool call the client opens a streamable
HTTP session with the upstream: a JSON-RPC
initialize request (protocolVersion 2025-03-26,
clientInfo name racemodel), then a
notifications/initialized notification, then the
tools/call request carrying the caller's arguments
unchanged. When the upstream answers initialize
with an Mcp-Session-Id header, that value rides on
every later request of the session, which is reused
for the life of the process. Replies may arrive as
plain JSON or as server-sent events; both are read.
Successful upstream results pass through verbatim,
including any isError flag the upstream sets.
Failures — a JSON-RPC error, a non-2xx status, an
unreadable response, or a request that cannot be
completed — come back as an isError result whose
text starts with racemodel error: (this rendering
is this rebuild's own labelled reconstruction).
CLI
Each tool is also a subcommand taking one JSON argument string (omit it for tools that take none):
npx @reneturcios/racemodel resolve_geography '{"query":"CA-03"}'
npx @reneturcios/racemodel create_scenario '{"name":"Baseline 2026"}'
npx @reneturcios/racemodel get_catalog
npx @reneturcios/racemodel --version
Exit codes: 0 on success, 1 on an isError
result, 2 on a usage error.
MCP server
npx -y @reneturcios/racemodel mcp
MCP client config:
{
"mcpServers": {
"racemodel": {
"command": "npx",
"args": ["-y", "@reneturcios/racemodel", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/racemodel
docker run --rm ghcr.io/cloudcorprecords/racemodel --version
The container's default command is mcp, so the first
form is a stdio MCP server; any other arguments reach
the CLI normally.
Development
npm install
npm run build
npm test
npm run dev
The test suite runs entirely against a stubbed JSON-RPC upstream — no live network calls.
License
MIT — see LICENSE.
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Rea
Freeby Morluto · Developer Tools
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Paperclip
Freeby Paperclipai · Developer Tools
Trending hip-hop artist momentum scores across four cultural dimensions.
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
