Legiscan MCP logo

Legiscan MCP

by sh-patterson

Query LegiScan for bills, legislative sessions, legislators, bill text, histories, and voting records through MCP.

Install Legiscan MCP

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "sh-patterson-legiscan-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "legiscan-mcp-server"
      ],
      "env": {
        "LEGISCAN_API_KEY": "YOUR_VALUE_HERE"
      }
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Values are written into the snippet above so you can paste it as is. They never leave your browser.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

npx -y legiscan-mcp-server

No response to initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 1mo ago.

Overview

The sh-patterson/legiscan-mcp MCP server exposes LegiScan legislative data through structured MCP tools. It supports bill search and lookup, session discovery, legislator identification, sponsor and authorship checks, bill histories, texts, roll calls, and voting records. Requests use a LegiScan API key and include validation, bill-number normalization, batching, and caching for repeated lookups. Reach for it when an agent needs to research legislation across US state legislatures or Congress.

Use cases

  • Research bills by topic within a specified state and legislative session
  • Track bill sponsors, history, text, and recorded votes
  • Compare one legislator's votes across multiple bills
  • Separate primary-authored bills from co-sponsored legislation
  • Inspect individual roll-call vote positions

Key features

  • Full-text legislation search
  • Bill-number normalization and exact lookup
  • Legislator and session discovery
  • Bill history, text, sponsor, and vote retrieval
  • Composite multi-bill and authorship workflows
  • Roll-call details with individual votes

Tools10

What Legiscan MCP lets your agent do. Expand a tool for its parameters.

Self-reported~227 tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 2d ago

Recent health check succeeded.

17/18 checks healthy over the last 80d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 10d ago via OSV.dev · legiscan-mcp-server (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars12Stargazers on the source repository.
npm downloads94Package downloads in the last 30 days.
Last commit1mo agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Tools exposed10Callable tools this server registers over MCP.
Directory activity4 viewsConfig copies, upvotes, and views on AllMCPs.

How Legiscan MCP works

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.

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.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Legiscan MCP

Run it through npx with `npx -y legiscan-mcp-server`, then configure `LEGISCAN_API_KEY` in the MCP client's server environment.

It requires a LegiScan API key, provided through the `LEGISCAN_API_KEY` environment variable.

Yes.

Yes. `legiscan_find_bill_by_number` handles formats such as AB 858, AB858, AB-858, and A.B. 858.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewLegiscan MCP AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/sh-patterson-legiscan-mcp?style=directory)](https://allmcps.com/mcp/sh-patterson-legiscan-mcp)
HTML Embed
<a href="https://allmcps.com/mcp/sh-patterson-legiscan-mcp"><img src="https://allmcps.com/api/badge/sh-patterson-legiscan-mcp?style=directory" alt="Legiscan MCP on AllMCPs" /></a>