Washington State Legislature MCP Server

by awalcutt

144 downloads Not rated yet MIT license
GitHub

About

Model Context Protocol (MCP) Server for Washington State Legislative Web Services

Details

License
MIT license

Explore

- Bill tracking and information retrieval
- Committee meeting schedules and agendas
- Legislator lookup and sponsor information
- Bill status and history tracking
- Legislative document access in XML, HTM, and PDF

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Washington State Legislature MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

- Python 3.10+
- pip package manager

pip install -e ".[dev]"
pip install .

For cloud deployment on AWS Lambda, you can use the mcp-remote adapter to enable Claude Desktop connectivity:

{
"mcpServers": {
"wa-leg": {
"command": "npx",
"args": [
"mcp-remote",
"https://your-api-gateway-url/sse"
]
}
}
}

Create a .env file:

WSL_API_TIMEOUT=30
WSL_CACHE_TTL=300
LOG_LEVEL=INFO
SERVER_NAME="Washington State Legislature MCP Server"

1. Clone the repository:

git clone https://github.com/awalcutt/wa-leg-mcp.git
cd wa-leg-mcp

2. Create virtual environment:

python -m venv venv
source venv/bin/activate # Or venv\Scripts\activate on Windows

3. Install development dependencies:

pip install -e ".[dev]"

4. Run tests:

make test

- Run directly with Python
- Use with MCP Inspector for development

- AWS Lambda with API Gateway (supports remote connections via mcp-remote adapter)
- Google Cloud Functions
- Azure Functions

| Variable | Description | Default |
|----------|-------------|---------|
| WSL_API_TIMEOUT | API request timeout (seconds) | 30 |
| WSL_CACHE_TTL | Cache time-to-live (seconds) | 300 |
| LOG_LEVEL | Logging level | INFO |
| SERVER_NAME | Custom server name | Washington State Legislature MCP Server |

getBillInfo

Retrieve detailed information about specific bills

searchBills

Search for bills using keywords and optional filtering

getBillsByYear

Retrieve all bills from a specific year with filtering options

getCommitteeMeetings

Get committee meeting schedules and agendas

findLegislator

Find legislators by district or lookup sponsors

getBillStatus

Get current status and history of a bill

getBillDocuments

Retrieve bill document metadata with links

getBillContent

Retrieve the actual content of a bill in AI-friendly format

- getBillInfo - Retrieve detailed information about specific bills
- searchBills - Search for bills using keywords and optional filtering
- getBillsByYear - Retrieve all bills from a specific year with filtering options
- getCommitteeMeetings - Get committee meeting schedules and agendas
- findLegislator - Find legislators by district or lookup sponsors
- getBillStatus - Get current status and history of a bill
- getBillDocuments - Retrieve bill document metadata with links
- getBillContent - Retrieve the actual content of a bill in AI-friendly format

1. Create a new file in src/wa_leg_mcp/tools/
2. Implement tool using the MCP decorator:
```python
from mcp.server.fastmcp import Tool

@Tool("toolName", description="Tool description")
def tool_function(param1: str, param2: str = None):

result = await session.call_tool("getBillInfo", {
"bill_number": "HB1234",
"biennium": "2025-26"
})

print(result)

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "washington state legislature mcp server": {
            "wa-leg-mcp": {
                "command": "python",
                "args": [
                    "src/wa_leg_mcp/server.py"
                ]
            }
        }
    }
}

McpServers

{
    "wa-leg-mcp": {
        "command": "python",
        "args": [
            "src/wa_leg_mcp/server.py"
        ]
    }
}

A Model Context Protocol (MCP) server that provides AI assistants with access to Washington State Legislature data, enabling civic engagement through conversational interfaces.

Overview

This MCP server connects AI assistants to the Washington State Legislative Web Services (WSLWS), providing tools for:
- Bill tracking and information retrieval
- Committee meeting schedules and agendas
- Legislator lookup and sponsor information
- Bill status and history tracking
- Legislative document access

Features

Core Tools

- getBillInfo - Retrieve detailed information about specific bills - searchBills - Search for bills using keywords and optional filtering - getBillsByYear - Retrieve all bills from a specific year with filtering options - getCommitteeMeetings - Get committee meeting schedules and agendas - findLegislator - Find legislators by district or lookup sponsors - getBillStatus - Get current status and history of a bill - getBillDocuments - Retrieve bill document metadata with links - getBillContent - Retrieve the actual content of a bill in AI-friendly format

MCP Resources

- bill://xml/{biennium}/{chamber}/{bill_number} - Access bill documents in structured XML format - bill://htm/{biennium}/{chamber}/{bill_number} - Access bill documents in HTML format - bill://pdf/{biennium}/{chamber}/{bill_number} - Get URLs for bill PDF documents - bill://document/{format}/{biennium}/{chamber}/{bill_number} - Generic format for accessing bill documents

Installation

Prerequisites

- Python 3.10+ - pip package manager

Development Installation

pip install -e ".[dev]"

Production Installation

pip install .

Quick Start

Local Development

```bash
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.