Search bills, legislators, committees, and events across all 50 US states, DC, and Puerto Rico via MCP. STDIO or Streamable HTTP.
Setup
Choose your client, copy the config, then fill in any required environment variables.
Local
claude mcp add openstates --env OPENSTATES_API_KEY='<OPENSTATES_API_KEY>' -- npx -y @cyanheads/openstates-mcp-server~/.codex/config.toml
[mcp_servers.openstates]
command = "npx"
args = ["-y", "@cyanheads/openstates-mcp-server"]
env = { OPENSTATES_API_KEY = "<OPENSTATES_API_KEY>" }
# codex mcp add openstates --env OPENSTATES_API_KEY='<OPENSTATES_API_KEY>' -- npx -y @cyanheads/openstates-mcp-server~/.cursor/mcp.json
{
"mcpServers": {
"openstates": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "<OPENSTATES_API_KEY>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"openstates": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "<OPENSTATES_API_KEY>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"openstates": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "<OPENSTATES_API_KEY>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"openstates": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "<OPENSTATES_API_KEY>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"openstates": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "<OPENSTATES_API_KEY>"
}
}
}
}Remote
claude mcp add --transport http openstates https://openstates.caseyjhand.com/mcp~/.codex/config.toml
[mcp_servers.openstates]
url = "https://openstates.caseyjhand.com/mcp"
# codex mcp add openstates --url https://openstates.caseyjhand.com/mcp~/.cursor/mcp.json
{
"mcpServers": {
"openstates": {
"url": "https://openstates.caseyjhand.com/mcp"
}
}
}.vscode/mcp.json
{
"servers": {
"openstates": {
"type": "http",
"url": "https://openstates.caseyjhand.com/mcp"
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"openstates": {
"httpUrl": "https://openstates.caseyjhand.com/mcp"
}
}
}claude_desktop_config.json · Customize › Connectors › Add custom connector
{
"mcpServers": {
"openstates": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://openstates.caseyjhand.com/mcp"
]
}
}
}.trae/mcp.json
{
"mcpServers": {
"openstates": {
"url": "https://openstates.caseyjhand.com/mcp"
}
}
}Environment variables
OPENSTATES_API_KEY
Replace the placeholders with your own credentials and keep them out of version control.