GovQL
About
GovQL is an MCP (Model Context Protocol) server that provides AI clients such as Claude Desktop, Claude Code, and Cursor with direct access to the US Congressional GraphQL API at api.govql.us/graphql, eliminating the need for manual HTTP wiring. It is designed for users who want…
Details
- Author
- govql
- GitHub stars
- 3
- Downloads
- 274
- Categories
- Other, AI
Jump to
- Execute arbitrary GraphQL queries against the GovQL API.
- List all types in the GovQL schema with optional kind filter.
- Describe a type's full details including fields and arguments.
- Returns last_ingest timestamp for data freshness awareness.
- Zero-configuration for end users; optional environment variables.
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
GovQLCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
To use GovQL, add the server configuration to your client's settings file (e.g., claude_desktop_config.json for Claude Desktop, .mcp.json for Claude Code, or Cursor's MCP settings) using the command uvx govql-mcp-server with no required arguments. The server runs as a per-client subprocess over stdio.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"govql": {
"govql": {
"command": "uvx",
"args": [
"govql-mcp-server"
]
}
}
}
}
McpServers
{
"govql": {
"command": "uvx",
"args": [
"govql-mcp-server"
]
}
}
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."
- "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. |
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.1.1, the server provides 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
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




