Skip to main content

govql-mcp-server

An MCP (Model Context Protocol) server for GovQL — gives AI clients like Claude Desktop, Claude Code, and Cursor direct access to the US Congressional GraphQL API at api.govql.us/graphql without bespoke HTTP wiring.

For the design rationale (why FastMCP-Python, the passthrough+curated philosophy, roadmap through v0.4), see design.md.

What you can do with it

Ask an agent questions like:

  • "How did Vermont's two senators vote on the most recent nomination?"
  • "Which legislators in the 118th Congress switched parties during their service?"
  • "Who represents Arizona's 3rd congressional district?"
  • "Compare Senator Sanders' voting record to Senator Murkowski's on cloture votes in the most recent Congress."
  • "Which Democrats most often voted with Republicans in the current Congress?"

The agent picks the right tool, writes the GraphQL query against the live schema, and parses the response — no manual API wrangling.

Install

The server runs as a per-client subprocess over stdio. Pick your client:

Claude Desktop

Edit claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "govql": {
      "command": "uvx",
      "args": ["govql-mcp-server"]
    }
  }
}

Restart Claude Desktop. The govql tools appear in the tools panel.

Claude Code

Add to .mcp.json in your project (or ~/.mcp.json for global):

{
  "mcpServers": {
    "govql": {
      "command": "uvx",
      "args": ["govql-mcp-server"]
    }
  }
}

Cursor

Settings → MCP → Add Server. Use the same command / args as above.

Other clients

Any MCP-compatible client that supports stdio servers will work. The command is uvx govql-mcp-server with no required arguments.

Tools

Tool Purpose
execute_graphql Run any GraphQL query against the GovQL endpoint. Returns the result plus an last_ingest timestamp so the agent can reason about data freshness.
list_types Returns the names and kinds of every type in the GovQL schema. Optional kind filter ("OBJECT", "INPUT_OBJECT", "ENUM", etc.) to narrow further. Start here when you don't know what's queryable.
describe_type Returns one type's full details — fields, arg signatures, input fields, enum values. Call after list_types to learn the shape of a specific type before writing a query.
find_legislator Find members by name, party, state, chamber, or district when you don't know a bioguide id. Party/state/chamber/district match the member's terms (district is House-only); current_only (default) restricts to sitting members. Returns a compact list — each member's bioguideId plus current party/state/chamber/district.
find_vote Browse roll-call votes by category, chamber, or congress (newest first), or keyword-search the vote question. topic matches the question text (which includes bill short titles) — not a full subject index, so it misses procedural votes, and bill subjects aren't populated yet. Returns a compact list with each voteId.
get_legislator Full detail for one member by bioguide id: names, bio, and complete term history (party/state/chamber/district over time) with a current block.
get_vote_with_positions One vote by id with tallies and per-party breakdown; optionally the individual member positions (filter by party/state/position).
get_voting_record A member's voting behavior per congress: participation rate and party-loyalty rate, from the precomputed summaries.
compare_voters How often two members voted the same way, per congress+chamber, with an agreement rate.
find_party_defectors Members who least often voted with their own party's majority in a congress; optional party/chamber filters.

Configuration

All env vars are optional — the package is zero-config for end users.

Env var Default Purpose
GOVQL_ENDPOINT https://api.govql.us/graphql Endpoint to query. Override to point at a local dev stack.
GOVQL_TIMEOUT_MS 30000 Per-request HTTP timeout.
LOG_LEVEL INFO Logging level. Logs go to stderr only (stdout is reserved for the MCP transport).

Limits (enforced by the upstream API)

  • Max query depth: 10
  • Max query complexity: ~10 billion points (first: N multiplies child cost by N — keep page sizes reasonable on deeply nested queries)
  • Rate limit: 100 requests / 60 s per source IP

A depth or complexity violation surfaces as a GraphQL errors entry in the tool response so the agent can adjust and retry.

Data freshness

Every execute_graphql response includes a last_ingest ISO timestamp. Vote data refreshes hourly; legislator data refreshes daily.

Status

As of 0.4.0, the server provides the three foundational tools (execute_graphql, list_types, describe_type) plus the curated discovery tools (find_legislator, find_vote), per-entity detail tools (get_legislator, get_vote_with_positions), and analysis tools (get_voting_record, compare_voters, find_party_defectors) — the curated discovery/detail/analysis set is now complete. The remaining most_agreeing_pairs and bill/committee tools are post-v0.4: the bill/committee tools await GovQL data population, and most_agreeing_pairs awaits a server-side cross-party ranking aggregate — see design.md.

Links

Metadata

Release files for govql-mcp-server 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for govql-mcp-server 0.4.0
File Size Uploaded Provenance Actions
govql_mcp_server-0.4.0.tar.gz 91.3 kB With provenance Details for govql_mcp_server-0.4.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for govql-mcp-server 0.4.0
File Interpreter ABI Platform Actions
govql_mcp_server-0.4.0-py3-none-any.whl Python 3 none any Details for govql_mcp_server-0.4.0-py3-none-any.whl

Total release size: 120.6 kB

Release files / govql_mcp_server-0.4.0.tar.gz

Download URL govql_mcp_server-0.4.0.tar.gz
Size 91.3 kB
Tags Source
SHA-256 checksum
How to use checksums
f675ab87cc9f1c30cdf68006d08dcd1905c2585baff933253cb59b62746801cc
BLAKE2b-256 checksum
How to use checksums
23c5c90c1f4041165ff1eb657a4a931a3ac4b608f4597487c2a7506c74dabbc5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 17, 2026.

Transparency log

Release files / govql_mcp_server-0.4.0-py3-none-any.whl

Download URL govql_mcp_server-0.4.0-py3-none-any.whl
Size 29.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eec5f07ebd942db4456750f64996f7ae21f685d0e89542b61e1fe6223ce0ed46
BLAKE2b-256 checksum
How to use checksums
d74a0f597aaa82add5688086b517f5117684e5d9c70ebe41be3053e00930c85c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 17, 2026.

Transparency log

Security for govql-mcp-server 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for govql_mcp_server-0.4.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 17, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page