{"_id":"@darkhorseone/mcp-server-uk-parliament-lordsvotes","_rev":"2-f4ad5b8d6849b1fa0590110f9c30fb92","name":"@darkhorseone/mcp-server-uk-parliament-lordsvotes","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@darkhorseone/mcp-server-uk-parliament-lordsvotes","version":"1.0.0","author":{"name":"DarkhorseOne Limited"},"license":"MIT","_id":"@darkhorseone/mcp-server-uk-parliament-lordsvotes@1.0.0","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-lordsvotes":"dist/index.js","mcp-server-uk-parliament-lordsvotes-http":"dist/http.js"},"dist":{"shasum":"3972e3232bf9026cc601486a180641436a011088","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-lordsvotes/-/mcp-server-uk-parliament-lordsvotes-1.0.0.tgz","fileCount":7,"integrity":"sha512-9tJTzeiWA1Sk7RipfuX4aSRfH1fYBZ5sBGD+S9/lKY6A41Bx8DdeduSGYCPDzEVpHlMKBNC37vAm6i7U/GTVPA==","signatures":[{"sig":"MEQCIDoSNxUGSeLPEvYjKpzawAV8rPjZTv3JCu1AiKZOIOLeAiAD3trvXNUXkeUKIBv5Z1pXZhp8GjwWYc0deY3Tp0kmzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21876},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"26b0ba97c9176997637436c415f1abe0af4f757e","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-lordsvotes mcp-server-uk-parliament-lordsvotes","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 Lords Votes 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-lordsvotes_1.0.0_1773231474030_0.5296157523962353","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@darkhorseone/mcp-server-uk-parliament-lordsvotes","version":"1.0.1","description":"MCP server for UK Parliament Lords Votes API","license":"MIT","author":{"name":"DarkhorseOne Limited"},"homepage":"https://github.com/DarkhorseOne/mcp-servers","mcpName":"io.github.nick-ma/uk-parliament-lordsvotes","repository":{"type":"git","url":"git+https://github.com/DarkhorseOne/mcp-servers.git"},"type":"module","bin":{"mcp-server-uk-parliament-lordsvotes":"dist/index.js","mcp-server-uk-parliament-lordsvotes-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-lordsvotes mcp-server-uk-parliament-lordsvotes"},"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-lordsvotes@1.0.1","bugs":{"url":"https://github.com/DarkhorseOne/mcp-servers/issues"},"_nodeVersion":"25.4.0","_npmVersion":"11.10.0","dist":{"integrity":"sha512-ch3fns4bHMNb7rC65Wyo8OdnqYpoGNHqq98dUy4E7dp1OOg5ZeAQwsL6FI9GQToULKZ1EXcecXSsKTDCoPvlmA==","shasum":"4117ec72d59b7fa225f63101db99643c5f188d63","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-lordsvotes/-/mcp-server-uk-parliament-lordsvotes-1.0.1.tgz","fileCount":7,"unpackedSize":25979,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBjXc7unt+42XUZgyKH6ZJS5aL3LXIleZsemYTHyL8X3AiAMfdmAQkVDuoZ8moM/N6U1AZzUQuMmEcaSK2q5VQsNoQ=="}]},"_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-lordsvotes_1.0.1_1773359304026_0.6525396954332008"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-11T12:17:53.945Z","modified":"2026-03-12T23:48:24.325Z","1.0.0":"2026-03-11T12:17:54.188Z","1.0.1":"2026-03-12T23:48:24.182Z"},"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 Lords Votes 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 Lords Votes MCP Server\n\n# Summary\nThis MCP server provides structured access to UK Parliament Lords Votes data using the Model Context Protocol.\nIt enables AI agents to retrieve divisions and voting records through API-backed tools for reliable data access and analysis.\nDevelopers can integrate the MCP server via stdio transport to query divisions, member voting history, and grouped vote summaries.\nThe server exposes tools that map directly to the Lords Votes API for consistent automation and AI agents workflows.\n\n## Features\n- Fetch a Lords division by division id with standardized responses.\n- Search divisions with filters for members, dates, and vote metrics.\n- Retrieve member voting records with paging controls.\n- Access divisions grouped by party for summary analysis.\n\n## Available Tools\n### get_division_by_id\nGet a single Division which has the Id specified.\n\nParameters:\n- divisionId (number, path) – Division id.\n\n### search_divisions_total_results\nGet total count of Divisions meeting the specified query.\n\nParameters:\n- searchTerm (string, query)\n- memberId (number, query)\n- includeWhenMemberWasTeller (boolean, query)\n- startDate (string, query)\n- endDate (string, query)\n- divisionNumber (number, query)\n- totalVotesCastComparator (string, query) – LessThan | LessThanOrEqualTo | EqualTo | GreaterThanOrEqualTo | GreaterThan\n- totalVotesCastValueToCompare (number, query)\n- majorityComparator (string, query) – LessThan | LessThanOrEqualTo | EqualTo | GreaterThanOrEqualTo | GreaterThan\n- majorityValueToCompare (number, query)\n\n### search_divisions\nGet a list of Divisions which meet the specified criteria.\n\nParameters:\n- searchTerm (string, query)\n- memberId (number, query)\n- includeWhenMemberWasTeller (boolean, query)\n- startDate (string, query)\n- endDate (string, query)\n- divisionNumber (number, query)\n- totalVotesCastComparator (string, query) – LessThan | LessThanOrEqualTo | EqualTo | GreaterThanOrEqualTo | GreaterThan\n- totalVotesCastValueToCompare (number, query)\n- majorityComparator (string, query) – LessThan | LessThanOrEqualTo | EqualTo | GreaterThanOrEqualTo | GreaterThan\n- majorityValueToCompare (number, query)\n- skip (number, query) – Defaults to 0.\n- take (number, query) – Defaults to 25.\n\n### get_member_voting_records\nGet a list of voting records for a Member.\n\nParameters:\n- memberId (number, query) – Required.\n- searchTerm (string, query)\n- includeWhenMemberWasTeller (boolean, query)\n- startDate (string, query)\n- endDate (string, query)\n- divisionNumber (number, query)\n- totalVotesCastComparator (string, query) – LessThan | LessThanOrEqualTo | EqualTo | GreaterThanOrEqualTo | GreaterThan\n- totalVotesCastValueToCompare (number, query)\n- majorityComparator (string, query) – LessThan | LessThanOrEqualTo | EqualTo | GreaterThanOrEqualTo | GreaterThan\n- majorityValueToCompare (number, query)\n- skip (number, query) – Defaults to 0.\n- take (number, query) – Defaults to 25.\n\n### get_divisions_grouped_by_party\nGet a list of Divisions which contain grouped by party.\n\nParameters:\n- searchTerm (string, query)\n- memberId (number, query)\n- includeWhenMemberWasTeller (boolean, query)\n- startDate (string, query)\n- endDate (string, query)\n- divisionNumber (number, query)\n- totalVotesCastComparator (string, query) – LessThan | LessThanOrEqualTo | EqualTo | GreaterThanOrEqualTo | GreaterThan\n- totalVotesCastValueToCompare (number, query)\n- majorityComparator (string, query) – LessThan | LessThanOrEqualTo | EqualTo | GreaterThanOrEqualTo | GreaterThan\n- majorityValueToCompare (number, query)\n\n## Example Output\n```json\n{\n  \"ok\": true,\n  \"endpoint\": \"/data/Divisions/search\",\n  \"status\": 200,\n  \"data\": {\n    \"items\": [\n      {\n        \"divisionId\": 456,\n        \"divisionNumber\": 22,\n        \"title\": \"Education Bill - Second Reading\",\n        \"date\": \"2026-03-10\"\n      }\n    ],\n    \"totalResults\": 1\n  }\n}\n```\n\n## Quick Start\nRun the MCP server using npx:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-lordsvotes mcp-server-uk-parliament-lordsvotes\n```\n\n## MCP Configuration\nExample `mcpServers` configuration for stdio transport:\n\n```json\n{\n  \"mcpServers\": {\n    \"uk-parliament-lordsvotes\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"-p\", \"@darkhorseone/mcp-server-uk-parliament-lordsvotes\", \"mcp-server-uk-parliament-lordsvotes\"],\n      \"env\": {\n        \"UPSTREAM_BASE_URL\": \"https://lordsvotes-api.parliament.uk\",\n        \"UPSTREAM_TIMEOUT_MS\": \"10000\",\n        \"USER_AGENT\": \"@darkhorseone/mcp-server-uk-parliament-lordsvotes/1.0.0\"\n      }\n    }\n  }\n}\n```\n\n## Example Usage\n- Fetch a division by id and inspect vote details.\n- Search divisions for a member in a date range.\n- Retrieve total results for a query before paging.\n- Get divisions grouped by party for summary analysis.\n\n## Use Cases\n- AI agents summarizing Lords divisions and voting outcomes.\n- Parliamentary research tools tracking member voting history.\n- Civic tech platforms monitoring vote trends and turnout.\n- Automation pipelines exporting divisions for reporting.\n\n## Data Source\nUK Parliament Lords Votes API\nhttps://lordsvotes-api.parliament.uk/\n\n## Installation\nRun directly using npx:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-lordsvotes mcp-server-uk-parliament-lordsvotes\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-lordsvotes run build\npnpm --filter @darkhorseone/mcp-server-uk-parliament-lordsvotes run start:http\n```\n\nSet a custom HTTP port with the `UKPLV_HTTP_PORT` environment variable (default: `8787`):\n\n```bash\nUKPLV_HTTP_PORT=8787 pnpm --filter @darkhorseone/mcp-server-uk-parliament-lordsvotes run start:http\n```\n\nPublished package command:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-lordsvotes -- mcp-server-uk-parliament-lordsvotes-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-lordsvotes -- 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/data/Divisions/search?SearchTerm=education&take=5\"\n```\n\n## License\nMIT License\n\n## MCP Metadata\nProtocol: Model Context Protocol\nTransport: stdio\nTools: get_division_by_id, search_divisions_total_results, search_divisions, get_member_voting_records, get_divisions_grouped_by_party\n","readmeFilename":"README.md"}