{"_id":"@darkhorseone/mcp-server-uk-parliament-bills","_rev":"3-ab7d0916248900644773fc6eb55a448f","name":"@darkhorseone/mcp-server-uk-parliament-bills","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@darkhorseone/mcp-server-uk-parliament-bills","version":"1.0.0","author":{"name":"DarkhorseOne Limited"},"license":"MIT","_id":"@darkhorseone/mcp-server-uk-parliament-bills@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-bills":"dist/index.js","mcp-server-uk-parliament-bills-http":"dist/http.js"},"dist":{"shasum":"c9aaa6b1de84b9e897e3a82c810288a3db25aa99","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-bills/-/mcp-server-uk-parliament-bills-1.0.0.tgz","fileCount":7,"integrity":"sha512-NcO4T8CoGcfjZ2bM6ejOkiuwWPidjM6Fx4CBg8PSsmrq6w0ZfDmGv7EHmsCpd6te/FZfCmeZd8EDJZMGEbDkaA==","signatures":[{"sig":"MEUCIF9OHNfzGGG2k4xYhaH/ja9LCSV+I3nf39dyd+1t+Aa1AiEAxZUFfW6mpT0x8UJnubpzEDqOimR8WMMD2GOu16kwk/I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36316},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"2c04199b43a4b1e301d4bcb4bb784c32910073b4","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","check":"pnpm run lint && pnpm run typecheck && pnpm run test && pnpm run build","prepack":"pnpm run build && pnpm run check:tarball:shebang","dev:http":"tsx src/http.ts","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-bills mcp-server-uk-parliament-bills","inspect:local":"pnpm run build && npx -y @modelcontextprotocol/inspector node ./dist/index.js","prepublishOnly":"pnpm run check:tarball:shebang","check:tarball:shebang":"pnpm run build && node ./scripts/add-shebang.mjs && 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 Bills 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-bills_1.0.0_1773243785745_0.6137093608917215","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@darkhorseone/mcp-server-uk-parliament-bills","version":"1.0.1","author":{"name":"DarkhorseOne Limited"},"license":"MIT","_id":"@darkhorseone/mcp-server-uk-parliament-bills@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-bills":"dist/index.js","mcp-server-uk-parliament-bills-http":"dist/http.js"},"dist":{"shasum":"13aa80cdaf8a5cfb830cefc37354529f076cf05d","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-bills/-/mcp-server-uk-parliament-bills-1.0.1.tgz","fileCount":7,"integrity":"sha512-VrKcKsK2wgd6UXJ8lEyuP/MRN1Sc1vckUhIktOepA/mocmx9q4/DVKfp+16DVg2Ynmj+PD+xKVIzXPl/DQH9hg==","signatures":[{"sig":"MEUCIEMwRwQ5/WQXPwZQeYz0IchWOfE9ngtRr/ubgAZvfQApAiEA+Y6REIlSfK+rsYhh0nv3x0A4n540o9/O9Y9c0C33sgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36370},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"7c53f93a42c08b8dca620f06afb6e5cc235e3055","mcpName":"io.github.nick-ma/uk-parliament-bills","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","check":"pnpm run lint && pnpm run typecheck && pnpm run test && pnpm run build","prepack":"pnpm run build && pnpm run check:tarball:shebang","dev:http":"tsx src/http.ts","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-bills mcp-server-uk-parliament-bills","inspect:local":"pnpm run build && npx -y @modelcontextprotocol/inspector node ./dist/index.js","prepublishOnly":"pnpm run check:tarball:shebang","check:tarball:shebang":"pnpm run build && node ./scripts/add-shebang.mjs && 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 Bills 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-bills_1.0.1_1773261850694_0.9778194220037932","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@darkhorseone/mcp-server-uk-parliament-bills","version":"1.0.2","description":"MCP server for UK Parliament Bills API","license":"MIT","author":{"name":"DarkhorseOne Limited"},"homepage":"https://github.com/DarkhorseOne/mcp-servers","mcpName":"io.github.nick-ma/uk-parliament-bills","repository":{"type":"git","url":"git+https://github.com/DarkhorseOne/mcp-servers.git"},"type":"module","bin":{"mcp-server-uk-parliament-bills":"dist/index.js","mcp-server-uk-parliament-bills-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":"pnpm run build && node ./scripts/add-shebang.mjs && 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","dev:http":"tsx src/http.ts","start:http":"node dist/http.js","check":"pnpm run lint && pnpm run typecheck && pnpm run test && pnpm run build","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-bills mcp-server-uk-parliament-bills"},"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":"2e2a4d41f9ec7a7b4f307b066cea3107942c43dd","_id":"@darkhorseone/mcp-server-uk-parliament-bills@1.0.2","bugs":{"url":"https://github.com/DarkhorseOne/mcp-servers/issues"},"_nodeVersion":"25.4.0","_npmVersion":"11.10.0","dist":{"integrity":"sha512-WjOQoux1+p/vc/CheoGzwE+Wb+duZpbfXz+RXGHvqpbxV9tNio41Det0bSvw0rjADcj/DYrA08S716ZPWC+zMw==","shasum":"4628b92a073c9dc3f4ad9a2b134fbeca8311691e","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-bills/-/mcp-server-uk-parliament-bills-1.0.2.tgz","fileCount":7,"unpackedSize":41674,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHuNbGTVltQMeY+103hGeKHWsnIFNMeSH4dWATN/ezQ3AiA6k2azo16UTSihetV7h7NN+Tww0MWS+LPf5OI2uynl8g=="}]},"_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-bills_1.0.2_1773268455954_0.8673500582464189"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-11T15:43:05.606Z","modified":"2026-03-11T22:34:16.235Z","1.0.0":"2026-03-11T15:43:05.892Z","1.0.1":"2026-03-11T20:44:10.826Z","1.0.2":"2026-03-11T22:34:16.109Z"},"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 Bills 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 Bills MCP Server\n\n# Summary\nThis MCP server provides structured access to UK Parliament Bills data using the Model Context Protocol.\nIt enables AI agents to query bills, stages, publications, amendments, and RSS feeds through reliable tools and an API-backed data source.\nDevelopers can integrate the MCP server into local workflows or automation pipelines using stdio transport, while preserving upstream API responses.\nThe server exposes tools for search, lookup, and publication retrieval, optimized for AI agents and MCP-compatible clients.\n\n## Features\n- Search and retrieve Bills, stages, publications, and sittings from the UK Parliament Bills API.\n- Access amendments and ping-pong items with structured parameters and enum validation.\n- Provide RSS feeds for all, public, or private bills as raw text payloads.\n- Preserve upstream JSON payloads in a consistent response envelope for downstream tools and AI agents.\n\n## Available Tools\n### search_bill_stage_amendments\nReturns a list of amendments for a Bill stage.\n\nParameters:\n- billId (number, path) – Bill ID.\n- billStageId (number, path) – Bill stage ID.\n- SearchTerm (string, query) – Optional text search.\n- AmendmentNumber (string, query) – Optional amendment number.\n- Decision (string, query) – Optional decision enum.\n- MemberId (number, query) – Optional member ID.\n- Skip (number, query) – Optional offset.\n- Take (number, query) – Optional limit.\n\n### get_bill_stage_amendment\nReturns a specific amendment for a Bill stage.\n\nParameters:\n- billId (number, path) – Bill ID.\n- billStageId (number, path) – Bill stage ID.\n- amendmentId (number, path) – Amendment ID.\n\n### list_bill_news_articles\nReturns news articles for a Bill.\n\nParameters:\n- billId (number, path) – Bill ID.\n- Skip (number, query) – Optional offset.\n- Take (number, query) – Optional limit.\n\n### list_bill_types\nReturns a list of Bill types.\n\nParameters:\n- Category (string, query) – Optional category enum.\n- Skip (number, query) – Optional offset.\n- Take (number, query) – Optional limit.\n\n### search_bills\nReturns a list of Bills matching filters.\n\nParameters:\n- SearchTerm (string, query) – Optional text search.\n- Session (number, query) – Optional session number.\n- CurrentHouse (string, query) – Optional house enum.\n- OriginatingHouse (string, query) – Optional house enum.\n- MemberId (number, query) – Optional member ID.\n- DepartmentId (number, query) – Optional department ID.\n- BillStage (array:number, query) – Optional bill stage IDs.\n- BillStagesExcluded (array:number, query) – Optional excluded stage IDs.\n- IsDefeated (boolean, query) – Optional defeated filter.\n- IsWithdrawn (boolean, query) – Optional withdrawn filter.\n- BillType (array:number, query) – Optional bill type IDs.\n- SortOrder (string, query) – Optional sort order enum.\n- BillIds (array:number, query) – Optional bill IDs.\n- IsInAmendableStage (boolean, query) – Optional amendable stage filter.\n- Skip (number, query) – Optional offset.\n- Take (number, query) – Optional limit.\n\n### get_bill\nReturns a Bill.\n\nParameters:\n- billId (number, path) – Bill ID.\n\n### get_bill_stage_details\nReturns a Bill stage.\n\nParameters:\n- billId (number, path) – Bill ID.\n- billStageId (number, path) – Bill stage ID.\n\n### list_bill_stages\nReturns all Bill stages for a Bill.\n\nParameters:\n- billId (number, path) – Bill ID.\n- Skip (number, query) – Optional offset.\n- Take (number, query) – Optional limit.\n\n### get_publication_document\nReturns information on a publication document.\n\nParameters:\n- publicationId (number, path) – Publication ID.\n- documentId (number, path) – Document ID.\n\n### download_publication_document\nReturns a publication document payload.\n\nParameters:\n- publicationId (number, path) – Publication ID.\n- documentId (number, path) – Document ID.\n\n### search_bill_stage_ping_pong_items\nReturns a list of motions or amendments for a Bill stage.\n\nParameters:\n- billId (number, path) – Bill ID.\n- billStageId (number, path) – Bill stage ID.\n- SearchTerm (string, query) – Optional text search.\n- AmendmentNumber (string, query) – Optional amendment number.\n- Decision (string, query) – Optional decision enum.\n- MemberId (number, query) – Optional member ID.\n- Skip (number, query) – Optional offset.\n- Take (number, query) – Optional limit.\n\n### get_bill_stage_ping_pong_item\nReturns an amendment or motion detail.\n\nParameters:\n- billId (number, path) – Bill ID.\n- billStageId (number, path) – Bill stage ID.\n- pingPongItemId (number, path) – Ping pong item ID.\n\n### list_publication_types\nReturns a list of publication types.\n\nParameters:\n- Skip (number, query) – Optional offset.\n- Take (number, query) – Optional limit.\n\n### list_bill_publications\nReturns Bill publications.\n\nParameters:\n- billId (number, path) – Bill ID.\n\n### list_bill_stage_publications\nReturns publications for a Bill stage.\n\nParameters:\n- billId (number, path) – Bill ID.\n- stageId (number, path) – Stage ID.\n\n### get_rss_all_bills\nReturns an RSS feed for all Bills.\n\n### get_rss_public_bills\nReturns an RSS feed for public Bills.\n\n### get_rss_private_bills\nReturns an RSS feed for private Bills.\n\n### get_rss_bill_by_id\nReturns an RSS feed for a specific Bill.\n\nParameters:\n- id (number, path) – Bill ID.\n\n### search_sittings\nReturns a list of sittings.\n\nParameters:\n- House (string, query) – Optional house enum.\n- DateFrom (string, query) – Optional start date.\n- DateTo (string, query) – Optional end date.\n- Skip (number, query) – Optional offset.\n- Take (number, query) – Optional limit.\n\n### list_stage_references\nReturns a list of Bill stages.\n\nParameters:\n- Skip (number, query) – Optional offset.\n- Take (number, query) – Optional limit.\n\n## Example Output\n```json\n{\n  \"status\": 200,\n  \"data\": {\n    \"items\": [\n      {\n        \"billId\": 1,\n        \"title\": \"Energy Security Bill\",\n        \"currentStage\": \"Commons Committee\",\n        \"currentHouse\": \"Commons\",\n        \"lastUpdated\": \"2026-03-11T10:00:00Z\"\n      }\n    ],\n    \"totalResults\": 1\n  },\n  \"upstream_path\": \"/api/v1/Bills\",\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-bills mcp-server-uk-parliament-bills\n```\n\n## MCP Configuration\nExample `mcpServers` configuration for stdio transport:\n\n```json\n{\n  \"mcpServers\": {\n    \"uk-parliament-bills\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"-p\", \"@darkhorseone/mcp-server-uk-parliament-bills\", \"mcp-server-uk-parliament-bills\"],\n      \"env\": {\n        \"UPSTREAM_BASE_URL\": \"https://bills-api.parliament.uk\",\n        \"REQUEST_TIMEOUT_MS\": \"10000\"\n      }\n    }\n  }\n}\n```\n\n## Example Usage\n- List the latest UK Parliament Bills.\n- Fetch a specific Bill by ID and return the current stage.\n- Retrieve publications for a Bill and download a document.\n- Get the RSS feed for public Bills for downstream tools.\n\n## Use Cases\n- AI agents summarizing legislative progress and bill status.\n- Developer tools that monitor bill updates via the API and RSS.\n- Civic technology platforms tracking amendments and parliamentary stages.\n- Automation workflows that enrich datasets with UK Parliament Bills metadata.\n\n## Data Source\nUK Parliament Bills API\nhttps://bills-api.parliament.uk\n\n## Installation\nRun directly using npx:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-bills mcp-server-uk-parliament-bills\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-bills run build\npnpm --filter @darkhorseone/mcp-server-uk-parliament-bills run start:http\n```\n\nSet a custom HTTP port with the `UKP_HTTP_PORT` environment variable (default: `3000`):\n\n```bash\nUKP_HTTP_PORT=8787 pnpm --filter @darkhorseone/mcp-server-uk-parliament-bills run start:http\n```\n\nPublished package command:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-bills -- mcp-server-uk-parliament-bills-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-bills -- node ./dist/http.js\n```\n\nHealth check:\n\n```bash\ncurl http://127.0.0.1:3000/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:3000/proxy/api/v1/Bills?SearchTerm=energy&SortOrder=TitleAscending\"\n```\n\n## License\nMIT License\n\n## MCP Metadata\nProtocol: Model Context Protocol\nTransport: stdio\nTools: search_bill_stage_amendments, get_bill_stage_amendment, list_bill_news_articles, list_bill_types, search_bills, get_bill, get_bill_stage_details, list_bill_stages, get_publication_document, download_publication_document, search_bill_stage_ping_pong_items, get_bill_stage_ping_pong_item, list_publication_types, list_bill_publications, list_bill_stage_publications, get_rss_all_bills, get_rss_public_bills, get_rss_private_bills, get_rss_bill_by_id, search_sittings, list_stage_references\n","readmeFilename":"README.md"}