@cyanheads/openstates-mcp-server
Rank #5,333io.github.cyanheads/openstates-mcp-server
Search bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories.
What you can do with @cyanheads/openstates-mcp-server
@cyanheads/openstates-mcp-server is a Model Context Protocol (MCP) server published by cyanheads. It ranks #5,333 of 151,203 active servers on MCP Toplist, and its repository has 2 GitHub stars. @cyanheads/openstates-mcp-server is listed across 3 registries — Official MCP, PulseMCP and Glama, with 24 tracked versions. It was first listed on May 23, 2026 and most recently updated on Oct 9, 2026.
Not verifiedMCP Toplist has not yet written a checked profile for this server, so the paragraph above is assembled from registry data only. The repository README is the authority on what it does.
What @cyanheads/openstates-mcp-server can and cannot do
Not verifiedMCP Toplist has not catalogued this server's tools or limitations. The repository README lists them.
What you need before using @cyanheads/openstates-mcp-server
The registry listing declares no required environment variables or authentication. This is declared metadata, not a verified install — the repository README is the authority.
MCP Toplist probed the public endpoint on Oct 20, 2026 and could not complete the MCP handshake (jsonrpc error). Requirements remain unverified.
Declared by the Official MCP Registry, last synced Oct 23, 2026. Not independently verified by MCP Toplist.
- OPENSTATES_API_KEY · required
- OPENSTATES_DAILY_REQUEST_BUDGET · optional
- OPENSTATES_REQUEST_TIMEOUT_MS · optional
- OPENSTATES_TOTAL_REQUEST_BUDGET_MS · optional
- MCP_LOG_LEVEL · optional
- MCP_TRANSPORT_TYPE · optional
- MCP_HTTP_HOST · optional
- MCP_HTTP_PORT · optional
- MCP_HTTP_ENDPOINT_PATH · optional
- MCP_AUTH_MODE · optional
Hosted endpoint declared as public.
Connect @cyanheads/openstates-mcp-server and confirm it works
claude mcp add --transport http openstates-mcp-server https://openstates.caseyjhand.com/mcpclaude mcp add openstates-mcp-server -e "OPENSTATES_API_KEY=<your OPENSTATES_API_KEY>" -e "OPENSTATES_DAILY_REQUEST_BUDGET=<your OPENSTATES_DAILY_REQUEST_BUDGET>" -e "OPENSTATES_REQUEST_TIMEOUT_MS=<your OPENSTATES_REQUEST_TIMEOUT_MS>" -e "OPENSTATES_TOTAL_REQUEST_BUDGET_MS=<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>" -e "MCP_LOG_LEVEL=<your MCP_LOG_LEVEL>" -- npx -y @cyanheads/openstates-mcp-serverReplace each placeholder with your own value before saving.
claude mcp add openstates-mcp-server -e "MCP_TRANSPORT_TYPE=<your MCP_TRANSPORT_TYPE>" -e "OPENSTATES_API_KEY=<your OPENSTATES_API_KEY>" -e "OPENSTATES_DAILY_REQUEST_BUDGET=<your OPENSTATES_DAILY_REQUEST_BUDGET>" -e "OPENSTATES_REQUEST_TIMEOUT_MS=<your OPENSTATES_REQUEST_TIMEOUT_MS>" -e "OPENSTATES_TOTAL_REQUEST_BUDGET_MS=<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>" -e "MCP_HTTP_HOST=<your MCP_HTTP_HOST>" -e "MCP_HTTP_PORT=<your MCP_HTTP_PORT>" -e "MCP_HTTP_ENDPOINT_PATH=<your MCP_HTTP_ENDPOINT_PATH>" -e "MCP_AUTH_MODE=<your MCP_AUTH_MODE>" -e "MCP_LOG_LEVEL=<your MCP_LOG_LEVEL>" -- npx -y @cyanheads/openstates-mcp-serverReplace each placeholder with your own value before saving.
[mcp_servers.openstates-mcp-server]
url = "https://openstates.caseyjhand.com/mcp"Add to ~/.codex/config.toml.
[mcp_servers.openstates-mcp-server]
command = "npx"
args = ["-y", "@cyanheads/openstates-mcp-server"]
[mcp_servers.openstates-mcp-server.env]
OPENSTATES_API_KEY = "<your OPENSTATES_API_KEY>"
OPENSTATES_DAILY_REQUEST_BUDGET = "<your OPENSTATES_DAILY_REQUEST_BUDGET>"
OPENSTATES_REQUEST_TIMEOUT_MS = "<your OPENSTATES_REQUEST_TIMEOUT_MS>"
OPENSTATES_TOTAL_REQUEST_BUDGET_MS = "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>"
MCP_LOG_LEVEL = "<your MCP_LOG_LEVEL>"Add to ~/.codex/config.toml. Replace each placeholder with your own value before saving.
[mcp_servers.openstates-mcp-server]
command = "npx"
args = ["-y", "@cyanheads/openstates-mcp-server"]
[mcp_servers.openstates-mcp-server.env]
MCP_TRANSPORT_TYPE = "<your MCP_TRANSPORT_TYPE>"
OPENSTATES_API_KEY = "<your OPENSTATES_API_KEY>"
OPENSTATES_DAILY_REQUEST_BUDGET = "<your OPENSTATES_DAILY_REQUEST_BUDGET>"
OPENSTATES_REQUEST_TIMEOUT_MS = "<your OPENSTATES_REQUEST_TIMEOUT_MS>"
OPENSTATES_TOTAL_REQUEST_BUDGET_MS = "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>"
MCP_HTTP_HOST = "<your MCP_HTTP_HOST>"
MCP_HTTP_PORT = "<your MCP_HTTP_PORT>"
MCP_HTTP_ENDPOINT_PATH = "<your MCP_HTTP_ENDPOINT_PATH>"
MCP_AUTH_MODE = "<your MCP_AUTH_MODE>"
MCP_LOG_LEVEL = "<your MCP_LOG_LEVEL>"Add to ~/.codex/config.toml. Replace each placeholder with your own value before saving.
https://openstates.caseyjhand.com/mcpSettings → Connectors → “Add custom connector”, then paste this URL.
{
"mcpServers": {
"openstates-mcp-server": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "<your OPENSTATES_API_KEY>",
"OPENSTATES_DAILY_REQUEST_BUDGET": "<your OPENSTATES_DAILY_REQUEST_BUDGET>",
"OPENSTATES_REQUEST_TIMEOUT_MS": "<your OPENSTATES_REQUEST_TIMEOUT_MS>",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>",
"MCP_LOG_LEVEL": "<your MCP_LOG_LEVEL>"
}
}
}
}Add to claude_desktop_config.json (Settings → Developer → Edit Config). Replace each placeholder with your own value before saving.
{
"mcpServers": {
"openstates-mcp-server": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"MCP_TRANSPORT_TYPE": "<your MCP_TRANSPORT_TYPE>",
"OPENSTATES_API_KEY": "<your OPENSTATES_API_KEY>",
"OPENSTATES_DAILY_REQUEST_BUDGET": "<your OPENSTATES_DAILY_REQUEST_BUDGET>",
"OPENSTATES_REQUEST_TIMEOUT_MS": "<your OPENSTATES_REQUEST_TIMEOUT_MS>",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>",
"MCP_HTTP_HOST": "<your MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<your MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<your MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<your MCP_AUTH_MODE>",
"MCP_LOG_LEVEL": "<your MCP_LOG_LEVEL>"
}
}
}
}Add to claude_desktop_config.json (Settings → Developer → Edit Config). Replace each placeholder with your own value before saving.
{
"mcpServers": {
"openstates-mcp-server": {
"url": "https://openstates.caseyjhand.com/mcp"
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project).
{
"mcpServers": {
"openstates-mcp-server": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "<your OPENSTATES_API_KEY>",
"OPENSTATES_DAILY_REQUEST_BUDGET": "<your OPENSTATES_DAILY_REQUEST_BUDGET>",
"OPENSTATES_REQUEST_TIMEOUT_MS": "<your OPENSTATES_REQUEST_TIMEOUT_MS>",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>",
"MCP_LOG_LEVEL": "<your MCP_LOG_LEVEL>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project). Replace each placeholder with your own value before saving.
{
"mcpServers": {
"openstates-mcp-server": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"MCP_TRANSPORT_TYPE": "<your MCP_TRANSPORT_TYPE>",
"OPENSTATES_API_KEY": "<your OPENSTATES_API_KEY>",
"OPENSTATES_DAILY_REQUEST_BUDGET": "<your OPENSTATES_DAILY_REQUEST_BUDGET>",
"OPENSTATES_REQUEST_TIMEOUT_MS": "<your OPENSTATES_REQUEST_TIMEOUT_MS>",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>",
"MCP_HTTP_HOST": "<your MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<your MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<your MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<your MCP_AUTH_MODE>",
"MCP_LOG_LEVEL": "<your MCP_LOG_LEVEL>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project). Replace each placeholder with your own value before saving.
{
"servers": {
"openstates-mcp-server": {
"type": "http",
"url": "https://openstates.caseyjhand.com/mcp"
}
}
}Save as .vscode/mcp.json in your workspace.
{
"servers": {
"openstates-mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "<your OPENSTATES_API_KEY>",
"OPENSTATES_DAILY_REQUEST_BUDGET": "<your OPENSTATES_DAILY_REQUEST_BUDGET>",
"OPENSTATES_REQUEST_TIMEOUT_MS": "<your OPENSTATES_REQUEST_TIMEOUT_MS>",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>",
"MCP_LOG_LEVEL": "<your MCP_LOG_LEVEL>"
}
}
}
}Save as .vscode/mcp.json in your workspace. Replace each placeholder with your own value before saving.
{
"servers": {
"openstates-mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"MCP_TRANSPORT_TYPE": "<your MCP_TRANSPORT_TYPE>",
"OPENSTATES_API_KEY": "<your OPENSTATES_API_KEY>",
"OPENSTATES_DAILY_REQUEST_BUDGET": "<your OPENSTATES_DAILY_REQUEST_BUDGET>",
"OPENSTATES_REQUEST_TIMEOUT_MS": "<your OPENSTATES_REQUEST_TIMEOUT_MS>",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>",
"MCP_HTTP_HOST": "<your MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<your MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<your MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<your MCP_AUTH_MODE>",
"MCP_LOG_LEVEL": "<your MCP_LOG_LEVEL>"
}
}
}
}Save as .vscode/mcp.json in your workspace. Replace each placeholder with your own value before saving.
{
"mcpServers": {
"openstates-mcp-server": {
"serverUrl": "https://openstates.caseyjhand.com/mcp"
}
}
}Add to ~/.codeium/windsurf/mcp_config.json.
{
"mcpServers": {
"openstates-mcp-server": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "<your OPENSTATES_API_KEY>",
"OPENSTATES_DAILY_REQUEST_BUDGET": "<your OPENSTATES_DAILY_REQUEST_BUDGET>",
"OPENSTATES_REQUEST_TIMEOUT_MS": "<your OPENSTATES_REQUEST_TIMEOUT_MS>",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>",
"MCP_LOG_LEVEL": "<your MCP_LOG_LEVEL>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json. Replace each placeholder with your own value before saving.
{
"mcpServers": {
"openstates-mcp-server": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"MCP_TRANSPORT_TYPE": "<your MCP_TRANSPORT_TYPE>",
"OPENSTATES_API_KEY": "<your OPENSTATES_API_KEY>",
"OPENSTATES_DAILY_REQUEST_BUDGET": "<your OPENSTATES_DAILY_REQUEST_BUDGET>",
"OPENSTATES_REQUEST_TIMEOUT_MS": "<your OPENSTATES_REQUEST_TIMEOUT_MS>",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>",
"MCP_HTTP_HOST": "<your MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<your MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<your MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<your MCP_AUTH_MODE>",
"MCP_LOG_LEVEL": "<your MCP_LOG_LEVEL>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json. Replace each placeholder with your own value before saving.
{
"mcpServers": {
"openstates-mcp-server": {
"url": "https://openstates.caseyjhand.com/mcp"
}
}
}{
"mcpServers": {
"openstates-mcp-server": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "<your OPENSTATES_API_KEY>",
"OPENSTATES_DAILY_REQUEST_BUDGET": "<your OPENSTATES_DAILY_REQUEST_BUDGET>",
"OPENSTATES_REQUEST_TIMEOUT_MS": "<your OPENSTATES_REQUEST_TIMEOUT_MS>",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>",
"MCP_LOG_LEVEL": "<your MCP_LOG_LEVEL>"
}
}
}
}Replace each placeholder with your own value before saving.
{
"mcpServers": {
"openstates-mcp-server": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"MCP_TRANSPORT_TYPE": "<your MCP_TRANSPORT_TYPE>",
"OPENSTATES_API_KEY": "<your OPENSTATES_API_KEY>",
"OPENSTATES_DAILY_REQUEST_BUDGET": "<your OPENSTATES_DAILY_REQUEST_BUDGET>",
"OPENSTATES_REQUEST_TIMEOUT_MS": "<your OPENSTATES_REQUEST_TIMEOUT_MS>",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "<your OPENSTATES_TOTAL_REQUEST_BUDGET_MS>",
"MCP_HTTP_HOST": "<your MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<your MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<your MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<your MCP_AUTH_MODE>",
"MCP_LOG_LEVEL": "<your MCP_LOG_LEVEL>"
}
}
}
}Replace each placeholder with your own value before saving.
After adding the config, ask your client to list this server's tools. A tool list confirms the connection; an empty list or an error means the server did not start or needs credentials.
When to choose another server
- GBIF
- MCP Ts Core#60
- obsidian-mcp-server#177
- Pubmed MCP Server#222
- Clinicaltrialsgov MCP Server#502
- Secedgar MCP Server#1,276
- @cyanheads/eur-lex-mcp-server#1,378
- Openalex MCP Server#1,437
- Pubchem MCP Server#1,622
- Git MCP Server#1,914
- ntfy-mcp-server#2,012
- toolkit-mcp-server#2,041
No task-specific alternatives are catalogued for @cyanheads/openstates-mcp-serveryet; the list above is its publisher's other servers.
What changed, and when this was checked
- First listed
- May 23, 2026
- Latest version published
- Oct 9, 2026
- Version history
- 24 versions tracked (below)
- Requirements evidence
- MCP Toplist probed the public endpoint on Oct 20, 2026 and could not complete the MCP handshake (jsonrpc error). Requirements remain unverified.
- Profile checked
- Not yet — purpose, capabilities and requirements above come from registry data only
- Ranking data as of
- Oct 23, 2026
- PulseMCP ↗listed since May 24, 2026 · still listed
- Official MCP ↗listed since Jul 17, 2026 · still listed
- Glama ↗listed since Jul 30, 2026 · still listed
Do you maintain @cyanheads/openstates-mcp-server? to correct or enrich this profile.
Available versions (24)
| Version | Published |
|---|---|
| 0.3.3 | Oct 9, 2026 |
| 0.3.2 | Sep 20, 2026 |
| 0.3.1 | Aug 25, 2026 |
| 0.3.0 | Jul 31, 2026 |
| 0.2.2 | Jul 31, 2026 |
| 0.2.1 | Jul 31, 2026 |
| 0.2.0 | Jul 31, 2026 |
| 0.1.17 | Jul 31, 2026 |
| 0.1.16 | Jul 26, 2026 |
| 0.1.15 | Jul 26, 2026 |
| 0.1.14 | Jul 17, 2026 |
| 0.1.13 | Jul 16, 2026 |
| 0.1.12 | Jul 16, 2026 |
| 0.1.11 | Jul 16, 2026 |
| 0.1.10 | Jun 22, 2026 |
| 0.1.9 | Jun 20, 2026 |
| 0.1.8 | Jun 13, 2026 |
| 0.1.7 | Jun 4, 2026 |
| 0.1.6 | Jun 2, 2026 |
| 0.1.5 | May 30, 2026 |
| 0.1.4 | May 29, 2026 |
| 0.1.3 | May 24, 2026 |
| 0.1.2 | May 24, 2026 |
| 0.1.1 | May 23, 2026 |
Ranks ahead of 145,870 of 151,203 servers on MCP Toplist.
Show your rank
Maintain this server? Add the live rank badge to your README — it updates automatically as the leaderboard changes.
[](https://mcptoplist.com/server/io.github.cyanheads%2Fopenstates-mcp-server)<a href="https://mcptoplist.com/server/io.github.cyanheads%2Fopenstates-mcp-server"><img src="https://mcptoplist.com/badge/io.github.cyanheads%2Fopenstates-mcp-server.svg" alt="MCP Toplist: Top 5% of 151,203" /></a>Variants: append ?metric=score or ?metric=stars to the image URL.
Frequently asked questions
- Who maintains @cyanheads/openstates-mcp-server?
- @cyanheads/openstates-mcp-server is maintained by cyanheads, which publishes 165 MCP servers (2813 total versions) tracked on MCP Toplist.
- Is @cyanheads/openstates-mcp-server listed on the Official MCP Registry?
- Yes — @cyanheads/openstates-mcp-server is listed on the Official MCP Registry, alongside PulseMCP and Glama.
- How many versions does @cyanheads/openstates-mcp-server have?
- MCP Toplist tracks 24 versions of @cyanheads/openstates-mcp-server, most recently published on Oct 9, 2026.
- Where can I find the source code for @cyanheads/openstates-mcp-server?
- The source code for @cyanheads/openstates-mcp-server is hosted at github.com/cyanheads/openstates-mcp-server.
Do you run this server?
Community projects list the MCP servers behind real agents and apps. Publish yours and this page will link to it.