{"_id":"@darkhorseone/mcp-server-uk-parliament-members","_rev":"3-78a4d3dc9070f37a8127b68f8286b798","name":"@darkhorseone/mcp-server-uk-parliament-members","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@darkhorseone/mcp-server-uk-parliament-members","version":"1.0.0","_id":"@darkhorseone/mcp-server-uk-parliament-members@1.0.0","maintainers":[{"name":"nick-ma","email":"honeyday.mj@gmail.com"}],"bin":{"mcp-server-uk-parliament-members":"dist/index.js","mcp-server-uk-parliament-members-http":"dist/http.js"},"dist":{"shasum":"da777f291dc34bb2ac5b6d125f128703ed78ce35","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-members/-/mcp-server-uk-parliament-members-1.0.0.tgz","fileCount":7,"integrity":"sha512-5+dgRf8otLnz1STqjgAkeseX91BojlkVpESRVaVnxDXsY+f7Q4Ol6cbLpXwBbR/UpstbYN2pvK+Q25inR2tTLQ==","signatures":[{"sig":"MEQCIEWuRKlkmBREpos4Mrb92Uwak52SdTIF/x3uEC8o1PlIAiBt2uvgi055QYmaAaTGq9rYTGOP2cBJao6Rgb+sXVqyXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37205},"main":"dist/index.js","type":"module","_from":"file:darkhorseone-mcp-server-uk-parliament-members-1.0.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsx src/index.ts","lint":"pnpm run typecheck","test":"vitest run","build":"tsup src/index.ts src/http.ts --format esm --dts --clean","typecheck":"tsc --noEmit -p tsconfig.json","start:http":"node dist/http.js","inspect:npm":"npx -y @modelcontextprotocol/inspector npx -y @darkhorseone/mcp-server-uk-parliament-members","inspect:local":"pnpm run build && npx -y @modelcontextprotocol/inspector node ./dist/index.js"},"_npmUser":{"name":"nick-ma","email":"honeyday.mj@gmail.com"},"_resolved":"/private/var/folders/7x/569rf7xx3yn_18gtg5znhbb40000gn/T/e8f1393c23f24a103f5967152e312712/darkhorseone-mcp-server-uk-parliament-members-1.0.0.tgz","_integrity":"sha512-5+dgRf8otLnz1STqjgAkeseX91BojlkVpESRVaVnxDXsY+f7Q4Ol6cbLpXwBbR/UpstbYN2pvK+Q25inR2tTLQ==","_npmVersion":"11.10.0","description":"MCP server for UK Parliament Members API","directories":{},"_nodeVersion":"25.4.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","tsup":"^8.3.5","vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-uk-parliament-members_1.0.0_1773175577968_0.20374200638699236","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@darkhorseone/mcp-server-uk-parliament-members","version":"1.0.1","author":{"name":"DarkhorseOne Limited"},"license":"MIT","_id":"@darkhorseone/mcp-server-uk-parliament-members@1.0.1","maintainers":[{"name":"nick-ma","email":"honeyday.mj@gmail.com"}],"homepage":"https://github.com/DarkhorseOne/mcp-servers","bugs":{"url":"https://github.com/DarkhorseOne/mcp-servers/issues"},"bin":{"mcp-server-uk-parliament-members":"dist/index.js","mcp-server-uk-parliament-members-http":"dist/http.js"},"dist":{"shasum":"5c55c140f0f4033ad6bc819f53cdbd405488e992","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-members/-/mcp-server-uk-parliament-members-1.0.1.tgz","fileCount":7,"integrity":"sha512-YmLHPGuUpKVwjvBY3S3zNwPtABFc0L0ofU+QIe2XOQ4Ft+XFC+qFMN86DUYPxHZmnkm1ZR64iEsjCrVfbtm/8g==","signatures":[{"sig":"MEUCIGaUj5arZ5kSz/OEQZUNmXRsXKBeLQ6R0EpvbSfNlt5mAiEAm0LaWkJSeYhvOU29iukIO0qYVWUMQUaALP3dxq22loM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40689},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"e45da2d9adaa1547858a9ba720500395904d6063","scripts":{"dev":"tsx src/index.ts","lint":"pnpm run typecheck","test":"vitest run","build":"tsup src/index.ts src/http.ts --format esm --dts --clean","prepack":"pnpm run build && pnpm run check:tarball:shebang","typecheck":"tsc --noEmit -p tsconfig.json","start:http":"node dist/http.js","inspect:npm":"npx -y @modelcontextprotocol/inspector npx -y -p @darkhorseone/mcp-server-uk-parliament-members mcp-server-uk-parliament-members","inspect:local":"pnpm run build && npx -y @modelcontextprotocol/inspector node ./dist/index.js","prepublishOnly":"pnpm run check:tarball:shebang","check:tarball:shebang":"node ./scripts/verify-tarball-shebang.mjs"},"_npmUser":{"name":"nick-ma","email":"honeyday.mj@gmail.com"},"repository":{"url":"git+https://github.com/DarkhorseOne/mcp-servers.git","type":"git"},"_npmVersion":"11.10.0","description":"MCP server for UK Parliament Members API","directories":{},"_nodeVersion":"25.4.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","tsup":"^8.3.5","vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-uk-parliament-members_1.0.1_1773180439824_0.36904875463700715","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@darkhorseone/mcp-server-uk-parliament-members","version":"1.0.2","description":"MCP server for UK Parliament Members API","license":"MIT","author":{"name":"DarkhorseOne Limited"},"homepage":"https://github.com/DarkhorseOne/mcp-servers","mcpName":"io.github.nick-ma/uk-parliament-members","repository":{"type":"git","url":"git+https://github.com/DarkhorseOne/mcp-servers.git"},"type":"module","bin":{"mcp-server-uk-parliament-members":"dist/index.js","mcp-server-uk-parliament-members-http":"dist/http.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsup src/index.ts src/http.ts --format esm --dts --clean","check:tarball:shebang":"node ./scripts/verify-tarball-shebang.mjs","prepack":"pnpm run build && pnpm run check:tarball:shebang","prepublishOnly":"pnpm run check:tarball:shebang","typecheck":"tsc --noEmit -p tsconfig.json","lint":"pnpm run typecheck","test":"vitest run","dev":"tsx src/index.ts","start:http":"node dist/http.js","inspect:local":"pnpm run build && npx -y @modelcontextprotocol/inspector node ./dist/index.js","inspect:npm":"npx -y @modelcontextprotocol/inspector npx -y -p @darkhorseone/mcp-server-uk-parliament-members mcp-server-uk-parliament-members"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","zod":"^4.3.6"},"devDependencies":{"@types/node":"^24.3.0","tsup":"^8.3.5","tsx":"^4.20.5","typescript":"^5.9.2","vitest":"^3.2.4"},"gitHead":"9183280f70f15cdbe601f078992ceb65b075dea2","_id":"@darkhorseone/mcp-server-uk-parliament-members@1.0.2","bugs":{"url":"https://github.com/DarkhorseOne/mcp-servers/issues"},"_nodeVersion":"25.4.0","_npmVersion":"11.10.0","dist":{"integrity":"sha512-/U8isd2oyDVXGo0Qzzj2YUJhnwaq+6Qu0LON+FxQ4YuWQiwqi2MLRfNoL/L4fkNuqIdUslGwksRhkf9uG+/Rpg==","shasum":"c2bac8cc97af8805d51e78936580c75f41c3abdb","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-members/-/mcp-server-uk-parliament-members-1.0.2.tgz","fileCount":7,"unpackedSize":46643,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDEIUZ43X/QKn+pZDfJJgZQIuVpXzAOH6Sr+LonVPZS7wIgalB2IgTIp9++8bb0bmcPctdQmeKGXTw/08W6/VUJmk8="}]},"_npmUser":{"name":"nick-ma","email":"honeyday.mj@gmail.com"},"directories":{},"maintainers":[{"name":"nick-ma","email":"honeyday.mj@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server-uk-parliament-members_1.0.2_1773360174639_0.07587363885145826"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-10T20:46:17.786Z","modified":"2026-03-13T00:02:54.928Z","1.0.0":"2026-03-10T20:46:18.113Z","1.0.1":"2026-03-10T22:07:20.093Z","1.0.2":"2026-03-13T00:02:54.785Z"},"bugs":{"url":"https://github.com/DarkhorseOne/mcp-servers/issues"},"author":{"name":"DarkhorseOne Limited"},"license":"MIT","homepage":"https://github.com/DarkhorseOne/mcp-servers","repository":{"type":"git","url":"git+https://github.com/DarkhorseOne/mcp-servers.git"},"description":"MCP server for UK Parliament Members API","maintainers":[{"name":"nick-ma","email":"honeyday.mj@gmail.com"}],"readme":"![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-blue)\n![AI Agent Ready](https://img.shields.io/badge/AI-Agent%20Ready-green)\n\n# UK Parliament Members MCP Server\n\n# Summary\nThis MCP server provides structured access to UK Parliament Members data using the Model Context Protocol.\nIt enables AI agents to query members, constituencies, parties, posts, and reference data through API-backed tools and data access.\nDevelopers can integrate the MCP server via stdio transport to retrieve member profiles, biographies, votes, and related metadata.\nThe server exposes tools that map directly to the Members API for consistent automation and AI agents workflows.\n\n## Features\n- Search current and historical members with filters for house, party, and constituency.\n- Retrieve member profiles, biographies, contact details, votes, and written questions.\n- Access constituency data, election results, and geographic metadata.\n- Query party, post, and reference datasets for policy and department lookups.\n\n## Available Tools\n### ukp_location_browse\nReturns a list of locations, both parent and child.\n\nParameters:\n- locationType (number, path)\n- locationName (string, path)\n\n### ukp_location_constituency_search\nReturns a list of constituencies.\n\nParameters:\n- searchText (string, query)\n- skip (number, query)\n- take (number, query)\n\n### ukp_location_constituency\nReturns a constituency by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_location_constituency_synopsis\nReturns a synopsis by constituency ID.\n\nParameters:\n- id (number, path)\n\n### ukp_location_constituency_representations\nReturns a list of representations by constituency ID.\n\nParameters:\n- id (number, path)\n\n### ukp_location_constituency_geometry\nReturns geometry by constituency ID.\n\nParameters:\n- id (number, path)\n\n### ukp_location_constituency_election_results\nReturns a list of election results by constituency ID.\n\nParameters:\n- id (number, path)\n\n### ukp_location_constituency_election_result\nReturns an election result by constituency and election id.\n\nParameters:\n- id (number, path)\n- electionId (number, path)\n\n### ukp_location_constituency_election_result_latest\nReturns latest election result by constituency id.\n\nParameters:\n- id (number, path)\n\n### ukp_lords_interests_register\nReturns a list of registered interests.\n\nParameters:\n- searchTerm (string, query)\n- page (number, query)\n- includeDeleted (boolean, query)\n\n### ukp_lords_interests_staff\nReturns a list of staff.\n\nParameters:\n- searchTerm (string, query)\n- page (number, query)\n\n### ukp_members_search\nReturns a list of current members of the Commons or Lords.\n\nParameters:\n- Name (string, query)\n- Location (string, query)\n- PostTitle (string, query)\n- PartyId (number, query)\n- House (number, query)\n- ConstituencyId (number, query)\n- NameStartsWith (string, query)\n- Gender (string, query)\n- MembershipStartedSince (string, query)\n- MembershipEnded.MembershipEndedSince (string, query)\n- MembershipEnded.MembershipEndReasonIds (array:number, query)\n- MembershipEnded.MembershipEndResignedTypes (array:number, query)\n- MembershipEnded.MembershipEndEndDates (array:string, query)\n- MembershipEnded.MembershipEndResignedDates (array:string, query)\n- MembershipEnded.MembershipEndDeathDates (array:string, query)\n- MembershipEnded.MembershipEndDisqualifiedDates (array:string, query)\n- MembershipEnded.MembershipEndEndReasonIds (array:number, query)\n- MembershipEnded.MembershipEndOtherReasonIds (array:number, query)\n- MembershipEnded.MembershipEndParliamentDissolvedDates (array:string, query)\n- Skip (number, query)\n- Take (number, query)\n\n### ukp_members_search_historical\nReturns a list of members of the Commons or Lords.\n\nParameters:\n- name (string, query)\n- dateToSearchFor (string, query)\n- skip (number, query)\n- take (number, query)\n\n### ukp_members_get_by_id\nReturn member by ID.\n\nParameters:\n- id (number, path)\n- detailsForDate (string, query)\n\n### ukp_members_biography\nReturn biography of member by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_members_contact\nReturn list of contact details of member by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_members_contribution_summary\nReturn contribution summary of member by ID.\n\nParameters:\n- id (number, path)\n- page (number, query)\n\n### ukp_members_edms\nReturn list of early day motions of member by ID.\n\nParameters:\n- id (number, path)\n- page (number, query)\n\n### ukp_members_experience\nReturn experience of member by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_members_focus\nReturn list of areas of focus of member by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_members_history\nReturn members by ID with list of their historical names, parties and memberships.\n\nParameters:\n- ids (array:number, query)\n\n### ukp_members_latest_election_result\nReturn latest election result of member by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_members_portrait\nReturn portrait of member by ID.\n\nParameters:\n- id (number, path)\n- cropType (number, query)\n- webVersion (boolean, query)\n\n### ukp_members_portrait_url\nReturn portrait url of member by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_members_registered_interests\nReturn list of registered interests of member by ID.\n\nParameters:\n- id (number, path)\n- house (number, query)\n\n### ukp_members_staff\nReturn list of staff of member by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_members_synopsis\nReturn synopsis of member by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_members_thumbnail\nReturn thumbnail of member by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_members_thumbnail_url\nReturn thumbnail url of member by ID.\n\nParameters:\n- id (number, path)\n\n### ukp_members_voting\nReturn list of votes by member by ID.\n\nParameters:\n- id (number, path)\n- house (number, query)\n- page (number, query)\n\n### ukp_members_written_questions\nReturn list of written questions by member by ID.\n\nParameters:\n- id (number, path)\n- page (number, query)\n\n### ukp_parties_state_of_the_parties\nReturns current state of parties.\n\nParameters:\n- house (number, path)\n- forDate (string, path)\n\n### ukp_parties_lords_by_type\nReturns the composition of the House of Lords by peerage type.\n\nParameters:\n- forDate (string, path)\n\n### ukp_parties_get_active\nReturns a list of current parties with at least one active member.\n\nParameters:\n- house (number, path)\n\n### ukp_posts_government_posts\nReturns a list of government posts.\n\nParameters:\n- departmentId (number, query)\n\n### ukp_posts_opposition_posts\nReturns a list of opposition posts.\n\nParameters:\n- departmentId (number, query)\n\n### ukp_posts_spokespersons\nReturns a list of spokespersons.\n\nParameters:\n- partyId (number, query)\n\n### ukp_posts_departments\nReturns a list of departments.\n\nParameters:\n- type (number, path)\n\n### ukp_posts_speaker_and_deputies\nReturns a list containing the speaker and deputy speakers.\n\nParameters:\n- forDate (string, path)\n\n### ukp_reference_policy_interests\nReturns a list of policy interest.\n\n### ukp_reference_departments\nReturns a list of departments.\n\nParameters:\n- id (number, query)\n- nameContains (string, query)\n\n### ukp_reference_answering_bodies\nReturns a list of answering bodies.\n\nParameters:\n- id (number, query)\n- nameContains (string, query)\n\n### ukp_reference_departments_logo\nReturns department logo.\n\nParameters:\n- id (number, path)\n\n## Example Output\n```json\n{\n  \"status\": 200,\n  \"data\": {\n    \"items\": [\n      {\n        \"memberId\": 1,\n        \"name\": \"Jane Doe\",\n        \"house\": \"Commons\",\n        \"party\": \"Example Party\"\n      }\n    ],\n    \"totalResults\": 1\n  },\n  \"upstream_path\": \"/api/Members/Search\",\n  \"retrieved_at\": \"2026-03-11T10:00:00.000Z\"\n}\n```\n\n## Quick Start\nRun the MCP server using npx:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-members mcp-server-uk-parliament-members\n```\n\n## MCP Configuration\nExample `mcpServers` configuration for stdio transport:\n\n```json\n{\n  \"mcpServers\": {\n    \"uk-parliament-members\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"-p\", \"@darkhorseone/mcp-server-uk-parliament-members\", \"mcp-server-uk-parliament-members\"],\n      \"env\": {\n        \"UKP_API_BASE_URL\": \"https://members-api.parliament.uk\",\n        \"UKP_REQUEST_TIMEOUT_MS\": \"10000\"\n      }\n    }\n  }\n}\n```\n\n## Example Usage\n- Search current members by name and constituency.\n- Fetch a member biography and contact details by ID.\n- Retrieve constituency election results and geometry.\n- List active parties and government posts.\n\n## Use Cases\n- AI agents answering questions about MPs and Lords with authoritative data.\n- Research tools tracking member roles, voting, and parliamentary history.\n- Civic technology platforms enriching datasets with constituency metadata.\n- Automation workflows collecting reference data for policy analysis.\n\n## Data Source\nUK Parliament Members API\nhttps://members-api.parliament.uk/index.html\n\n## Installation\nRun directly using npx:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-members mcp-server-uk-parliament-members\n```\n\nOr install via pnpm from the repository root:\n\n```bash\npnpm install\n```\n\n## Run (HTTP proxy server)\nBuild first, then start:\n\n```bash\npnpm --filter @darkhorseone/mcp-server-uk-parliament-members run build\npnpm --filter @darkhorseone/mcp-server-uk-parliament-members run start:http\n```\n\nSet a custom HTTP port with the `UKP_HTTP_PORT` environment variable (default: `8787`):\n\n```bash\nUKP_HTTP_PORT=8787 pnpm --filter @darkhorseone/mcp-server-uk-parliament-members run start:http\n```\n\nPublished package command:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-members -- mcp-server-uk-parliament-members-http\n```\n\nIf your shell cannot resolve the bin (\"command not found\"), run the HTTP entrypoint directly:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-members -- node ./dist/http.js\n```\n\nHealth check:\n\n```bash\ncurl http://127.0.0.1:8787/healthz\n```\n\nProxy pattern:\n\n```text\nGET /proxy/<upstream-path>?<query>\n```\n\nExample:\n\n```bash\ncurl \"http://127.0.0.1:8787/proxy/api/Members/History?ids=1&ids=2\"\n```\n\n## License\nMIT License\n\n## MCP Metadata\nProtocol: Model Context Protocol\nTransport: stdio\nTools: ukp_location_browse, ukp_location_constituency_search, ukp_location_constituency, ukp_location_constituency_synopsis, ukp_location_constituency_representations, ukp_location_constituency_geometry, ukp_location_constituency_election_results, ukp_location_constituency_election_result, ukp_location_constituency_election_result_latest, ukp_lords_interests_register, ukp_lords_interests_staff, ukp_members_search, ukp_members_search_historical, ukp_members_get_by_id, ukp_members_biography, ukp_members_contact, ukp_members_contribution_summary, ukp_members_edms, ukp_members_experience, ukp_members_focus, ukp_members_history, ukp_members_latest_election_result, ukp_members_portrait, ukp_members_portrait_url, ukp_members_registered_interests, ukp_members_staff, ukp_members_synopsis, ukp_members_thumbnail, ukp_members_thumbnail_url, ukp_members_voting, ukp_members_written_questions, ukp_parties_state_of_the_parties, ukp_parties_lords_by_type, ukp_parties_get_active, ukp_posts_government_posts, ukp_posts_opposition_posts, ukp_posts_spokespersons, ukp_posts_departments, ukp_posts_speaker_and_deputies, ukp_reference_policy_interests, ukp_reference_departments, ukp_reference_answering_bodies, ukp_reference_departments_logo\n","readmeFilename":"README.md"}