Skip to main content

MCP server for GovQL — query US Congressional data via GraphQL from any MCP client.

Project description

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?"
  • "Compare Senator Sanders' voting record to Senator Murkowski's on cloture votes in the most recent 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.

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

Version 0.1.0 ships three foundational tools: a GraphQL passthrough (execute_graphql) and two narrow schema-discovery tools (list_types, describe_type). Curated higher-level tools (find_legislator, get_voting_record, compare_voters, etc.) are planned for subsequent releases — see design.md for the roadmap.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

govql_mcp_server-0.1.0.tar.gz (116.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

govql_mcp_server-0.1.0-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file govql_mcp_server-0.1.0.tar.gz.

File metadata

  • Download URL: govql_mcp_server-0.1.0.tar.gz
  • Upload date:
  • Size: 116.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for govql_mcp_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b7d9d7f00951554ed51106c8ac4a29499839064aff43bfe19b00aa0e347f32dc
MD5 ba2bf3c7088a88d101a4c43971dbe011
BLAKE2b-256 ab0fdfb65d63248a17b533d29579d38e25b8eeae606f4b63e0ddaf1c04d24480

See more details on using hashes here.

File details

Details for the file govql_mcp_server-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: govql_mcp_server-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for govql_mcp_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 82a7406f3aa74cf479fcda01d95144475e8d071727e96a6aef04f379bbd6b9e9
MD5 e7e4dd54983d6a3050fed4dabacc0b89
BLAKE2b-256 50ce40aac8a7016ccde8a90e3162a43ff5723d5d45b1ae7e3b46fd99fbffdd95

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page