open-assembly-mcp
You can use this MCP server to query and analyze Korean National Assembly legislative data from any MCP-compatible AI client.
Search member-sponsored bills by assembly, bill name, proposer, processing result, committee, and propose date.
Retrieve bill details, committee/plenary review timelines, co-sponsors, committee meeting records, and one-shot bill summaries.
Look up Assembly members and committee rosters with per-assembly party, district, and committee info.
Get plenary vote tallies and per-member roll-call vote records for specific bills.
Analyze party voting cohesion, identify dissenters, and build full legislator activity profiles with career statistics.
Check currently pending bills, upcoming plenary agenda items, NARS research reports, petitions, schedules, and hearings.
Discover verified API endpoints and call any of the 276+ open.assembly.go.kr endpoints directly via universal fallback tools.
Use transparent pagination (
total_count,has_more) across results.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@open-assembly-mcp What are the latest bills in the 22nd Assembly?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
open-assembly-mcp
MCP server for the Korean National Assembly Open API (열린국회정보) — query bills, members, vote results, committee composition, pending bills, plenary agenda, per-member vote records, NARS reports, petitions, schedule, and hearings directly from Claude or any MCP-compatible AI client.
Showcase
한국어나 영어로 자연스럽게 질문하면 됩니다. Claude가 필요한 툴을 고르고 체인으로 연결합니다.

1 — 당론 분석
"22대 법원조직법 표결, 정당별 찬반 집계와 이탈표 알려줘"
Claude calls get_vote_results → get_party_cohesion
법원조직법 일부개정법률안(대안) — 2026-02 의결
전체: 찬성 173 / 반대 73 / 기권 1
정당별 표결:
더불어민주당 찬성 152 / 기권 1 / 불참 9
국민의힘 반대 70 / 불참 36
조국혁신당 찬성 12
진보당 찬성 4
개혁신당 반대 2 / 불참 1
무소속 찬성 3 / 불참 3
이탈표:
이학영 (더불어민주당 | 경기 군포시) — 기권2 — 의원 의정활동 전체를 한 번에
"이준석 의원 22대 발의 법안 전부 통계내줘"
Claude calls analyze_legislator(name="이준석", assembly="22") — 툴 호출 1번, 최대 500건 자동 페이지네이션
이준석 (개혁신당 | 경기 화성시을 | 22대)
소속: 과학기술정보방송통신위원회
발의 법안: 총 14건
처리 결과: 계류 중 13건 / 대안반영폐기 1건
위원회별: 과학기술정보방송통신위원회 14건
최근 발의 (5건):
전자상거래 등에서의 소비자보호에 관한 법률 일부개정법률안 2026-02-25
정보통신망 이용촉진 및 정보보호 등에 관한 법률 일부개정법률안 2026-02-05
소득세법 일부개정법률안 2025-08-19
전기통신사업법 일부개정법률안 2025-08-06
공공기관의 운영에 관한 법률 일부개정법률안 2025-07-103 — 법안 입법 여정 전체
"인공지능기본법 (의안번호 2206772) 입법 과정 처음부터 끝까지 보여줘"
Claude calls get_bill_summary(assembly="22", bill_no="2206772") — 상세정보·심사정보·발의자·위원회회의 4개 서브호출 병렬 실행
인공지능 발전과 신뢰 기반 조성 등에 관한 기본법안 (BILL_NO 2206772)
발의: 과학기술정보방송통신위원장
위원회 심사:
2024-11-26 과학기술정보방송통신위원회 상정
2024-11-26 과학기술정보방송통신위원회 의결 (원안가결)
본회의:
2024-12-17 의결 — 찬성 260 / 반대 1 / 기권 3
2025-01-21 공포
원문: https://likms.assembly.go.kr/bill/billDetail.do?billId=PRC_R2V4H1W1T2K5M1O6E4Q9T0V7Q9S0U0Related MCP server: AssemblyMCP
Connecting to Claude
There are three ways to use the Assembly tools, depending on which Claude interface you use.
Before any setup:
Install
uv(provides theuvxrunner used in every install path below):# macOS / Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Verify:
uvx --versionshould print a version string. If you seecommand not found, open a new terminal so the PATH update takes effect.Get a free API key at open.assembly.go.kr → Sign up → 마이페이지 → API 키 발급
Option 1 — Claude Desktop (Recommended)
Easiest path. The --setup wizard writes the config file for you.
Prerequisites: Claude Desktop must be installed.
uvx open-assembly-mcp --setupIt prompts for your key, validates it, and writes the config automatically. Then restart Claude Desktop.
Manual config (skip the wizard) — edit the Claude Desktop config file directly:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"open-assembly": {
"command": "uvx",
"args": ["open-assembly-mcp@latest"],
"env": {
"ASSEMBLY_API_KEY": "your-api-key-here"
}
}
}
}Save and restart Claude Desktop.
Option 2 — Claude Code (CLI)
Best for researchers running Claude from the terminal. Three scope options:
# Local scope (default): stored in ~/.claude.json, applies only to the current project
claude mcp add open-assembly \
--command uvx \
--args "open-assembly-mcp@latest" \
--env "ASSEMBLY_API_KEY=your-key-here"
# User scope: available across all your projects
claude mcp add open-assembly \
--scope user \
--command uvx \
--args "open-assembly-mcp@latest" \
--env "ASSEMBLY_API_KEY=your-key-here"
# Project scope: saved to .mcp.json at the project root (git-committable, good for team sharing)
claude mcp add open-assembly \
--scope project \
--command uvx \
--args "open-assembly-mcp@latest" \
--env "ASSEMBLY_API_KEY=your-key-here"Verify it was added: claude mcp list
Option 3 — Claude.ai web (claude.ai)
The claude.ai web interface does not support locally-running MCP servers. It only connects to remote, HTTP-based servers hosted on public infrastructure.
To use the Assembly tools from claude.ai, you would need to deploy the server publicly as a hosted HTTP endpoint. Use Claude Desktop or Claude Code instead.
More Examples
위 Showcase 외 추가 시나리오입니다.
Scenario 1 — Find and filter bills in a policy domain
"22대 국회에서 발의된 인공지능 관련 법률안 목록을 찾아줘. 처리 결과별로 요약하고, 대안반영폐기된 법안 하나의 공동발의자도 알려줘."
Claude calls:
search_bills(assembly="22", bill_name="인공지능", page_size=50)→ 59 bills foundFor a 대안반영폐기 bill:
get_bill_proposers(bill_id="PRC_...")→ co-sponsor list
Sample output (real data, 2026-03):
인공지능 관련 법률안 59건 (22대)
처리 결과:
대안반영폐기 28건 ← 위원회 대안(인공지능기본법)으로 흡수
계류 중 31건
최근 발의 법안:
인공지능 발전과 신뢰 기반 조성 등에 관한 기본법 일부개정법률안 이상휘 2026-02-12
중소기업 인공지능 전환 지원에 관한 법률안 김종민 2026-02-09
인공지능 데이터센터 진흥 및 기반 조성에 관한 법률안 김장겸 2026-02-04
대안반영폐기 법안 공동발의자:
인공지능 발전과 신뢰 기반 조성 등에 관한 기본법 일부개정법률안 (최민희, 2025-09-05)
최민희 (민주당), 허성무 (민주당), 김우영 (민주당), 박민규 (민주당),
최혁진 (민주당), 양문석 (민주당), 김현 (민주당), 한민수 (민주당),
노종면 (민주당), 조인철 (민주당) 총 10명Scenario 2 — Trace committee and plenary steps separately
"인공지능기본법 (의안번호 2206772)의 위원회 심사 경로와 본회의 표결 일정을 각각 보여줘."
Claude calls:
get_bill_review(assembly="22", bill_no="2206772")→ committee + plenary timelineget_bill_detail(bill_no="2206772")→ full metadata + LINK_URL
Sample output (real data, 2026-03):
인공지능 발전과 신뢰 기반 조성 등에 관한 기본법안 (BILL_NO 2206772)
발의자: 과학기술정보방송통신위원장
소관위원회: 과학기술정보방송통신위원회
위원회 심사:
2024-11-26 과기위 상정
2024-11-26 과기위 의결 (원안가결)
본회의:
2024-12-17 의결 — 찬성 260 / 반대 1 / 기권 3 (원안가결)
2024-12-26 정부 이송
2025-01-10 정부 이송 완료
2025-01-21 공포
원문 링크: https://likms.assembly.go.kr/bill/billDetail.do?billId=PRC_R2V4H1W1T2K5M1O6E4Q9T0V7Q9S0U0Scenario 3 — Check pending legislation in a committee
"과학기술정보방송통신위원회에 현재 계류 중인 법안은 몇 개야? AI·반도체 관련 법안만 따로 봐줘."
Claude calls:
get_pending_bills(assembly="22", committee="과학기술정보방송통신위원회", page_size=100)→ 12,505 billsget_pending_bills(assembly="22", committee="과학기술정보방송통신위원회", bill_name="인공지능")→ 31 AI bills
Sample output (real data, 2026-03):
과기위 계류의안: 총 12,505건 (2026-03 기준)
AI·반도체 관련 (키워드 필터):
인공지능 관련 31건
반도체 관련 3건
인공지능 관련 최근 발의:
인공지능 발전과 신뢰 기반 조성 등에 관한 기본법 일부개정법률안 이상휘 2026-02-12
중소기업 인공지능 전환 지원에 관한 법률안 김종민 2026-02-09
국방인공지능법안 유용원·부승찬 2026-01-27Scenario 4 — Check what's on the next plenary agenda
"다음 본회의에 상정될 법안 목록을 알려줘."
Claude calls:
get_plenary_agenda(assembly="22", page_size=30)→ upcoming agenda items
Sample output (real data, 2026-03):
본회의 부의안건 (22대, 조회일 기준 최신)
총 101건:
1. [기후에너지환경노동위원회] 산업안전보건법 일부개정법률안(대안) (2216964)
2. [기후에너지환경노동위원회] 환경오염시설의 통합관리에 관한 법률 일부개정법률안(대안) (2216963)
3. [기후에너지환경노동위원회] 노동감독관 직무집행법안(대안) (2216962)
4. [기후에너지환경노동위원회] 산업재해보상보험법 일부개정법률안(대안) (2216961)
5. [기후에너지환경노동위원회] 근로기준법 일부개정법률안(대안) (2216960)
6. [정보위원회] 국가정보원직원법 일부개정법률안(대안) (2216812)
7. [기후위기 특별위원회] 기후위기 대응을 위한 탄소중립·녹색성장 기본법 일부개정법률안(대안) (2216802)
...Available Tools
All tools return total_count and has_more for transparent pagination.
Quick Reference
Core tools (dedicated to common legislative research workflows):
Tool | Key parameters | Returns |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Chain & research tools (compound queries and computed metrics):
Tool | Key parameters | Returns |
|
|
|
|
|
|
API expansion tools (NARS, petitions, schedule, hearings — new in v0.6.0):
Tool | Key parameters | Returns |
|
|
|
|
|
|
|
|
|
|
|
|
Universal access tools (reach any of the 276+ endpoints not yet covered above):
Tool | Key parameters | Returns |
|
| Verified endpoint registry, grouped by category |
|
|
|
discover_apis→ find an endpoint code →query_assembly→ call it directly.
BILL_ID vs BILL_NO — many tools need
BILL_ID(the internal ID, starts withPRC_...), notBILL_NO(the public 7-digit number like2216983). Both are returned bysearch_billsandget_pending_bills. Tools that needBILL_ID:get_bill_proposers,get_member_votes,get_bill_committee_review.
Universal Access: discover_apis + query_assembly
The 18 dedicated tools cover the most common legislative research workflows. For anything not yet wrapped — NABO budget analyses, press releases, or any of the 276+ total endpoints — use the two universal access tools.
Step 1: find the endpoint
"열린국회 API에서 청원 관련 엔드포인트를 찾아줘"Claude calls discover_apis(keyword="청원") and returns matching codes with descriptions.
Step 2: call it
"22대 국회 청원 현황 조회해줘"Claude calls query_assembly(endpoint_code="<code>", params={"AGE": "22"}).
For the full catalog of 276+ endpoints: https://open.assembly.go.kr/portal/data/service/selectAPIServicePage.do
Coverage by Assembly
Tool | Reliable range | Notes |
| 16th–22nd | Member-sponsored bills only (no government bills) |
| 16th–22nd | |
| 16th–22nd | |
| 16th–22nd | |
| 16th–22nd | |
| 19th–22nd recommended | Electronic vote records sparse before 19th Assembly |
| 18th–22nd recommended | Roll-call data from ~18th Assembly onward; default page_size=300 fetches all ~300 members in one call |
| 16th–22nd | |
| 22nd recommended | Bills not yet processed; ~8,900 in the 22nd Assembly |
| 22nd recommended | Bills scheduled for the next plenary session |
| 16th–22nd | Committee meetings for a specific bill |
| 16th–22nd | Convenience — chains detail + review + proposers + committee meetings in one call |
| 16th–22nd | Chain — member profile + all sponsored bills + career stats (by_result, by_year, by_committee) |
| 18th–22nd recommended | Research — per-party vote breakdown + dissenters; requires BILL_ID from get_vote_results |
| All | NARS publications by title keyword, writing-date range or series |
| 16th–22nd | Pending or all-time petitions; |
| All | Assembly schedule — all, plenary-only, or committee-specific |
| 16th–22nd | Confirmation or public hearing meetings with minutes PDFs; search by nominee or committee |
| All | Searches the verified endpoint registry; use before |
| All | Universal fallback — calls any of the 276+ endpoints directly |
Not covered by the tools: full meeting transcripts and bill full text. Petition records come from search_petitions, and search_hearings links each hearing's minutes as a PDF.
For bill texts and transcripts, see Related Data Packages below.
For official bill pages, use get_bill_detail → LINK_URL.
Related Data Packages
This MCP server queries the 열린국회정보 API in real time. For data not available through the API, companion packages provide pre-collected datasets:
Package | Data | Scale | Install |
Master bill database, roll call votes, ideal points (bridged default, per-assembly W-NOMINATE, pooled DW-NOMINATE), bill texts | 115K bills and 4.1M roll-call votes (17th-22nd), 955 ideal points (20th-22nd) |
| |
Bill propose-reason texts (제안이유), co-sponsor records, MP metadata | 60,925 bills (20th-22nd) |
| |
Committee proceeding speeches, legislator-witness Q&A dyads | 15.1M speaker turns, 11.3M dyads (16th-22nd) |
| |
Cabinet minister panel with dual-office (겸직) coding | 687 spells, 686 nominations (1988-2026) | ||
Curated teaching datasets (bills, votes, wealth, speeches) | R package, 7 datasets |
|
Quick rule: Use this MCP for real-time lookups and exploratory queries via Claude. Use kna for offline statistical analysis and reproducible research in Python/R.
You need... | Use |
Real-time bill metadata, vote tallies, member roster | This MCP (live API) |
Pending bills, plenary agenda (time-sensitive) | This MCP (live API) |
Offline master database, roll calls, ideal points | |
Bill propose-reason text (제안이유) | |
Committee hearing transcripts, speech-level data | |
Legislator-witness Q&A pairs for oversight research | kr-hearings-data dyads |
Cabinet minister dual-office status | |
Teaching quantitative methods with Korean politics data | assemblykor (R) |
Updating
uvx caches packages locally. If you installed a previous version, force a reinstall to get the latest:
uvx --reinstall open-assembly-mcp --setupTo 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.
Troubleshooting
uvx: command not found
You haven't installed uv yet, or the new PATH hasn't been picked up. Run the install command in the Before any setup section, then open a fresh terminal (or source ~/.zshrc / source ~/.bashrc).
Claude Desktop doesn't show the Assembly tools
Check the config file path is correct:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows).Make sure the JSON has a top-level
mcpServerskey (not nested underpreferences).Fully quit Claude Desktop (⌘Q on macOS) and reopen. A normal window close does not reload MCP servers.
View the Claude Desktop log to see launch errors:
~/Library/Logs/Claude/on macOS.
401 Unauthorized or empty results on every call
Your ASSEMBLY_API_KEY is missing or wrong. Verify by running uvx open-assembly-mcp --setup again — it validates the key against the live API before writing the config.
Claude Code: claude mcp list doesn't show open-assembly
You probably added it under a different scope. Re-run claude mcp add with --scope user so it's available across projects, or cd into the project where you used the default local scope.
Stale cached version
uvx caches packages by name. Force a refresh with uvx --reinstall open-assembly-mcp@latest --setup.
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 secondsConcrete research use cases:
Task | Tools used |
Co-sponsorship network for a policy domain |
|
Party-line discipline on a specific vote |
|
Per-party vote breakdown + dissenters |
|
Cross-party voting coalitions |
|
Full legislative career of a single member |
|
Legislator activity by year or committee |
|
Committee composition by party |
|
Bill timeline from filing to promulgation |
|
Currently active legislation in a policy area |
|
Upcoming plenary votes |
|
Majority-building analysis for a passed bill |
|
Confirmation hearing list by nominee or committee |
|
NARS research reports on a policy topic |
|
Petitions received in a given assembly |
|
Bill propose-reason text analysis |
|
Committee oversight speech patterns | kr-hearings-data speeches |
Confirmation hearing Q&A transcripts | kr-hearings-data with hearing_type filter |
Research-first design
The only other MCP server for 열린국회 API is hollobit/assembly-api-mcp (TypeScript, MIT). That project offers a clean universal query interface — call any of the 276+ endpoints by code, get back raw rows. This project extends that model with domain-specific tools built around the actual structure of legislative research.
hollobit/assembly-api-mcp | open-assembly-mcp | |
Language | TypeScript | Python |
Dedicated tools | None (universal query only) | 14 dedicated + 4 expansion + 2 universal |
Research metrics | None | Party cohesion, career stats built-in |
Party cohesion | Manual aggregation from raw rows |
|
Legislator profile | Multi-step manual |
|
Bill timeline | Manual chaining |
|
Historical accuracy | Current assembly only |
|
BILL_ID vs BILL_NO | Not distinguished | Explicit in all relevant tools |
Test coverage | None | 106 pytest |
What this means in practice
get_party_cohesion takes a BILL_ID and returns the full picture for that vote: per-party yes/no/abstain counts, dominant position, and a named list of individual dissenters with their vote type (opposite or abstain). The output is structured for immediate use — no post-processing needed.
analyze_legislator returns a complete legislative career in one call: member metadata (party, district, committee), all sponsored bills up to 500 (auto-paginated), and activity breakdowns by processing result, committee, and year. The by_year and by_committee fields eliminate several manual joins when constructing legislator activity panels.
get_bill_summary runs four sub-calls concurrently (bill detail, review timeline, co-sponsors, committee meetings) and returns them as a single structured response. Partial failures are isolated in errors{} rather than crashing the whole response — useful when some endpoints return empty data for older assemblies.
get_member_info with ALLNAMEMBER returns party, district, and committee assignment as of the requested assembly, not the current one. This matters for panel data across multiple assemblies: a member who switched parties or changed districts will show correct affiliation for each period separately.
The universal-access pair (discover_apis + query_assembly) was directly inspired by hollobit's design and covers the remaining 250+ endpoints not yet wrapped in dedicated tools. See CREDITS.md.
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.serverAcknowledgments
discover_apis, query_assembly, the endpoint registry structure, and the raw-fallback
design are adapted from hollobit/assembly-api-mcp
(MIT License), with explicit permission from the author. All implementation is original Python.
See CREDITS.md for a detailed breakdown.
The server architecture and packaging conventions follow Koomook/data-go-mcp-servers (Apache 2.0).
Changelog
v0.7.2 (2026-09)
Documentation only. The READMEs no longer say that petitions are unavailable, since
search_petitionsreturns them. The Korean README lists all 20 tools.
v0.7.1 (2026-09)
The API key no longer reaches logs or tool results. httpx logged every request URL, key included, at INFO level to the server log that MCP hosts keep, and error messages are now scrubbed of the key.
search_nars_reportsuses the integrated NARS endpointALLNARSPBLM. The earlier endpoint no longer exists, and every call returned an empty result.keywordsearches titles,date_fromanddate_tofilter on the writing date, and the newreport_typeselects a series such as "이슈와 논점".search_hearingssends the requiredERACOparameter (e.g. 제22대). Every call used to fail with ERROR-300 and return nothing.committeenow matches committee names.nominee_namefinds special hearing committees named after the nominee and returns the 인사청문 요청안 rows innominations.The endpoint registry marks these endpoints as checked against the Open API specification and adds
nrvsawtaauyihadij(29 entries).
v0.7.0 (2026-09)
Moves to the MCP Python SDK 2.x (
mcp>=2.2,<3). The server is built onMCPServer, the renamedFastMCP. The tools, their parameters and their output are unchanged.The server reports its own package version to clients. Under SDK 2.x an unversioned server reports an empty version.
v0.6.1 (2026-09)
Pins
mcpbelow 2.0. The MCP Python SDK 2.0 (July 2026) removedmcp.server.fastmcp, so a fresh install of 0.6.0 pulledmcp2.x and the server failed to start.Internal parameter names use
assemblyinstead ofagethroughout the client and server. The tool parameters are unchanged, and the tool descriptions now match them.README: the related-packages table reflects kna 0.8.1, kr-hearings-data v10 and minister-data v2.0.0. The README also has a Showcase section and a uv troubleshooting note.
v0.6.0 (2026-04)
Added
search_nars_reports: search 국회입법조사처 research reports by keyword or date rangeAdded
search_petitions: query pending or all-time petitions by assembly and keyword; automatically routes to the correct endpoint (include_closedtoggle)Added
get_schedule: unified schedule lookup — all, plenary-only, or committee-specific;schedule_typeparameter is case-insensitiveAdded
search_hearings: personnel confirmation hearings and public hearings;hearing_typeroutes to the correct endpointAll four new tools return
has_morepagination flag andraw_responsefallback for non-standard API formatsExpanded registry from 11 to 28 entries (NARS×1, petitions×5, schedule×3, hearings×2, meeting records×2, committees×2, bills×2 new; total includes 9 bills + 2 members + 2 votes carried over)
Test suite: 80 → 106 tests
v0.5.0 (2026-04)
Added
analyze_legislatorchain tool: one-shot legislator profile — member info + all sponsored bills (up to 500, paginated) + career statistics (by_result, by_committee, by_year, recent 5)Added
get_party_cohesionresearch tool: per-party vote aggregation, dominant position, individual dissenters (type: opposite / abstain); handles all-abstain edge case gracefullyBoth new tools handle parallel sub-calls, ambiguous member names, pagination, and graceful error isolation
v0.4.0 (2026-04)
Added
discover_apistool: keyword search across the verified endpoint registryAdded
query_assemblytool: universal fallback to call any of the 276+ open.assembly.go.kr endpoints directly; handles both standard (head/row) and non-standard response formatsAdded
registry.pywith 11 verified endpoint entries organized by categoryAdded
CREDITS.mdwith detailed attribution for hollobit/assembly-api-mcp patternsBumped description and keywords to reflect expanded API coverage
v0.3.1 (2026-03)
Added "Related Data Packages" section to README with cross-references to korean-assembly-bills, kr-hearings-data, minister-data, assemblykor
Updated tool docstrings (
get_bill_detail,search_bills) to guide users to companion packages for bill texts and committee transcriptsExpanded research use cases table with companion package workflows
v0.3.0 (2026-03)
Breaking: renamed
ageparameter toassemblyacross all tools for clarityAdded client-side date filtering to
search_bills(propose_dt_from/propose_dt_to)Fixed
get_member_infoto use ALLNAMEMBER endpoint for correct per-assembly data (party, district, committee)Fixed
_parse_responseto handle alternate INFO-200 response formatRemoved broken date filter params from API calls (API ignores them)
v0.2.7 (2026-03)
Replaced all placeholder examples ("홍길동", "김OO", etc.) in README with real API query results
Updated scenario outputs with verified live data: 인공지능기본법 journey, 법원조직법 party-line vote, 이준석 profile, 과기위 pending bills, plenary agenda
v0.2.6 (2026-03)
Added
get_bill_summaryconvenience tool: chains detail + review + proposers + committee meetings in one parallel callRewrote all 12 tool docstrings with When-to-use, workflow hints, and BILL_ID vs BILL_NO disambiguation
Added explicit
TimeoutExceptionhandling in API client (descriptive error message)Added
test_client.pycoverage for 3 new endpoints + timeout handling (36 → 46 tests)
v0.2.5 (2026-03)
Added 3 new tools:
get_pending_bills(계류의안),get_plenary_agenda(본회의부의안건),get_bill_committee_review(위원회 심사 회의정보)Fixed
get_member_votesdefaultpage_size50 → 300 (covers full ~300-member plenary in one call)Improved docstrings: corrected
get_vote_resultsdescription, added pagination tips to all tools
v0.2.4 (2026-03)
--setupwizard: ASCII art banner with teal-to-blue gradient, animated validation, polished bilingual prompts
v0.2.3 (2026-03)
--setupwizard: ANSI colors, box-drawing header, professional bilingual prompts
v0.2.2 (2026-03)
--setupwizard: bilingual prompts (EN/KR), academic contact info
v0.2.1 (2026-03)
Added
--setupwizard: interactive installer that auto-configures Claude Desktop
v0.2.0 (2026-03)
Added
get_member_votes— per-member roll-call records for any billAll tools now return
total_countandhas_morefor transparent paginationAdded
propose_dt_from/propose_dt_todate filter tosearch_billsExtended 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.
Available Tools
20 toolsanalyze_legislatorA
국회의원 종합 프로필을 한 번에 조회합니다 (체인 도구).
One-shot legislator profile: member info + all sponsored bills + career statistics. Internally chains get_member_info and search_bills.
When to use: • When you need a complete picture of one legislator's activity in one call. • Instead of calling get_member_info + search_bills(proposer=name) separately.
Note: Fetches up to 500 sponsored bills (5 pages of 100). For very prolific legislators total_count will be correct, but all[] may be truncated at 500.
Args: name: 의원 한글명 — 필수 (예: "이준석", "홍길동") If multiple members share the name, the first result is used and all matches are listed in member_all_matches. assembly: 대수 (기본값: "22", "16"-"22" 지원)
Returns: member: 의원 정보 dict (정당, 선거구, 위원회, 사진 등) member_all_matches: 동명이인이 있을 때 전체 목록 bills: - total: 전체 발의 건수 (API 기준) - retrieved: 실제 가져온 건수 (최대 500) - by_result: 처리결과별 건수 {원안가결: N, 계류: N, ...} - by_committee: 소관위원회별 건수 - by_year: 발의 연도별 건수 - recent: 최근 발의 5건 - all: 전체 발의 법안 목록 (최대 500건) errors: 서브 호출별 에러 (없으면 빈 dict) message: 요약 메시지
Inputs: name (required), assembly. Returns: object
discover_apisA
열린국회정보 Open API 엔드포인트를 검색합니다.
Search the registry of verified Korean National Assembly API endpoints. Use this to find the endpoint code you need before calling query_assembly.
Typical workflow:
discover_apis(keyword="청원") → find petition endpoint codes
query_assembly(endpoint_code="", params={"AGE": "22"}) → call it
When to use: • To explore what API endpoints are available beyond the 12 dedicated tools. • To find the endpoint code for a specific data type (schedule, petitions, etc.). • Without a keyword to see all verified endpoints organized by category.
Note: This registry covers the verified subset of the 276+ endpoints available at open.assembly.go.kr. If your endpoint is not here, visit the API portal directly: https://open.assembly.go.kr/portal/data/service/selectAPIServicePage.do
Args: keyword: 검색어 (선택, 예: "청원", "일정", "petition", "vote"). Matches against Korean name, English name, category, tool name, and notes. If omitted, returns all verified endpoints grouped by category.
Returns: endpoints: List of matching endpoints with code, names, key_params, and notes by_category: Same endpoints grouped by category (bills, members, votes, ...) count: Number of matching endpoints note: Link to the full API catalog
Inputs: keyword. Returns: object
get_bill_committee_reviewA
특정 의안의 위원회 심사 회의정보를 조회합니다.
Get the individual committee meeting records at which a specific bill was reviewed. Returns one row per committee meeting, with date and result for each session.
NOT this tool: • For the HIGH-LEVEL processing timeline (committee referral date, plenary vote date) → use get_bill_review (which takes BILL_NO, not BILL_ID)
When to use: • To see exactly when and how many times a bill was discussed in committee. • Combined with get_bill_review for a complete legislative timeline.
IMPORTANT — requires BILL_ID, not BILL_NO: • BILL_ID looks like "PRC_..." — get it from search_bills, get_pending_bills, get_vote_results, or get_bill_review • BILL_NO is the 7-digit public number — WRONG for this tool
Args: bill_id: 의안ID — 필수 (예: "PRC_T2M6W0F2I1W2T1X7T4K2Q5A9J4P2M5")
Returns: meetings: 위원회 심사 회의 목록 — BILL_ID, BILL_NM, CMIT_NM(위원회), MTG_DT(회의일), SESS_NO(회기), PROC_RESULT(결과) 등 count: 반환된 회의 수 total_count: 전체 건수
Inputs: bill_id (required). Returns: object
get_bill_detailA
의안 상세정보를 조회합니다 (의안정보 통합 API).
Get comprehensive bill metadata: processing dates, committee referral, promulgation info, and a link to the official bill page.
When to use: • After search_bills, to get the full metadata for a specific bill. • To get LINK_URL for the official bill text/rationale (not available via API).
Not this tool: • For the committee/plenary processing TIMELINE → use get_bill_review • For CO-SPONSORS → use get_bill_proposers (requires BILL_ID, not BILL_NO)
Bill full text / propose-reason (제안이유): The Open API does not return bill texts. Use the korean-assembly-bills package (pip install korean-assembly-bills) for 60,925 bill texts (20th-22nd Assembly).
Args: bill_no: 의안번호 (예: "2217175") — 필수. search_bills 또는 get_pending_bills 결과의 BILL_NO 필드 사용. BILL_ID(PRC_...) 가 아닌 BILL_NO(숫자 7자리)를 사용해야 합니다.
Returns: bill: 의안 상세정보 — BILL_NO, BILL_NM, BILL_KND, PPSR_NM, PPSL_DT, 위원회 심사일정, 본회의 처리일정, 공포 정보, LINK_URL 등
Inputs: bill_no (required). Returns: object
get_bill_proposersA
의안 제안자(공동발의자) 정보를 조회합니다.
Get the complete list of proposers (lead + all co-sponsors) for a bill. Returns name, party, and role for each proposer.
When to use: • After search_bills, to find who co-sponsored a bill and from which parties. • For co-sponsorship network analysis across multiple bills.
IMPORTANT — requires BILL_ID, not BILL_NO: • BILL_ID looks like "PRC_Y2Z6X0..." — get it from search_bills or get_pending_bills • BILL_NO is the 7-digit number (e.g., "2216983") — WRONG for this tool
Args: bill_id: 의안ID — 필수 (예: "PRC_Y2Z6X0Y2W1X9V1W1D4E4D3B7B8Z1A1") search_bills / get_pending_bills 결과의 BILL_ID 필드 사용.
Returns: proposers: 제안자 목록 — PPSR_NM(이름), PPSR_POLY_NM(정당), REP_DIV(대표/공동발의 구분), PPSR_ROLE(역할), PPSL_DT(발의일) 등 count: 제안자 수 total_count: 전체 제안자 수
Inputs: bill_id (required). Returns: object
get_bill_reviewA
의안 처리·심사정보를 조회합니다 — 위원회 및 본회의 처리 경로 요약.
Get the high-level processing timeline for bills: committee referral date, committee decision, plenary vote date, and final outcome.
NOT this tool: • For INDIVIDUAL COMMITTEE MEETING records (dates, agenda) → use get_bill_committee_review • For FULL BILL METADATA (proposer, LINK_URL, etc.) → use get_bill_detail • For PER-MEMBER VOTE records → use get_member_votes
When to use: • To see the overall legislative timeline for one or more bills. • To filter bills by committee and see their processing status.
Args: assembly: 대수 (예: "22") — 필수 bill_no: 의안번호로 필터 (선택, 예: "2216983") — BILL_NO(숫자), BILL_ID 아님 committee: 위원회명으로 필터 (선택, 예: "법제사법위원회") page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 10)
Returns: reviews: 심사정보 목록 — BILL_ID, BILL_NO, BILL_NM, COMMITTEE_NM, 위원회 상정일/의결일, 본회의 상정일/의결일, PROC_RESULT_CD(처리결과), YES_TCNT, NO_TCNT, BLANK_TCNT, LAW_PROC_DT(공포일) 등 count: 이번 페이지 반환 건수 total_count: 전체 건수 has_more: True이면 page+1로 재호출
Inputs: assembly (required), page, bill_no, committee, +1 more. Returns: object
get_bill_summaryA
단일 의안의 핵심 정보를 한 번에 조회합니다 (편의 도구).
One-shot summary of a single bill: metadata + processing timeline + co-sponsors + committee meeting history. Chains multiple API calls internally.
When to use: • When you need a comprehensive view of ONE specific bill in a single call. • Instead of calling get_bill_detail + get_bill_review + get_bill_proposers separately.
Note: This tool makes up to 3 parallel API calls. If any sub-call fails, that section will be missing from the result with an error note.
Args: assembly: 대수 (예: "22") — 필수 bill_no: 의안번호 (예: "2216983") — 필수. search_bills / get_pending_bills 결과의 BILL_NO(숫자) 필드 사용.
Returns: bill_no: 의안번호 detail: get_bill_detail 결과 (BILL_NM, PPSR_NM, PPSL_DT, LINK_URL 등) review: get_bill_review 결과 (위원회/본회의 처리 타임라인, BILL_ID 포함) proposers: get_bill_proposers 결과 (공동발의자 목록) committee_meetings: get_bill_committee_review 결과 (위원회 심사 회의 목록) errors: 각 서브 호출의 에러 (정상이면 빈 dict)
Inputs: bill_no (required), assembly (required). Returns: object
get_committee_membersA
위원회 위원 명단을 조회합니다.
Get the roster of a National Assembly committee, including party breakdown.
When to use: • To list all members of a specific committee. • For party composition analysis of a committee. • More direct than get_member_info(committee=...) for committee rosters.
Args: assembly: 대수 (기본값: "22", "16"–"22" 지원) committee: 위원회명 (선택, 예: "법제사법위원회", "과학기술정보방송통신위원회") None이면 전체 의원 조회 (get_member_info와 동일) page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 50 — 위원회 평균 규모)
Returns: members: 위원 목록 — HG_NM(이름), POLY_NM(정당), ORIG_NM(선거구), CMIT_NM(위원회), REELE_GBN_NM(선수), SEX_GBN_NM(성별) 등 count: 이번 페이지 반환 건수 total_count: 전체 건수 has_more: True이면 page+1로 재호출
Inputs: page, assembly, committee, page_size. Returns: object
get_member_infoA
국회의원 정보를 조회합니다.
Query National Assembly member information: party, district, committee, contact, photo. Uses the ALLNAMEMBER endpoint to provide correct per-assembly data for all assemblies (16th-22nd). Party and district reflect each MP's actual affiliation during that assembly.
When to use:
To look up a member's party, district, or committee affiliation.
To list all members of a party (use party filter, page through results).
To verify the exact name spelling before using as a filter in search_bills.
For committee rosters specifically, get_committee_members is more direct.
Args: assembly: 대수 (기본값: "22", "16"-"22" 지원) name: 의원 한글명 (선택, 예: "홍길동") party: 정당명 (선택, 예: "더불어민주당", "국민의힘") district: 선거구명 (선택, 예: "서울 강남갑", "비례대표") committee: 소속위원회명 (선택, 예: "법제사법위원회") page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 10)
Returns: members: 의원 목록 -- HG_NM(이름), POLY_NM(정당), ORIG_NM(선거구), CMIT_NM(위원회), REELE_GBN_NM(선수), SEX_GBN_NM(성별), E_MAIL, HOMEPAGE, NAAS_PIC(사진URL) 등 count: 이번 페이지 반환 건수 total_count: 전체 건수 has_more: True이면 page+1로 재호출
Inputs: name, page, party, assembly, +3 more. Returns: object
get_member_votesA
특정 법안에 대한 국회의원 개인별 본회의 표결 기록을 조회합니다.
Get individual member voting records for a specific bill (one row per member). This is STEP 2 of the per-member vote analysis workflow.
Typical workflow:
get_vote_results(assembly=assembly, bill_name=...) → find BILL_ID
get_member_votes(bill_id=BILL_ID, assembly=assembly) → all ~300 member votes
Filter by party="더불어민주당" etc. to analyze party discipline
IMPORTANT — requires BILL_ID, not BILL_NO: • BILL_ID looks like "PRC_T2M6W0F2..." — get it from get_vote_results • BILL_NO is the 7-digit number — WRONG for this tool
Note on default page_size=300: Intentionally large to fetch all ~300 plenary members in a single call. If the API returns fewer than 300 results but has_more=False, all votes are retrieved.
Args: bill_id: 의안ID — 필수 (get_vote_results 결과의 BILL_ID 필드) assembly: 대수 — 필수 (예: "22") member_name: 의원명 필터 (선택, 예: "홍길동") — 특정 의원 표결만 조회할 때 사용 party: 정당명 필터 (선택, 예: "더불어민주당") — 정당 기율 분석에 사용 vote_result: 표결결과 필터 (선택) — "찬성" | "반대" | "기권" page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 300 — 본회의 전체 의원 한 번에 조회)
Returns: votes: 의원별 표결 목록 — HG_NM(이름), POLY_NM(정당), ORIG_NM(선거구), RESULT_VOTE_MOD(표결결과: 찬성/반대/기권), VOTE_DATE, MONA_CD 등 count: 이번 페이지 반환 건수 total_count: 전체 표결 의원 수 has_more: True이면 page+1로 재호출
Inputs: bill_id (required), assembly (required), page, party, +3 more. Returns: object
get_party_cohesionA
특정 법안에 대한 정당별 표결 응집도를 분석합니다 (연구 전용 도구).
Compute per-party voting cohesion for a bill:
yes/no/abstain counts per party
Rice index: |찬성 - 반대| / (찬성 + 반대) — 0 = perfect split, 1 = unanimous
dominant position per party (찬성 or 반대)
individual dissenters (voted against or abstained from party majority)
Rice index excludes 기권 from the denominator (standard political science convention). 기권 voters appear in dissenters["abstained"] when their party had a clear position.
Typical workflow:
get_vote_results(assembly=assembly, bill_name=...) → find BILL_ID
get_party_cohesion(bill_id=BILL_ID, assembly=assembly) → cohesion analysis
IMPORTANT — requires BILL_ID (PRC_...), not BILL_NO: • Get BILL_ID from get_vote_results, search_bills, or get_pending_bills.
Args: bill_id: 의안ID — 필수 (PRC_... 형식, 예: "PRC_H2W6O0K2D1T1Y2B0...") assembly: 대수 — 필수 (예: "22")
Returns: bill_id: 입력된 의안ID total_voted: 총 표결 의원 수 (찬성 + 반대 + 기권) overall: {"yes": N, "no": N, "abstain": N} by_party: 정당별 집계 (총 투표수 내림차순 정렬) Each party: {yes, no, abstain, total_voted, rice_index, dominant_position, unanimous} dissenters: 당론 이탈 의원 목록 Each dissenter: {name, party, district, vote, party_dominant, type} type: "opposite" (당론 반대방향 투표) | "abstain" (당론 있는데 기권) errors: 에러 (없으면 빈 dict) message: 요약 메시지
Inputs: bill_id (required), assembly (required). Returns: object
get_pending_billsA
현재 국회에 계류 중인 미처리 의안 목록을 조회합니다.
Get bills currently pending (awaiting committee review or plenary vote). "Pending" excludes bills already passed, rejected, or withdrawn.
When to use: • To see what legislation is currently active in a policy area. • To find unresolved bills on a topic. • Complements search_bills (which covers all outcomes including past bills).
Args: assembly: 대수 (예: "22") — 필수 bill_name: 법률안명 키워드로 필터 (선택) committee: 소관위원회명으로 필터 (선택, 예: "환경노동위원회") proposer: 대표발의자명으로 필터 (선택) page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 10)
Returns: bills: 계류의안 목록 — BILL_ID(★ get_bill_proposers 등에 필요), BILL_NO, BILL_NAME, PROPOSER, PROPOSE_DT, COMMITTEE 등 count: 이번 페이지 반환 건수 total_count: 전체 계류의안 수 (22대 기준 ~8,900건) has_more: True이면 page+1로 재호출
Inputs: assembly (required), page, proposer, bill_name, +2 more. Returns: object
get_plenary_agendaA
본회의 부의안건 — 본회의에 상정된(또는 상정 예정인) 안건 목록을 조회합니다.
Get bills placed on the plenary session agenda. Useful for tracking upcoming votes.
When to use: • To see what bills are scheduled for the next plenary vote. • Complements get_pending_bills: pending bills are in committee; plenary agenda bills are ready for the floor vote.
Args: assembly: 대수 (예: "22") — 필수 session: 회기 번호로 필터 (선택, 예: "1" = 제1회기) page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 20)
Returns: agenda_items: 부의안건 목록 — BILL_ID, BILL_NO, BILL_NAME, SESS_NO(회기), AGENDA_NO(안건번호), PROPOSE_DT, COMMITTEE 등 count: 이번 페이지 반환 건수 total_count: 전체 건수 has_more: True이면 page+1로 재호출
Inputs: assembly (required), page, session, page_size. Returns: object
get_scheduleA
국회 일정을 조회합니다 (본회의·위원회·공청회 등).
Query the National Assembly schedule: plenary sessions, committee meetings, public hearings, and other proceedings.
Schedule type determines which endpoint is used:
"all" → ALLSCHEDULE (모든 종류 통합, 가장 포괄적)
"plenary" → nekcaiymatialqlxr (본회의만)
"committee" → nrsldhjpaemrmolla (위원회만, committee 필터 사용 가능)
Note: Parameter names are based on the API pattern. If date filtering or committee filtering does not work as expected, use query_assembly directly.
Args: assembly: 대수 — 필수 (예: "22") schedule_type: 일정 종류 — "all" (기본값) | "plenary" | "committee" committee: 위원회명 필터 (선택, schedule_type="committee"일 때만 적용, 예: "법제사법위원회") page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 20)
Returns: schedule_items: 일정 목록 endpoint_used: 실제 호출된 엔드포인트 코드 schedule_type: 요청한 일정 종류 count: 이번 페이지 반환 건수 total_count: 전체 건수 has_more: True이면 page+1로 재호출 raw_response: 비표준 응답 형식일 때 전체 JSON
Inputs: assembly (required), page, committee, page_size, +1 more. Returns: object
get_vote_resultsA
의안별 본회의 표결현황을 조회합니다 — 집계 결과(찬성/반대/기권 건수).
Get plenary vote results by bill (aggregate yes/no/abstain counts). This is STEP 1 of the per-member vote analysis workflow.
Typical vote analysis workflow:
get_vote_results(assembly=assembly, bill_name=...) → find the bill, note its BILL_ID
get_member_votes(bill_id=BILL_ID, assembly=assembly) → get per-member votes
Filter votes by party, or compare party breakdowns
NOT this tool: • For individual member votes → use get_member_votes (requires BILL_ID from this tool)
Args: assembly: 대수 (예: "22") — 필수 bill_no: 의안번호로 필터 (선택, 예: "2216983") — BILL_NO(숫자), BILL_ID 아님 bill_name: 의안명 키워드로 필터 (선택, 예: "국민투표법") page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 10)
Returns: votes: 표결 목록 — BILL_ID(★ get_member_votes에 필요), BILL_NO, BILL_NAME, PROC_DT(표결일), MEMBER_TCNT(재석), VOTE_TCNT(투표), YES_TCNT(찬성), NO_TCNT(반대), BLANK_TCNT(기권), PROC_RESULT_CD(처리결과), LINK_URL count: 이번 페이지 반환 건수 total_count: 전체 건수 has_more: True이면 page+1로 재호출
Inputs: assembly (required), page, bill_no, bill_name, +1 more. Returns: object
query_assemblyA
열린국회정보 Open API의 임의 엔드포인트를 직접 호출합니다 (범용 fallback).
Universal fallback tool — call any open.assembly.go.kr API endpoint directly. Use when no dedicated MCP tool exists for the data you need.
Typical workflow:
discover_apis(keyword="청원") → find the right endpoint code
query_assembly(endpoint_code="", params={"AGE": "22"}) → call it
Authentication (ASSEMBLY_API_KEY) is handled automatically — do NOT pass KEY in params.
Common parameters across most endpoints:
AGE: assembly number (e.g., "22" for 22nd Assembly)
pIndex / pSize: pagination — handled via page / page_size args here
Args: endpoint_code: API 엔드포인트 코드 (예: "nzmimeepazxkubdpn"). discover_apis()로 코드를 먼저 확인하거나, https://open.assembly.go.kr에서 직접 조회. params: 추가 API 파라미터 (선택, 예: {"AGE": "22", "BILL_NAME": "인공지능"}). KEY, Type, pIndex, pSize는 자동 처리되므로 포함 불필요. page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 10, 최대: 100)
Returns: endpoint: 호출된 엔드포인트 코드 rows: 결과 행 목록 (표준 응답 형식일 때) count: 이번 페이지 반환 건수 total_count: 전체 건수 has_more: True이면 page+1로 재호출 가능 raw_response: 비표준 응답 형식일 때 전체 JSON (rows 대신 이걸 확인)
Inputs: endpoint_code (required), page, params, page_size. Returns: object
search_billsA
국회의원 발의법률안을 검색합니다 (의원발의안 전용; 정부제출안은 별도).
Search for member-sponsored bills in the National Assembly. This is the PRIMARY entry point for most bill-related queries.
IMPORTANT -- two bill identifiers are returned:
BILL_NO: 7-digit public number (e.g., "2216983") -- use with get_bill_detail, get_bill_review
BILL_ID: internal ID starting with "PRC_..." -- use with get_bill_proposers, get_member_votes, get_bill_committee_review
Typical workflow:
search_bills -> get list of bills with both BILL_NO and BILL_ID
get_bill_proposers(bill_id=BILL_ID) -> co-sponsors
get_member_votes(bill_id=BILL_ID, assembly=assembly) -> per-member vote records
get_bill_review(assembly=assembly, bill_no=BILL_NO) -> committee/plenary timeline
Note: covers member-initiated bills only. Does not include government-submitted bills. Date filtering (propose_dt_from/propose_dt_to) is applied client-side because the underlying API does not support it natively. When date filters are used with other filters (bill_name, committee, etc.), performance is good. Date-only queries on a full assembly may be slow (scans up to 2,000 results).
For bill propose-reason texts (제안이유), use the korean-assembly-bills package (pip install korean-assembly-bills). 60,925 texts with 99.4% coverage (20th-22nd).
Args: assembly: 대수 -- 필수 (예: "22" = 22대 국회, "16"-"22" 지원) bill_name: 법률안명 키워드 (선택, 예: "인공지능", "주거") proposer: 대표발의자명 (선택, 예: "홍길동") proc_result: 처리결과 필터 (선택) -- "원안가결" | "수정가결" | "부결" | "폐기" committee: 소관위원회명 (선택, 예: "법제사법위원회") propose_dt_from: 발의일 시작 (선택, 예: "2025-01-01") -- 클라이언트 사이드 필터링 propose_dt_to: 발의일 종료 (선택, 예: "2025-12-31") -- 클라이언트 사이드 필터링 page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 10, 최대: 100)
Returns: bills: 법률안 목록 -- 각 항목에 BILL_ID, BILL_NO, BILL_NAME, RST_PROPOSER, PROPOSE_DT, PROC_RESULT, COMMITTEE, DETAIL_LINK 포함 count: 이번 페이지 반환 건수 total_count: 검색 조건 전체 건수 has_more: True이면 page+1로 재호출하여 추가 결과 조회 가능
Inputs: assembly (required), page, proposer, bill_name, +5 more. Returns: object
search_hearingsA
국회 인사청문회 및 공청회 목록을 조회합니다.
Query National Assembly confirmation hearings (인사청문회) or public hearings (공청회).
Hearing types:
"confirmation": 인사청문회 — personnel confirmation hearings for cabinet nominees, agency heads, and other senior appointees. Use nominee_name to filter by candidate.
"public": 공청회 — legislative public hearings for citizen input on bills. Use committee to filter by committee.
Research use case: For analysis of confirmation hearings and political appointments, combine with the kr-hearings-data package (9.9M speeches, 7.9M dyads) which provides full transcript-level data. This tool returns hearing metadata only.
Note: Parameter names are based on the API pattern and hollobit/assembly-api-mcp source review. If nominee_name filtering does not work, use query_assembly directly.
Args: assembly: 대수 — 필수 (예: "22") hearing_type: 청문회 유형 — "confirmation" 인사청문회 (기본값) | "public" 공청회 nominee_name: 후보자 이름 필터 (선택, hearing_type="confirmation"일 때 사용, 예: "홍길동") committee: 위원회명 필터 (선택, 예: "법제사법위원회") page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 10)
Returns: hearings: 청문회 목록 — 청문회 날짜, 대상자/의안, 위원회 등 endpoint_used: 실제 호출된 엔드포인트 코드 hearing_type: 요청한 청문회 유형 count: 이번 페이지 반환 건수 total_count: 전체 건수 has_more: True이면 page+1로 재호출 raw_response: 비표준 응답 형식일 때 전체 JSON
Inputs: assembly (required), page, committee, page_size, +2 more. Returns: object
search_nars_reportsA
국회입법조사처(NARS) 보고서를 검색합니다.
Search publications from the National Assembly Research Service (NARS / 국회입법조사처): research reports (입법조사처보고서), issue briefs (이슈와논점), foreign law trends (외국법률동향과분석), and regular reports (정기보고서).
NARS reports provide authoritative background on policy issues — useful for understanding the legislative context around any bill or policy domain.
Note: This tool uses endpoint naaborihbkorknasp. Parameter names are based on the open.assembly.go.kr API pattern and hollobit/assembly-api-mcp source review. If the keyword filter does not work as expected, try query_assembly with discover_apis(keyword="NARS") to inspect the raw response schema.
Args: keyword: 보고서 제목 키워드 (선택, 예: "인공지능", "복지", "조세") date_from: 발행일 시작 (선택, YYYYMMDD 형식, 예: "20240101") date_to: 발행일 종료 (선택, YYYYMMDD 형식, 예: "20241231") page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 10, 최대: 100)
Returns: reports: 보고서 목록 — 각 항목에 제목, 발행일, 저자, 보고서 유형 등 포함 count: 이번 페이지 반환 건수 total_count: 전체 건수 has_more: True이면 page+1로 재호출 raw_response: 비표준 응답 형식일 때 전체 JSON
Inputs: page, date_to, keyword, date_from, +1 more. Returns: object
search_petitionsA
국회 청원 목록을 조회합니다.
Query petition records from the National Assembly: pending petitions (계류 청원) or all petitions including closed ones (접수 목록).
Petitions (청원) are formal citizen requests submitted through National Assembly members. This tool returns petition metadata — title, proposer, assembly, committee, status.
Note: Full petition text is not available through the Open API. This tool returns petition records/status, not the content of individual petitions. For research on citizen engagement and petition outcomes, the status and committee routing data returned here is typically sufficient.
Parameter names are based on the API pattern and hollobit/assembly-api-mcp source. If keyword filtering does not return expected results, use query_assembly directly: discover_apis(keyword="청원") → query_assembly(endpoint_code="PTTRCP", params={...})
Args: assembly: 대수 — 필수 (예: "22") keyword: 청원 제목 키워드 (선택, 예: "교육", "환경") include_closed: True이면 처리 완료 청원까지 포함 (PTTRCP 엔드포인트 사용). False이면 계류 중인 청원만 반환 (기본값, nvqbafvaajdiqhehi 사용). page: 페이지 번호 (기본값: 1) page_size: 페이지당 결과수 (기본값: 10)
Returns: petitions: 청원 목록 endpoint_used: 실제 호출된 엔드포인트 코드 count: 이번 페이지 반환 건수 total_count: 전체 건수 has_more: True이면 page+1로 재호출 raw_response: 비표준 응답 형식일 때 전체 JSON
Inputs: assembly (required), page, keyword, page_size, +1 more. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 20 tools
Each tool has a clearly distinct purpose. Potential overlaps like get_bill_review and get_bill_committee_review are explicitly differentiated in descriptions. Tools cover different aspects of legislative data without ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_bill_detail, search_bills, get_member_votes). No mixing of conventions.
20 tools is slightly above the typical 3-15 range but justified by the comprehensive scope of the National Assembly API. Each tool serves a specific, non-redundant function.
Covers major areas: bills (search, detail, review, proposers, pending), members (info, committees), votes (results, member votes, cohesion), schedules, hearings, reports, petitions, and API discovery. Minor gaps like bill text are acknowledged as API limitations.
Maintenance
Related MCP Connectors
An MCP server that provides congressional transcripts
대한민국 법령·조문·별표·연혁·판례·해석례를 법제처 국가법령정보 OPEN API 로 찾아보는 읽기 전용 MCP 서버. 코어 12 + 보조 12 도구.
MCP server for searching Airweave collections with natural language queries.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for searching Japanese Diet bills and committee Q\&A records via the NDL Kokkai API.442 npm1MIT
- AlicenseBqualityDmaintenanceEnables LLM clients to search and analyze bills, members, committees, meetings, votes, and reports from the South Korean National Assembly OpenAPI through MCP tools.26MIT
- AlicenseAqualityDmaintenanceMCP server that enables AI agents to search Korean laws and retrieve article contents using the Korean Ministry of Legislation's law information API.2MIT
- AlicenseAqualityCmaintenanceMCP server that wraps the Korean government's '나라장터 사전규격정보서비스' API, enabling natural language search and retrieval of public procurement pre-specifications through simplified tools.566 npmMIT