Openstates MCP Server
by cyanheadsio.github.cyanheads/openstates-mcp-serverv0.3.2
Search bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories.
context tax
queued
security
queued
cold start
queued
freshness
Active19d ago
Install Openstates MCP server
Install in Claude Code
claude mcp add openstates -e OPENSTATES_API_KEY='<openstates-api-key>' -- npx -y @cyanheads/openstates-mcp-server run start:stdioInstall in Cursor
{
"mcpServers": {
"openstates": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server",
"run",
"start:stdio"
],
"env": {
"OPENSTATES_API_KEY": "<openstates-api-key>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).
Install in Claude Desktop
{
"mcpServers": {
"openstates": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server",
"run",
"start:stdio"
],
"env": {
"OPENSTATES_API_KEY": "<openstates-api-key>"
}
}
}
}Settings → Developer → Edit Config (claude_desktop_config.json), then restart.
Install in VS Code
{
"servers": {
"openstates": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server",
"run",
"start:stdio"
],
"env": {
"OPENSTATES_API_KEY": "<openstates-api-key>"
}
}
}
}Add to .vscode/mcp.json in your workspace.
Install in Windsurf
{
"mcpServers": {
"openstates": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server",
"run",
"start:stdio"
],
"env": {
"OPENSTATES_API_KEY": "<openstates-api-key>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json.
Configuration
| Variable | Required | Secret | Description |
|---|---|---|---|
| OPENSTATES_API_KEY | yes | — | Open States API key from open.pluralpolicy.com. Required to make any API requests. |
| OPENSTATES_DAILY_REQUEST_BUDGET | — | — | Maximum upstream Open States requests per rolling 24 hours. Rejects before the request is issued once spent. Defaults to the v3 free-tier daily cap. |
| OPENSTATES_REQUEST_TIMEOUT_MS | — | — | Per-attempt upstream request deadline in milliseconds (minimum 1000). Expiry is non-retryable. Open States answers a scoped query in under a second to ~57s and its gateway gives up near 60s. |
| OPENSTATES_TOTAL_REQUEST_BUDGET_MS | — | — | Wall-clock ceiling in milliseconds for one call across every retry attempt and the backoff between them. Bounds a slow upstream that keeps failing retryably. Must be at least OPENSTATES_REQUEST_TIMEOUT_MS; startup rejects a lower value. |
| MCP_LOG_LEVEL | — | — | Sets the minimum log level for output (e.g., 'debug', 'info', 'warn'). |
| MCP_HTTP_HOST | — | — | The hostname for the HTTP server. |
| MCP_HTTP_PORT | — | — | The port to run the HTTP server on. |
| MCP_HTTP_ENDPOINT_PATH | — | — | The endpoint path for the MCP server. |
| MCP_AUTH_MODE | — | — | Authentication mode to use: 'none', 'jwt', or 'oauth'. |
Remote endpoints
- streamable-http
https://openstates.caseyjhand.com/mcp
Freshness
Active — last maintenance signal 19d ago. The newest of the signals below sets the band.
Last commit (default branch)
2026-09-20 · 19d ago · GitHub
Latest release
2026-09-20 · 19d ago · GitHub · v0.3.2
Package published
no data · npm/PyPI
Registry entry updated
2026-09-20 · 19d ago · official registry · v0.3.2
FAQ
›How do I install the Openstates MCP server in Claude Code?
Run: claude mcp add openstates -e OPENSTATES_API_KEY='<openstates-api-key>' -- npx -y @cyanheads/openstates-mcp-server run start:stdio. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does Openstates require an API key?
Yes. It expects OPENSTATES_API_KEY.
›Can I use Openstates as a remote (hosted) MCP server?
Yes — it offers both a hosted endpoint and a local stdio package.
›Is Openstates in the official MCP registry?
Yes, as io.github.cyanheads/openstates-mcp-server.