Chapter 2: MCP + Claude

Natural-language queries against the Assembly API

This chapter explains what MCP is, how the open-assembly MCP server works, and how to use it for exploratory legislative research in Claude Desktop.


What is MCP?

Model Context Protocol (MCP) is an open standard (developed by Anthropic) that lets AI assistants call external tools during a conversation. Instead of copy-pasting data into a chat window, you install a server that Claude can invoke directly.

Without MCP                         With MCP
─────────────────────────────       ─────────────────────────────────────────
You → open.assembly.go.kr           You: "22대 AI 법안 찾아줘"
You → copy JSON                          ↓
You → paste into Claude             Claude → [calls search_bills tool]
Claude → gives you a summary             ↓
                                    Assembly API → returns results
                                         ↓
                                    Claude → summarizes + reasons over data

For legislative research, this means you can ask questions like:

“Find all bills on housing regulation proposed in the 22nd Assembly. For each one, tell me who the lead proposer is and what party they belong to.”

…and Claude will chain the necessary API calls, parse the results, and give you a structured answer — without you writing a single line of code.


Available tools

After installing the MCP server (Chapter 1), Claude gains access to these tools:

Tool What it does
search_bills Search member-sponsored bills by assembly, keyword, proposer, committee, or outcome
get_bill_detail Full record for one bill: committee schedule, plenary result, original text link
get_member_info Member roster by party, district, or committee (16th-22nd)
get_vote_results Plenary vote tallies (yes / no / abstain / absent)
get_bill_review Bill’s processing timeline through committee and plenary
get_bill_proposers All co-sponsors for a given bill
get_member_votes Per-member voting records for a specific bill
get_committee_members Members of a specific committee
get_pending_bills Currently unresolved (계류) bills
get_plenary_agenda Upcoming plenary session agenda items
get_bill_committee_review Committee meeting records for a bill
get_bill_summary All-in-one convenience tool: detail + review + proposers + committee meetings
analyze_legislator One-call member profile: member info, all sponsored bills and career statistics
get_party_cohesion Per-party vote breakdown and dissenters for one roll-call vote
search_nars_reports National Assembly Research Service (국회입법조사처) publications by title, date or series
search_petitions Pending or all petitions (청원) of an assembly
get_schedule Assembly schedule: all, plenary only, or one committee
search_hearings Confirmation (인사청문회) and public (공청회) hearing meetings with minutes PDFs, by nominee or committee
discover_apis Searches the registry of verified Open API endpoints
query_assembly Calls any Open API endpoint directly, for data the tools above do not cover

Example queries

Chained query: bill + proposers + party

“반도체특별법의 대표발의자와 공동발의자 명단을 가져오고, 각 의원의 정당도 알려줘.”

Claude chains three calls:

  1. search_bills(assembly="22", bill_name="반도체특별법") → gets BILL_ID
  2. get_bill_proposers(bill_id=...) → gets proposer list
  3. get_member_info → resolves each proposer’s party

Vote analysis

“22대 국회에서 부결된 법안 10개를 찾고, 찬성과 반대 표 차이가 가장 작았던 것부터 정렬해줘.”

Claude calls get_vote_results(assembly="22"), filters for PROC_RESULT_CD == "부결", and sorts by the margin.


Committee composition

“법제사법위원회 위원 명단을 가져오고 정당별로 몇 명인지 세어줘.”

Claude calls get_committee_members(assembly="22", committee="법제사법위원회") and aggregates by party.


Tips for effective MCP queries

Be specific about the assembly term

Always include the assembly number (대수) in your query. The API covers the 16th-22nd assemblies. “22대” = 22nd National Assembly (2024-present).

Use BILL_ID not BILL_NO for proposer queries

search_bills returns both BILL_ID (e.g., PRC_Y2Z6X0...) and BILL_NO (e.g., 2217175). The get_bill_proposers tool requires BILL_ID. If you ask Claude to get proposers, make sure it uses the right field.

What MCP cannot do (yet)

Full committee transcripts (회의록 전문) are not returned as text. search_hearings links the minutes of each hearing as a PDF, and search_petitions covers petitions. For transcripts as text, use kr-hearings-data (15.1M speaker turns) or likms.assembly.go.kr/record. For bill propose-reason texts (제안이유), use kna (109,756 law bills, 17th-22nd).


Interactive demo

You can try the Assembly data without Claude Desktop at the interactive web app:

Open Assembly Explorer ↗

The Explorer uses the same API under the hood, with a point-and-click interface for bill search, member lookup, and vote charts.