# sh-patterson/legiscan-mcp [Health: Active]

**Category:** 🔬 Research  
**Repository:** https://github.com/sh-patterson/legiscan-mcp  
**GitHub Stars:** 10  
**npm Downloads (last month):** 62  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/sh-patterson-legiscan-mcp

## Description
Access legislative data from all 50 US states and Congress — search bills, get full text, track votes, and look up legislators via the LegiScan API.

## Tools
Capabilities this server exposes over MCP:

- **legiscan_find_legislator** — Find a legislator's people_id by name. Supports partial matching.
- **legiscan_get_legislator_votes** — Get how a legislator voted on multiple bills in one call.
- **legiscan_get_primary_authored** — Get only bills where legislator is primary author (not co-sponsor).
- **legiscan_get_bill** — Get detailed bill info (sponsors, history, votes, texts)
- **legiscan_find_bill_by_number** — Find bill by number (handles AB 858, AB858, AB-858, A.B. 858). Best for exact bill lookup.
- **legiscan_get_roll_call** — Get vote details with individual legislator votes
- **legiscan_get_person** — Get legislator info with third-party IDs (VoteSmart, OpenSecrets, etc.)
- **legiscan_get_session_people** — Get all legislators active in a session
- **legiscan_search** — Full-text search across legislation. Accepts bill-number variants like AB858, but use `legiscan_find_bill_by_number` for exact matches.
- **legiscan_get_session_list** — List available legislative sessions by state

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

```json
"mcpServers": {
  "legiscan-mcp": {
    "command": "npx",
    "args": ["-y","legiscan-mcp-server"],
    "env": {
      "LEGISCAN_API_KEY": ""
    }
  }
}
```

**Requires environment variables:** `LEGISCAN_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 sh-patterson/legiscan-mcp MCP server does

The sh-patterson/legiscan-mcp MCP server connects MCP-capable agents to the LegiScan API. It covers legislative data from all 50 US states and Congress, including bills, legislative sessions, legislators, sponsorship details, bill histories, bill text, and recorded votes.

The server is suited to research tasks that require more than a single bill lookup. An agent can identify the correct session, search for legislation by topic or bill number, retrieve detailed bill records, inspect roll calls, and connect votes to individual legislators. It also provides composite operations for common workflows, such as finding a legislator by name, listing only primary-authored bills, or checking one legislator's positions across several bills.

## How it works

The server runs as a local MCP process and sends requests to LegiScan using the configured API key. Tool responses use TypeScript-defined API response types. Inputs include validation for state codes, legislator name queries, and large bill batches.

Bill-number lookup accepts common formatting differences. For example, variants such as `AB 858`, `AB858`, `AB-858`, and `A.B. 858` can be resolved. Full-text searches can also accept bill-number variants, but the dedicated number lookup is intended for exact bill resolution.

For a typical investigation, first list sessions for the relevant state, then search or resolve bills, retrieve bill details, and inspect any roll calls. Legislator information can be added when the workflow needs person records or external identifiers.

## Setup and configuration

The sh-patterson/legiscan-mcp MCP server requires Node.js 18 or later and a LegiScan API key. The README describes creating a free LegiScan account, registering for API access, and placing the resulting key in the `LEGISCAN_API_KEY` environment variable.

A package-based MCP configuration can launch the server with `npx -y legiscan-mcp-server`. In an MCP client configuration, set the environment variable to the user's actual key. The README specifically documents Claude Desktop configuration paths on macOS and Windows and says the same `mcpServers.legiscan` entry can be adapted for other MCP clients, including Claude Code and Codex CLI.

The project can also be built from source by cloning the repository, installing npm dependencies, and running its build script. A source-based configuration launches the resulting `dist/index.js` file with Node.js.

## Tools and capabilities

Available capabilities include:

- Find legislators by name, including partial matches, and obtain their `people_id`.
- Retrieve a legislator's votes across multiple bills in one request.
- Separate primary-authored bills from bills where a legislator is only a co-sponsor.
- Search legislation by full text or resolve a bill by number.
- Retrieve bill sponsors, legislative history, votes, and available text.
- Inspect roll calls with individual legislator vote positions.
- Retrieve person records and third-party identifiers such as VoteSmart and OpenSecrets IDs.
- List legislators active in a session and discover available sessions by state.

## Limitations and notes

LegiScan access depends on a valid API key and the data available through the LegiScan API. The README recommends specifying both state and session in agent requests to reduce ambiguity. State codes are normalized to uppercase and checked locally, but an invalid code such as `ZZ` can still reach the API and produce an API error.

Legislator name searches require at least two characters, and the documentation recommends supplying both a first and last name. Composite workflows may require identifiers returned by earlier calls, such as `session_id`, `people_id`, `bill_id`, or `roll_call_id`. Showing those identifiers in intermediate output can help audit the resulting research.

_Full upstream README: https://allmcps.com/mcp/sh-patterson-legiscan-mcp/readme_

