MCP Server
MCP
io.github.cyanheads/openstates-mcp-server
Search bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories.
Install
npx -y @cyanheads/[email protected]
Configuration Example
{
"remotes": [
{
"type": "streamable-http",
"url": "https://openstates.caseyjhand.com/mcp"
}
],
"packages": [
{
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "@cyanheads/openstates-mcp-server",
"version": "0.3.0",
"runtimeHint": "bun",
"transport": {
"type": "stdio"
},
"packageArguments": [
{
"value": "run",
"type": "positional"
},
{
"value": "start:stdio",
"type": "positional"
}
],
"environmentVariables": [
{
"description": "Open States API key from open.pluralpolicy.com. Required to make any API requests.",
"isRequired": true,
"format": "string",
"name": "OPENSTATES_API_KEY"
},
{
"description": "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.",
"format": "number",
"default": "250",
"name": "OPENSTATES_DAILY_REQUEST_BUDGET"
},
{
"description": "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.",
"format": "number",
"default": "45000",
"name": "OPENSTATES_REQUEST_TIMEOUT_MS"
},
{
"description": "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.",
"format": "number",
"default": "90000",
"name": "OPENSTATES_TOTAL_REQUEST_BUDGET_MS"
},
{
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
"format": "string",
"default": "info",
"name": "MCP_LOG_LEVEL"
}
]
},
{
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "@cyanheads/openstates-mcp-server",
"version": "0.3.0",
"runtimeHint": "bun",
"transport": {
"type": "streamable-http",
"url": "http://localhost:3010/mcp"
},
"packageArguments": [
{
"value": "run",
"type": "positional"
},
{
"value": "start:http",
"type": "positional"
}
],
"environmentVariables": [
{
"description": "Open States API key from open.pluralpolicy.com. Required to make any API requests.",
"isRequired": true,
"format": "string",
"name": "OPENSTATES_API_KEY"
},
{
"description": "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.",
"format": "number",
"default": "250",
"name": "OPENSTATES_DAILY_REQUEST_BUDGET"
},
{
"description": "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.",
"format": "number",
"default": "45000",
"name": "OPENSTATES_REQUEST_TIMEOUT_MS"
},
{
"description": "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.",
"format": "number",
"default": "90000",
"name": "OPENSTATES_TOTAL_REQUEST_BUDGET_MS"
},
{
"description": "The hostname for the HTTP server.",
"format": "string",
"default": "127.0.0.1",
"name": "MCP_HTTP_HOST"
},
{
"description": "The port to run the HTTP server on.",
"format": "string",
"default": "3010",
"name": "MCP_HTTP_PORT"
},
{
"description": "The endpoint path for the MCP server.",
"format": "string",
"default": "/mcp",
"name": "MCP_HTTP_ENDPOINT_PATH"
},
{
"description": "Authentication mode to use: 'none', 'jwt', or 'oauth'.",
"format": "string",
"default": "none",
"name": "MCP_AUTH_MODE"
},
{
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
"format": "string",
"default": "info",
"name": "MCP_LOG_LEVEL"
}
]
}
]
}
mcp
model-context-protocol
streamable-http
npm
By
Comments
Sign in to leave a comment