Skip to main content

MCP server for Korean National Assembly Open API (open.assembly.go.kr) — bills, members, votes, committee composition, and per-member vote records

Project description

open-assembly-mcp

PyPI GitHub License Python Tests 한국어

MCP server for the Korean National Assembly Open API (열린국회정보) — query bills, members, vote results, committee composition, and per-member vote records directly from Claude or any MCP-compatible AI client.


Quick Start

Prerequisites: Claude Desktop must be installed.

Step 1. Get a free API key at open.assembly.go.kr → Sign up → 마이페이지 → API 키 발급

Step 2. Run the setup wizard:

uvx open-assembly-mcp --setup

It prompts for your key, validates it, and writes the Claude Desktop config automatically.

Step 3. Restart Claude Desktop — the Assembly tools are ready.


Usage Examples

Once connected, ask Claude in natural language (Korean or English):

22대 국회에서 발의된 AI 관련 법률안을 찾아줘
반도체특별법의 표결 결과와 공동발의자 명단을 알려줘
Find all housing-related bills in the 22nd Assembly that passed,
and list their lead proposers with party affiliation.
Which members of the 법제사법위원회 proposed the most bills in the 22nd Assembly?
Did any 더불어민주당 members vote against 국민투표법 개정안?

Claude chains the tools automatically and returns a structured summary.


Available Tools

All tools return total_count and has_more for transparent pagination. Coverage: 16th–22nd National Assembly (2000–present). Member-sponsored bills only.

Tool Description
search_bills Search bills by assembly, keyword, proposer, committee, date range, or outcome
get_bill_detail Full bill record including processing history and plenary result
get_member_info Member profiles: party, district, committee, election type
get_vote_results Plenary vote tallies per bill: yes / no / abstain counts
get_member_votes Per-member roll-call records for a specific bill
get_bill_proposers Lead and co-sponsor list for a bill
get_bill_review Bill review timeline through committee and plenary stages
get_committee_members Committee member roster

Not available via Open API: transcripts, citizen petitions, bill full text (use get_bill_detailLINK_URL for the official bill page).


Updating

uvx caches packages locally. If you installed a previous version, force a reinstall to get the latest:

uvx --reinstall open-assembly-mcp --setup

To update the server used by Claude Desktop, edit your config and change the args line to pin the new version, or leave it as open-assembly-mcp@latest to always pull the latest on startup.


Manual Config (alternative to --setup)

Edit your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "open-assembly": {
      "command": "uvx",
      "args": ["open-assembly-mcp@latest"],
      "env": {
        "ASSEMBLY_API_KEY": "your-api-key-here"
      }
    }
  }
}

Claude Code Setup

claude mcp add open-assembly \
  --command uvx \
  --args "open-assembly-mcp@latest" \
  --env "ASSEMBLY_API_KEY=your-key-here"

Why this exists

The Korean National Assembly's 열린국회정보 API provides rich legislative data — every member-sponsored bill since 2000, full member rosters, plenary vote tallies, committee review timelines, and co-sponsor networks. The data is invaluable for political science research, but the traditional retrieval workflow is slow:

Traditional: search site manually → copy data → clean → load into Python/R
             → hours of overhead per research question

With MCP:    ask Claude in one sentence → tools chain automatically → results in seconds

Concrete research use cases:

Task Tools used
Co-sponsorship network for a policy domain search_bills + get_bill_proposers
Party-line discipline on a specific vote get_member_votes (filter by party)
Full legislative career of a single member search_bills (proposer filter)
Committee composition by party get_committee_members
Bill timeline from filing to promulgation get_bill_review + get_bill_detail
Cross-party voting coalitions get_vote_results + get_member_votes

Local Development

git clone https://github.com/kyusik-yang/open-assembly-mcp.git
cd open-assembly-mcp

cp .env.example .env        # add ASSEMBLY_API_KEY=your-key

uv sync --group dev
uv run pytest tests/ -v
# Run the server locally
ASSEMBLY_API_KEY=your-key uv run python -m data_go_mcp.open_assembly.server

Changelog

v0.2.4 (2026-03)

  • --setup wizard: ASCII art banner with teal-to-blue gradient, animated validation, polished bilingual prompts

v0.2.3 (2026-03)

  • --setup wizard: ANSI colors, box-drawing header, professional bilingual prompts

v0.2.2 (2026-03)

  • --setup wizard: bilingual prompts (EN/KR), academic contact info

v0.2.1 (2026-03)

  • Added --setup wizard: interactive installer that auto-configures Claude Desktop

v0.2.0 (2026-03)

  • Added get_member_votes — per-member roll-call records for any bill
  • All tools now return total_count and has_more for transparent pagination
  • Added propose_dt_from / propose_dt_to date filter to search_bills
  • Extended coverage to 16th and 17th Assemblies

v0.1.0 (2026-02)

  • Initial release

License

Apache 2.0. See LICENSE.

This project was built following the architecture of Koomook/data-go-mcp-servers. The server structure, packaging conventions, and API client pattern are adapted from that project under the Apache 2.0 license.

Not affiliated with or endorsed by the Korean National Assembly or open.assembly.go.kr.


Built with Claude Code — because the best way to make an AI tool for querying a legislature is to have an AI write it.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

open_assembly_mcp-0.2.4.tar.gz (24.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

open_assembly_mcp-0.2.4-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file open_assembly_mcp-0.2.4.tar.gz.

File metadata

  • Download URL: open_assembly_mcp-0.2.4.tar.gz
  • Upload date:
  • Size: 24.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for open_assembly_mcp-0.2.4.tar.gz
Algorithm Hash digest
SHA256 58cc52d8e41faf8f3b9308c00b134cfa7d08c36c4ebc42467bd6178ceaa2a8fd
MD5 4dda94699c0caee77875801a96efcbbc
BLAKE2b-256 3fa464c345f6153aa6bf64f204b8f9f11b6cd576e58e0b5bdfaec842b155a5fd

See more details on using hashes here.

File details

Details for the file open_assembly_mcp-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: open_assembly_mcp-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for open_assembly_mcp-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3ab7b97679257ee8efcad0e1bc881c9e5a332b1f4ce89db816dd6fb289b79e93
MD5 37c3f49e49423cdb9e0bfbb35aacd17f
BLAKE2b-256 14dafeca0c8f5870289bf32f71b5b02b7f7efccb667781022a9398f089790be0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page