Parliament has worked hard to open up Westminster, making nearly every datapoint public through APIs. [Hear
hear] This data spans more than ten domains, from bills to votes to questions, each with its own
responsibilities, endpoints and schemas. That suits developers, but it burdens agents. Working out which
endpoint to call, how to format the request, and how to parse the response costs multiple round trips and wasted
tokens.
If we are to foster an inclusive environment for our agentic counterparts, we must do better. mp-mcp is a
step in this direction. Agents can now replace the scattered APIs with a single interface that guides their
exploration and returns clean, structured JSON, so they spend tokens on thinking, not plumbing. With mp-mcp
agents can talk with Westminster and conversationally present parliamentary data to users. [Hear
hear]
Tools
Fifteen tools, grouped by intent, cover the whole of an agent's business with Parliament.
Identity
parliament_find_member
Find a sitting or former member by name, constituency, or postcode.
parliament_find_constituency
Resolve a constituency or postcode to its seat and current MP.
Synthesis
parliament_member_overview
A member in one call: synopsis, committees, recent votes and contributions, registered
interests.
parliament_member_voting_history
How a member has voted over time, filtered by topic or date.
parliament_search_hansard
Full-text search of debates, written answers, and ministerial statements.
parliament_get_debate
The complete text of a single Hansard debate.
parliament_search_divisions
Find Commons divisions (recorded votes) on a topic, with aye/no totals and the id to drill into a
full party breakdown.
parliament_topic_tracker
A cross-Parliament round-up on one topic — bills, debates, divisions, written questions, and
petitions in a single call.
Detailed lookups
parliament_get_division
One division in full: ayes and noes by party, tellers, and result.
parliament_member_interests
Entries from the Register of Members' Financial Interests.
parliament_get_committee
A committee's membership, chair, and recent work.
parliament_get_bill
A single bill in full: its current house and stage, sponsors, and whether it has become an Act.
Composition
parliament_get_state_of_parties
Seat counts by party for either House, current or on a given date.
parliament_get_ministerial_roles
Government ministers or opposition shadows, with the holder and department for each post.
parliament_get_election_results
A constituency's result: winner, party, majority, turnout, and the full candidate breakdown.
Prompts
Four prompts orchestrate the tools into finished work.
mp-report-card
A one-page profile of any MP, from a name or a postcode.
topic-tracker
A briefing on what Parliament is doing about a subject — bills, debates, votes, questions,
petitions.
draft-constituent-letter
A letter to a member, grounded in their actual voting record and contributions.
vote-explainer
A plain account of a division: the motion, the result, the party breakdown, the debate around
it.
On Citation
Every tool response includes a sources array of parliament.uk and hansard.parliament.uk URLs. When
your agent states a fact about a member, a vote, a debate, a bill, a committee, or an election result, it cites the corresponding URL inline. The
expectation is declared to the model on connection, in the server's own instructions. This is the difference
between an assistant that merely sounds authoritative and one that can be checked.
To Take Your Seat
Add the server to any MCP-capable client:
Command line
$ claude mcp add mp-mcp -- npx -y @jamesmccomish/mp-mcp