# openstates-mcp-server [Health: Active]

**Category:** ⚖️ Legal  
**Repository:** https://github.com/cyanheads/openstates-mcp-server  
**GitHub Stars:** 2  
**npm Downloads (last month):** 710  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/openstates-mcp-server

## Description
Search bills, legislators, committees, and events across all 50 US states, DC, and Puerto Rico.

## Tools
Capabilities this server exposes over MCP:

- **openstates_search_bills** — Search state legislative bills across all covered US jurisdictions with full-text search, jurisdiction/session filtering, subject tags, and sponsor lookups
- **openstates_get_bill** — Fetch full detail for a specific bill by OCD ID or three-part path (jurisdiction + session + bill_id)
- **openstates_search_people** — Search state legislators and officials within a jurisdiction by name, chamber, or district, or fetch specific people by OCD person ID
- **openstates_get_legislators_by_location** — Find every legislator representing a geographic coordinate (latitude/longitude) — state legislators and the federal delegation
- **openstates_search_committees** — List committees for a jurisdiction (experimental — not all states have coverage)
- **openstates_get_committee** — Fetch committee detail by OCD organization ID, with optional membership roster
- **openstates_search_events** — Search hearings, floor sessions, and committee meetings (experimental)
- **openstates_get_event** — Fetch full event detail including agenda, participants, and media links
- **openstates_list_jurisdictions** — List all 56 jurisdictions (50 states, DC, and 5 US territories) covered by Open States with session identifiers and coverage metadata
- **openstates_get_jurisdiction** — Fetch full metadata for a specific jurisdiction including all legislative sessions and their identifiers

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `bunx` (confidence: high):

```json
"mcpServers": {
  "openstates-mcp-server": {
    "command": "bunx",
    "args": ["@cyanheads/openstates-mcp-server@latest"],
    "env": {
      "OPENSTATES_API_KEY": ""
    }
  }
}
```

**Requires environment variables:** `OPENSTATES_API_KEY` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What openstates-mcp-server does

openstates-mcp-server exposes Open States data through the Model Context Protocol. It covers legislative information from all 50 states, Washington, DC, and five US territories. Its tools cover bills, legislators and other officials, committees, legislative events, jurisdiction metadata, and representative lookup from latitude and longitude coordinates.

Bill searches can use full-text queries, jurisdiction and session filters, subject tags, sponsor filters, chambers, classifications, and date constraints. Individual bills can be retrieved with an Open States OCD ID or with a jurisdiction, session, and legislature-format bill identifier. People searches support names, districts, chambers, and OCD person IDs. Committee and event operations are marked experimental because coverage varies by jurisdiction.

The server also includes one resource, `openstates://jurisdiction/{jurisdiction_id}`, for stable jurisdiction context, plus prompts for structured bill research and legislator profiles.

## How it works

An MCP client invokes the server's tools and receives structured Open States results. Search results can be paginated, with up to 20 records per page for the documented search operations. Bill and people lookups accept identifiers returned by related searches, which supports workflows such as finding a sponsor and then retrieving that person's profile.

The location lookup accepts decimal-degree latitude and longitude rather than street addresses. It returns state legislators together with the location's two US senators and one US representative. Jurisdiction metadata includes session identifiers, coverage information, and update timestamps, helping clients construct valid follow-up queries.

Bill searches require either a jurisdiction or a query, while people searches require either a jurisdiction or specific OCD person IDs. Committee and event searches require a jurisdiction and therefore do not provide all-jurisdiction searches. Bill searches can inline sponsorships, actions, votes, documents, versions, abstracts, and related bills; event searches can include agendas and participants.

## Setup and configuration

The package can be launched with `npx` using `@cyanheads/openstates-mcp-server`, as shown by the Claude Desktop, Cursor, and VS Code installation configurations. Set the `OPENSTATES_API_KEY` environment variable to the Open States API key used by the server.

The server supports two transport modes: STDIO for local MCP client configurations and Streamable HTTP for network-based connections. A public hosted endpoint is available at `https://openstates.caseyjhand.com/mcp`. The project also publishes a container package through GitHub Container Registry.

## Tools and capabilities

The ten tools provide these operations:

- Search and retrieve legislative bills, including actions, votes, sponsorships, documents, and related legislation.
- Search people by name, chamber, district, or jurisdiction, or resolve multiple OCD person IDs.
- Find state and federal legislators for a coordinate.
- List committees and retrieve committee details with optional membership rosters.
- Search events and retrieve meeting details with agendas, participants, and media links.
- List covered jurisdictions or retrieve a jurisdiction's sessions and metadata.

The `openstates_bill_research` prompt organizes bill analysis around summaries, sponsors, referrals, actions, votes, and related legislation. The `openstates_legislator_profile` prompt structures research on sponsored bills, committee assignments, voting records, and contact details.

## Limitations and notes

Committee and event data is experimental. Not every state has committee coverage, and most states do not publish event data through Open States, so an empty event result may represent missing coverage rather than an absence of events. Committee responses include coverage information.

The location tool does not geocode addresses, so callers must supply valid coordinates. Invalid coordinates produce an error, while locations without coverage return an empty result. Broad, unscoped bill or people searches can exceed upstream timeouts; adding a jurisdiction is the reliable approach. Party appears in people results but cannot be used as a search filter.

_Full upstream README: https://allmcps.com/mcp/openstates-mcp-server/readme_

