Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

Openstates MCP Server

de cyanheadsversión 0.4.0i★ –iComputadora o nube
Nombre en el registroio.github.cyanheads/openstates-mcp-server

Instalar

Resumen

Descripción del creador (original en inglés)

Search bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories.

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Computadora o nube
  • Transporte: stdio, Streamable HTTP
  • Categoría: Búsqueda y memoria de IA
  • Debes completar: OPENSTATES_API_KEY

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

  • Revisiones básicas: 3 de 3 superadas
  • Se ejecuta en el servidor del creador: lo que le pidas pasa por su servidor.
  • Puede hacer 10 cosas (herramientas) openstates_search_bills, openstates_get_bill, openstates_search_people, openstates_get_legislators_by_location …
  • Debes completar tú: OPENSTATES_API_KEY, OPENSTATES_DAILY_REQUEST_BUDGET, OPENSTATES_REQUEST_TIMEOUT_MS, OPENSTATES_TOTAL_REQUEST_BUDGET_MS, MCP_LOG_LEVEL

Necesitas

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Funciona en Claude para web, escritorio y móvil:

  1. Abre Settings → Connectors
  2. Presiona Add custom connector
  3. Pega la dirección de abajo y presiona Add
  4. Si te pide iniciar sesión, inicia sesión en el servicio del creador
SettingsConnectors1+ Add2https://…3
https://openstates.caseyjhand.com/mcp

O ejecútalo en tu computadora

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

{
  "mcpServers": {
    "openstates": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openstates-mcp-server"
      ],
      "env": {
        "OPENSTATES_API_KEY": "your-value",
        "OPENSTATES_DAILY_REQUEST_BUDGET": "your-value",
        "OPENSTATES_REQUEST_TIMEOUT_MS": "your-value",
        "OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add --transport http openstates https://openstates.caseyjhand.com/mcp

O ejecútalo en tu computadora

claude mcp add openstates --env OPENSTATES_API_KEY=your-value --env OPENSTATES_DAILY_REQUEST_BUDGET=your-value --env OPENSTATES_REQUEST_TIMEOUT_MS=your-value --env OPENSTATES_TOTAL_REQUEST_BUDGET_MS=your-value --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/openstates-mcp-server

Completa los valores vacíos antes de ejecutarlo.

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "openstates": {
      "url": "https://openstates.caseyjhand.com/mcp"
    }
  }
}

O ejecútalo en tu computadora

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "openstates": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openstates-mcp-server"
      ],
      "env": {
        "OPENSTATES_API_KEY": "your-value",
        "OPENSTATES_DAILY_REQUEST_BUDGET": "your-value",
        "OPENSTATES_REQUEST_TIMEOUT_MS": "your-value",
        "OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "openstates": {
      "type": "http",
      "url": "https://openstates.caseyjhand.com/mcp"
    }
  }
}

O ejecútalo en tu computadora

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "openstates": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openstates-mcp-server"
      ],
      "env": {
        "OPENSTATES_API_KEY": "your-value",
        "OPENSTATES_DAILY_REQUEST_BUDGET": "your-value",
        "OPENSTATES_REQUEST_TIMEOUT_MS": "your-value",
        "OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

ChatGPT solo se conecta a servidores en internet:

  1. Abre ChatGPT en la web → Settings → Connectors (Apps)
  2. Presiona Create o Add (en algunos planes primero hay que activar Developer mode en Advanced)
  3. Pega la dirección de abajo, ponle un nombre y guarda
  4. Si te pide iniciar sesión, inicia sesión en el servicio del creador
SettingsConnectors1+ Create2https://…3
https://openstates.caseyjhand.com/mcp

Los nombres de los menús pueden variar un poco según el plan y con el tiempo.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Valores que debes completar

  • OPENSTATES_API_KEY obligatorio env
    Open States API key from open.pluralpolicy.com. Required to make any API requests.
  • OPENSTATES_DAILY_REQUEST_BUDGET env
    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 env
    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 env
    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_TIMEO…
  • MCP_LOG_LEVEL env
    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Nombres y descripciones de las herramientas tal como los informó el servidor el 7 nov 2026. Los escribió el creador, no nosotros; los mostramos como texto sin formato.

  • openstates_search_bills

    Search state legislative bills across all covered US jurisdictions. Supports full-text search, jurisdiction/session filtering, subject tags, sponsor lookups, and sort order. Either jurisdiction or q (full-text) is required, and pairing them is the reliable form — a q-only search

  • openstates_get_bill

    Fetch full detail for a specific state bill. Accepts either the three-part path (jurisdiction + session + bill_id) or a direct OCD bill ID (openstates_id from search results). Use include to request votes, actions, sponsorships, documents, and versions in one call rather than sea

  • openstates_search_people

    Search state legislators and officials by name, jurisdiction, chamber, or district, or fetch specific people by OCD person ID. Party is reported on every result but cannot be filtered on — narrow by party after the call. Either jurisdiction or id is required — a search spanning a

  • openstates_get_legislators_by_location

    Find every legislator representing a geographic coordinate — both tiers. Pass latitude and longitude to get the state senators and representatives for that location (and potentially governor/executive officials), plus the coordinate's two US Senators and its US Representative. ju

  • openstates_search_committees

    List committees for a jurisdiction. jurisdiction is required — a request spanning all 56 jurisdictions exceeds the upstream timeout, so scope every call to a single state; use openstates_list_jurisdictions to pick one. Experimental — Open States is actively working to restore com

  • openstates_get_committee

    Fetch committee detail by OCD organization ID. Returns name, classification, and membership roster when include=memberships is requested. Experimental — not all states have committee data in Open States. Obtain the committee_id from openstates_search_committees.

  • openstates_search_events

    Search hearings, floor sessions, and committee meetings. jurisdiction is required — the Open States events endpoint has no all-states search, so scope every call to a single state; use openstates_list_jurisdictions to pick one. Experimental — most states do not publish event data

  • openstates_get_event

    Fetch full event detail by OCD event ID. Returns agenda, participants, media links, and associated documents when requested via include. Experimental — event coverage is limited in Open States. Obtain the event_id from openstates_search_events.

  • openstates_list_jurisdictions

    List all jurisdictions covered by Open States — all 50 states, DC, and 5 US territories (American Samoa, Guam, Northern Mariana Islands, Puerto Rico, and the US Virgin Islands): 56 in total, returned complete in a single default call. Returns coverage metadata: latest bill update

  • openstates_get_jurisdiction

    Fetch full metadata for a specific jurisdiction including all legislative sessions, their identifiers, and coverage dates. Use when you need to know the exact session identifier for a state before filtering bill searches — session formats vary widely (e.g., "2025", "2025rs", "202

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 8 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub cyanheads, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • ✓ Superada

    El endpoint responde

    Respondió en 229 ms (HTTP 200)

  • – No aplica

    Inicio de sesión con OAuth

    No hace falta iniciar sesión

  • ✓ Superada

    Sin instrucciones ocultas en las descripciones de herramientas

    Leímos 10 descripciones de herramientas y no encontramos instrucciones ocultas para la IA

Comparado con otros en Búsqueda y memoria de IAi

  • Más estrellas que el 0% de los otros 5671 servidores de esta categoría
  • Publicado en el registro más recientemente que el 79% de los otros 5671 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 5671 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro Openstates MCP Server?

Superó 3 de 3 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

Debes completar: OPENSTATES_API_KEY

¿Se ejecuta en mi computadora o en la nube?

Funciona de las dos formas: instálalo en tu computadora o conéctate a la versión en la nube.

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (0.4.0) llegó al registro hace 10 días.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.

¿Qué puedo usar en su lugar?

En la misma categoría: Context7, Codebase Memory, Exa

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Context7

de upstash

Up-to-date docs for AI agents

Computadora o nube★ 64.224MITActualizado ayer
Instalar

Codebase Memory

de DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

Se ejecuta en tu computadora★ 48.148MITActualizado hace 21 días
Instalar

Exa

de exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

Se ejecuta en la nube★ 5213MITActualizado hace 2 meses
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

@cyanheads/openstates-mcp-server Search bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories via MCP. STDIO or Streamable HTTP. 10 Tools • 1 Resource • 2 Prompts

Public Hosted Server: https://openstates.caseyjhand.com/mcp


Overview

US state legislatures from Open States: all 50 states, DC, and 5 US territories. Search bills, legislators, committees, and events, and find who represents any location.

Tools
ToolDescription
openstates_search_billsSearch state legislative bills across all covered US jurisdictions with full-text search, jurisdiction/session filtering, subject tags, and sponsor lookups
openstates_get_billFetch full detail for a specific bill by OCD ID or three-part path (jurisdiction + session + bill_id)
openstates_search_peopleSearch state legislators and officials within a jurisdiction by name, chamber, or district, or fetch specific people by OCD person ID
openstates_get_legislators_by_locationFind every legislator representing a geographic coordinate (latitude/longitude) — state legislators and the federal delegation
openstates_search_committeesList committees for a jurisdiction (experimental — not all states have coverage)
openstates_get_committeeFetch committee detail by OCD organization ID, with optional membership roster
openstates_search_eventsSearch hearings, floor sessions, and committee meetings (experimental)
openstates_get_eventFetch full event detail including agenda, participants, and media links
openstates_list_jurisdictionsList all 56 jurisdictions (50 states, DC, and 5 US territories) covered by Open States with session identifiers and coverage metadata
openstates_get_jurisdictionFetch full metadata for a specific jurisdiction including all legislative sessions and their identifiers
Resources
ResourceDescription
openstates://jurisdiction/{+jurisdiction_id}Jurisdiction metadata including current sessions, coverage dates, and bill/people update timestamps

All resource data is also reachable via tools. Use openstates_get_jurisdiction for programmatic jurisdiction lookups; the resource is useful for injecting jurisdiction context as stable reference material.

Prompts
PromptDescription
openstates_bill_researchStructured framework for analyzing a state bill: summary, sponsors, committee referrals, action timeline, vote record, and related legislation
openstates_legislator_profileResearch framework for profiling a legislator: sponsored bills, committee assignments, voting record, and contact details
Skills
SkillDescription
openstates-guideIdentifier chains and gates for agents calling the tools: session pinning, reading vote events, committee roster scans, hearing searches, and the request budget

Plugin installs and the .mcpb bundle pick it up from skills/; MCP clients that support the Skills extension receive it from the server.

Capability reference

openstates_search_bills tool
  • Either jurisdiction or q is required by the schema — a q-only search spans all 56 jurisdictions and exceeds the upstream timeout for a common term, so pairing them is the reliable form
  • Filters: session, chamber (upper/lower), classification, subject tags, sponsor, sponsor_classification, and action_since/updated_since/created_since ISO 8601 date filters
  • include inlines sponsorships, actions, votes, abstracts, versions, documents, and related bills — avoids follow-up openstates_get_bill calls
  • sort defaults to updated_desc; sort=latest_action_desc surfaces bills currently moving; pagination up to 20 per page (default 10)
  • Empty-result notice echoes every applied filter and names the jurisdiction by name when it isn't recognized

openstates_get_bill tool
  • Lookup by openstates_id (preferred) or the three-part path jurisdiction + session + bill_id; a call missing both fails with missing_lookup_params
  • openstates_id is ocd-bill/ copied from openstates_search_bills (case and surrounding whitespace are normalized); a / / path is also accepted. Any other value fails locally with invalid_openstates_id, with no upstream call
  • Accepts legislature-format bill identifiers (e.g., HB 1000, SB 42)
  • include inlines sponsorships, actions, votes, versions, documents, abstracts, other titles/identifiers, and related bills
  • not_found when a well-formed ID or a three-part path resolves to nothing

openstates_search_people tool
  • Either jurisdiction or id (OCD person IDs) is required — an unscoped search exceeds the upstream timeout even for a name-only query
  • id resolves any number of specific OCD person IDs in one call — the IDs that bill sponsorships and committee memberships hand back — and needs no jurisdiction alongside it
  • org_classification: upper/lower/executive/legislature (every legislator — both chambers, or the single body in Nebraska and DC; executive officials excluded); omitting it returns every officeholder including executives
  • Case-insensitive substring name match, plus district; include adds offices, links, other_names, other_identifiers, sources
  • Party is reported on every result but cannot be filtered on
  • Pagination up to 20 per page

openstates_get_legislators_by_location tool
  • Pass decimal-degree latitude/longitude; does not geocode addresses
  • Returns both government tiers in one call: state legislators plus the coordinate's two US Senators and one US Representative
  • jurisdiction.classification (state vs country) is the tier discriminator — current_role.org_classification is not, since it's upper/lower for a US Senator exactly as for a state senator
  • stateCount/federalCount enrichment fields report the tier split
  • Out-of-range coordinates fail as invalid_coordinate; a location with no coverage returns an empty-result notice

openstates_search_committees tool
  • jurisdiction is required — the schema rejects an all-states request
  • Filter by classification (committee/subcommittee) and chamber (a chamber filter omits joint committees); parent scopes to one committee's subcommittees
  • include=memberships returns the full roster with member roles
  • Experimental: Open States is working to restore committee support and not all states have coverage — the output's coverageNote field always documents this
  • Pagination up to 20 per page

openstates_get_committee tool
  • Fetch by OCD committee_id (from openstates_search_committees)
  • include=memberships returns the roster; include=links/sources add reference URLs
  • Experimental — not all states have committee data; not_found when the ID doesn't exist

openstates_search_events tool
  • jurisdiction is required — the events endpoint has no all-states search
  • after/before scope to an ISO 8601 date range; require_bills=true filters to events with a bill on the agenda
  • include=agenda,participants returns full meeting context
  • Experimental: most states don't publish event data — an empty unfiltered result may mean no coverage, not no events; an empty filtered result (require_bills, after, before) names those filters in its notice
  • Pagination up to 20 per page

openstates_get_event tool
  • Fetch by OCD event_id (from openstates_search_events)
  • include adds agenda, participants, links, media, and documents
  • Experimental — event coverage is limited; not_found when the ID doesn't exist

openstates_list_jurisdictions tool
  • Returns all 56 jurisdictions (50 states, DC, and 5 US territories) in one default call — pages are merged server-side, since the upstream per_page ceiling of 52 no longer covers the full set
  • classification filter defaults to state
  • include=legislative_sessions returns every historical and current session identifier — required before filtering bill searches by session, since formats vary by state (e.g., 2025, 2025-2026, 2025rs, 2025s1)
  • include=organizations/latest_runs add chamber/executive-body and scraper-run metadata

openstates_get_jurisdiction tool
  • Fetch one jurisdiction by OCD-ID, state name, or two-letter abbreviation
  • include=legislative_sessions returns all session identifiers with date ranges
  • not_found when the identifier doesn't resolve

openstates://jurisdiction/{+jurisdiction_id} resource
  • jurisdiction_id accepts the raw OCD ID (slashes intact) as openstates_list_jurisdictions returns it, a state name (multi-word allowed), or a two-letter abbreviation; percent-encoded forms are decoded once, and a malformed escape is a validation error
  • Returns jurisdiction metadata as application/json: current legislative sessions, coverage dates, bill/people update timestamps
  • Always includes legislative_sessions — use to prime session identifiers without a tool call
  • not_found when the identifier doesn't resolve; rate_limited when the shared key's request cap is reached

openstates_bill_research prompt
  • Arguments: jurisdiction, session, bill_id — all required
  • Returns one user message directing a structured research brief: overview, sponsors, legislative history, vote record, related legislation, bill text, and a passage assessment

openstates_legislator_profile prompt

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx