mcpField
W
Washington State Legislature MCP Server

Washington State Legislature MCP Server

本地服务
github.com/awalcutt法律与政务177 周前更新

关于 Washington State Legislature MCP Server

面向关注华盛顿州立法的用户,这个 MCP 服务连接州立法网络服务,供 AI 助手查询法案、议员、委员会日程及立法文件。除检索外,还提供不同格式的法案文档资源。

主要功能

  1. 01查询法案详情与状态历史
  2. 02按关键词和条件搜索法案
  3. 03查看委员会会议与议程
  4. 04查找议员及提案人信息
  5. 05获取法案文档及内容

适用场景

  1. 01追踪特定法案进展
  2. 02查找某日期范围内的委员会会议
  3. 03按主题筛选法案
  4. 04读取法案 XML、HTML 或 PDF 信息

MCP 相关

作为 MCP 服务,它向客户端提供立法查询工具,以及通过 URI 模板访问法案文档的资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Washington State Legislature MCP 服务

一个模型上下文协议(MCP)服务,可让 AI 助手访问 Washington State Legislature 数据,通过对话界面促进公民参与。

概述

此 MCP 服务将 AI 助手连接到 Washington State Legislative Web Services(WSLWS),并提供以下工具:

  • 跟踪法案并检索相关信息
  • 查询委员会会议日程和议程
  • 查找立法者和提案人信息
  • 跟踪法案状态和历史记录
  • 访问立法文件

功能

核心工具
  • getBillInfo - 获取特定法案的详细信息
  • searchBills - 使用关键词和可选筛选条件搜索法案
  • getBillsByYear - 获取特定年份的所有法案,并提供筛选选项
  • getCommitteeMeetings - 获取委员会会议日程和议程
  • findLegislator - 按选区查找立法者或查询提案人
  • getBillStatus - 获取法案的当前状态和历史记录
  • getBillDocuments - 获取法案文档元数据及链接
  • getBillContent - 以适合 AI 使用的格式获取法案的实际内容
MCP 资源
  • bill://xml/{biennium}/{chamber}/{bill_number} - 以结构化 XML 格式访问法案文档
  • bill://htm/{biennium}/{chamber}/{bill_number} - 以 HTML 格式访问法案文档
  • bill://pdf/{biennium}/{chamber}/{bill_number} - 获取法案 PDF 文档的 URL
  • bill://document/{format}/{biennium}/{chamber}/{bill_number} - 用于访问法案文档的通用格式

安装

前提条件
  • Python 3.10+
  • pip 包管理器
开发环境安装
pip install -e ".[dev]"
生产环境安装
pip install .

快速开始

本地开发
# Test with MCP Inspector
mcp dev src/wa_leg_mcp/server.py

# Run with stdio transport
python src/wa_leg_mcp/server.py
远程部署

如需在 AWS Lambda 上进行云部署,可使用 mcp-remote 适配器以连接 Claude Desktop:

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

创建一个 .env 文件:

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

仓库结构

wa-leg-mcp/
├── src/
│   ├── wa_leg_mcp/
│   │   ├── __init__.py
│   │   ├── server.py           # Main MCP server implementation
│   │   ├── tools/              # Tool implementations
│   │   │   ├── __init__.py
│   │   │   ├── bill_tools.py
│   │   │   ├── committee_tools.py
│   │   │   └── legislator_tools.py
│   │   ├── resources/          # MCP resource implementations
│   │   │   ├── __init__.py
│   │   │   └── bill_resources.py # Bill document resources
│   │   ├── clients/            # API clients
│   │   │   ├── __init__.py
│   │   │   └── wsl_client.py   # WA State Legislature API client
│   │   └── utils/              # Utility functions
│   │       ├── __init__.py
│   │       └── formatters.py
├── tests/                      # Test suite
│   ├── __init__.py
│   ├── test_bill_tools.py
│   ├── test_bill_resources.py  # Tests for bill resources
│   ├── test_committee_tools.py
│   ├── test_legislator_tools.py
│   ├── test_server.py
│   ├── test_utils_formatters.py
│   └── test_wsl_client.py
├── pyproject.toml              # Project configuration and dependencies
├── Makefile                    # Development workflow commands
├── README.md
└── LICENSE

开发

设置开发环境
  1. 克隆仓库:
git clone https://github.com/awalcutt/wa-leg-mcp.git
cd wa-leg-mcp
  1. 创建虚拟环境:
python -m venv venv
source venv/bin/activate  # Or `venv\Scripts\activate` on Windows
  1. 安装开发依赖项:
pip install -e ".[dev]"
  1. 运行测试:
make test
添加新工具
  1. 在 src/wa_leg_mcp/tools/ 中创建新文件
  2. 使用 MCP 装饰器实现工具:
from mcp.server.fastmcp import Tool

@Tool("toolName", description="Tool description")
def tool_function(param1: str, param2: str = None):
    # Implementation
    return {"result": data}
  1. 在 server.py 中将工具添加到 get_default_tools() 函数,以便注册该工具
  2. 在 tests/ 中添加测试

部署选项

本地部署
  • 直接使用 Python 运行
  • 配合 MCP Inspector 进行开发
云部署
  • AWS Lambda 与 API Gateway(通过 mcp-remote 适配器支持远程连接)
  • Google Cloud Functions
  • Azure Functions
环境变量
变量描述默认值
WSL_API_TIMEOUTAPI 请求超时时间(秒)30
WSL_CACHE_TTL缓存生存时间(秒)300
LOG_LEVEL日志级别INFO
SERVER_NAME自定义服务名称Washington State Legislature MCP Server

使用示例

配合 Claude Desktop 使用

添加到 Claude Desktop 配置:

{
  "mcpServers": {
    "wa-leg": {
      "command": "python",
      "args": ["path/to/src/wa_leg_mcp/server.py"],
      "env": {
        "WSL_CACHE_TTL": "600"
      }
    }
  }
}
配合其他 AI 客户端使用
# Example client integration
from mcp.client import ClientSession
import asyncio

async def connect_to_legislature_mcp():
    async with ClientSession(server_command=["python", "src/wa_leg_mcp/server.py"]) as session:
        # List available tools
        tools = await session.list_tools()
        
        # Call a tool
        result = await session.call_tool("getBillInfo", {
            "bill_number": "HB1234",
            "biennium": "2025-26"
        })
        
        print(result)
        
        # Access a resource
        bill_xml = await session.read_resource(
            "bill://xml/2025-26/House/1234"
        )
        
        print(f"Bill XML content length: {len(bill_xml)}")

asyncio.run(connect_to_legislature_mcp())

API 文档

工具
getBillInfo

使用 GetLegislation API 获取特定法案的详细信息。

参数:

  • bill_number(字符串,必填):法案编号(例如,“HB1234”、“SB5678”)
  • biennium(字符串,必填):格式为“2025-26”的立法两年期

返回:法案详情,包括描述、提案人、状态、财政说明和配套法案

searchBills

使用 WSL Search API 根据关键词搜索法案,并可选择筛选条件。

参数:

  • query(字符串,必填):搜索查询文本(例如,“气候变化”“交通”)
  • bienniums(数组,可选):要搜索的两年期列表(格式:“YYYY-YY”),默认为当前两年期
  • agency(字符串,可选):按提出法案的机构筛选(“House”“Senate” 或 “Both”)
  • max_results(整数,可选):要返回的结果总数上限(最多 100)

返回:符合搜索条件的法案列表

getBillsByYear

使用 GetLegislationByYear API 获取特定年份的所有法案,并可选择筛选条件。

参数:

  • year(字符串,可选):年份,格式为 “YYYY”(例如,“2025”),默认为当前年份
  • agency(字符串,可选):按提出法案的机构筛选(“House” 或 “Senate”)
  • active_only(布尔值,可选):若为 True,则仅返回有效法案

返回:符合条件的法案列表

getCommitteeMeetings

使用 GetCommitteeMeetings API 获取委员会会议和议程。

参数:

  • start_date(字符串,必填):开始日期,格式为 YYYY-MM-DD
  • end_date(字符串,必填):结束日期,格式为 YYYY-MM-DD
  • committee(字符串,可选):按特定委员会筛选

返回:委员会会议列表,包含日期、时间、地点和议程项目

findLegislator

使用 GetSponsors API 查找立法议员。

参数:

  • biennium(字符串,必填):立法两年期,格式为 “2025-26”
  • chamber(字符串,可选):“house” 或 “senate”

返回:立法议员列表,包含 ID、姓名、党派和联系信息

getBillStatus

使用 GetCurrentStatus API 获取当前状态和历史记录。

参数:

  • bill_number(字符串,必填):法案编号(例如,“HB1234”)
  • biennium(字符串,必填):立法两年期,格式为 “2025-26”

返回:当前状态、历史记录、行动日期和状态说明

getBillDocuments

获取法案文档元数据(功能基于 Document 服务端点)。

参数:

  • bill_number(字符串,必填):法案编号
  • biennium(字符串,必填):立法两年期,格式为 “2025-26”
  • document_type(字符串,可选):“bill”“amendment” 或 “report”

返回:文档元数据,包含 HTML 和 PDF 版本的链接

getBillContent

以便于 AI 处理的格式获取法案的实际内容。

参数:

  • bill_number(整数,必填):整数形式的法案编号(例如,HB1234 对应 1234)
  • biennium(字符串,可选):立法两年期,格式为 “2025-26”(默认为当前两年期)
  • chamber(字符串,可选):议院名称——“House” 或 “Senate”(若 bill_number 在不同议院中唯一,则可省略)
  • bill_format(字符串,可选):文档格式——“xml”(默认)、“htm” 或 “pdf”

返回:对于 XML 和 HTM 格式:包含文档内容和元数据的 Dict。对于 PDF 格式:包含 PDF 访问 URL 和元数据的 Dict。

资源
法案文档资源

MCP 服务通过 URI 模板提供对法案文档的直接访问:

bill://xml/{biennium}/{chamber}/{bill_number}

以结构化 XML 格式访问法案文档(推荐用于 AI 处理)。

参数:

  • biennium(字符串):立法两年期,格式为 “YYYY-YY”(例如,“2025-26”)
  • chamber(字符串):议院名称——必须严格为 “House” 或 “Senate”
  • bill_number(字符串):字符串形式的数字法案编号(例如,“1234”)

返回:法案文档的 XML 内容

bill://htm/{biennium}/{chamber}/{bill_number}

以 HTML 格式访问法案文档,其中包含指向所引用法律的超链接。

参数:

  • biennium(字符串):立法两年期,格式为 “YYYY-YY”
  • chamber(字符串):“House” 或 “Senate”
  • bill_number(字符串):法案编号

返回:法案文档的 HTML 内容

bill://pdf/{biennium}/{chamber}/{bill_number}

获取法案 PDF 文档的 URL(不获取内容)。

参数:

  • biennium(字符串):格式为 "YYYY-YY" 的立法届期
  • chamber(字符串):"House" 或 "Senate"
  • bill_number(字符串):法案编号

返回:包含用于访问 PDF 文档的 URL 的字典

bill://document/{format}/{biennium}/{chamber}/{bill_number}

用于以任何受支持格式访问法案文档的通用格式。

参数:

  • format(字符串):文档格式:"xml"、"htm" 或 "pdf"
  • biennium(字符串):格式为 "YYYY-YY" 的立法届期
  • chamber(字符串):"House" 或 "Senate"
  • bill_number(字符串):法案编号

返回:根据格式返回文档内容或 URL

贡献

欢迎贡献!详情请参阅我们的贡献指南。

许可证

本项目采用 MIT License 许可,详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。