{"_id":"@darkhorseone/mcp-server-uk-parliament-statutoryinstruments","_rev":"2-ef8c66848b997925c73b8c1401b6be79","name":"@darkhorseone/mcp-server-uk-parliament-statutoryinstruments","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@darkhorseone/mcp-server-uk-parliament-statutoryinstruments","version":"1.0.0","author":{"name":"DarkhorseOne Limited"},"license":"MIT","_id":"@darkhorseone/mcp-server-uk-parliament-statutoryinstruments@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-statutoryinstruments":"dist/index.js","mcp-server-uk-parliament-statutoryinstruments-http":"dist/http.js"},"dist":{"shasum":"c8e03ebc39550c569e309cd7aea917cdd7b09db8","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-statutoryinstruments/-/mcp-server-uk-parliament-statutoryinstruments-1.0.0.tgz","fileCount":7,"integrity":"sha512-3JTqE8PPOQQHFqrfc6Ji0CTc7DSYnZSZsXY/A35i3QyF14orHAEU68Lw5l9d5mLflcX0wZpJGBhd8Jt+aDBi+A==","signatures":[{"sig":"MEYCIQCxIcgC8Z1PWc9OIrJQQwbOTuwqidPagUu8D11ThjA9LQIhAKduqXgP/TlVjRp8DO2L5lQul9QMaHKX4FhADpVMa0lz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35242},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"87c194b8bcd5f7bde9c8a82ce8c1962a03b2c8ff","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 && node ./scripts/add-shebang.mjs && 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-statutoryinstruments mcp-server-uk-parliament-statutoryinstruments","inspect:local":"pnpm run build && npx -y @modelcontextprotocol/inspector node ./dist/index.js","prepublishOnly":"pnpm run check:tarball:shebang","check:tarball:shebang":"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 Statutory Instruments 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-statutoryinstruments_1.0.0_1773233360328_0.4937853117313411","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@darkhorseone/mcp-server-uk-parliament-statutoryinstruments","version":"1.0.1","description":"MCP server for UK Parliament Statutory Instruments API","license":"MIT","author":{"name":"DarkhorseOne Limited"},"homepage":"https://github.com/DarkhorseOne/mcp-servers","mcpName":"io.github.nick-ma/uk-parliament-statutoryinstruments","repository":{"type":"git","url":"git+https://github.com/DarkhorseOne/mcp-servers.git"},"type":"module","bin":{"mcp-server-uk-parliament-statutoryinstruments":"dist/index.js","mcp-server-uk-parliament-statutoryinstruments-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/add-shebang.mjs && node ./scripts/verify-tarball-shebang.mjs","prepack":"pnpm run build && node ./scripts/add-shebang.mjs && 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-statutoryinstruments mcp-server-uk-parliament-statutoryinstruments"},"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-statutoryinstruments@1.0.1","bugs":{"url":"https://github.com/DarkhorseOne/mcp-servers/issues"},"_nodeVersion":"25.4.0","_npmVersion":"11.10.0","dist":{"integrity":"sha512-sl2ziW6tLOfDs5CzUrbgWS7Jb6xh8uhuokVt9SghYKVZxxxhROrIxGLjKPjNLNYuwwF90rANSyVGEcBza9bsSQ==","shasum":"5b0576747ccf7cd3f7a0d5b1777621d8d6f8c05f","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-statutoryinstruments/-/mcp-server-uk-parliament-statutoryinstruments-1.0.1.tgz","fileCount":7,"unpackedSize":39638,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHh18DB/z/zcZaXETA0EVHRk3yrqFqCKbQkq74eFiW9FAiEA+/a3lq9J63Ygt45A7/eYG4CZoE7xOuZs5hZvX7JZEeo="}]},"_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-statutoryinstruments_1.0.1_1773360061903_0.1833336405758963"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-11T12:49:20.253Z","modified":"2026-03-13T00:01:02.223Z","1.0.0":"2026-03-11T12:49:20.474Z","1.0.1":"2026-03-13T00:01:02.081Z"},"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 Statutory Instruments 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 Statutory Instruments MCP Server\n\n# Summary\nThis MCP server provides structured access to UK Parliament Statutory Instruments data using the Model Context Protocol.\nIt enables AI agents to query statutory instruments, procedures, laying bodies, and business items through API-backed tools and data access.\nDevelopers can integrate the MCP server via stdio transport to retrieve instruments across v1 and v2 endpoints.\nThe server exposes tools that map directly to the Statutory Instruments API for reliable automation and AI agents workflows.\n\n## Features\n- Search statutory instruments and proposed negatives with filters for house, procedure, and status.\n- Retrieve instrument details, procedures, and business items by ID.\n- Access laying bodies and Acts of Parliament through v1 and v2 endpoints.\n- Preserve upstream payloads in a standardized envelope for downstream tools.\n\n## Available Tools\n### get_v1_business_item_by_id\nReturns business item by ID.\n\nParameters:\n- id (string, path)\n- LaidPaper (string, query) – StatutoryInstrument | ProposedNegative\n\n### list_v1_laying_bodies\nReturns all laying bodies.\n\n### list_v1_procedures\nReturns all procedures.\n\n### get_v1_procedure_by_id\nReturns procedure by ID.\n\nParameters:\n- id (string, path)\n\n### list_v1_proposed_negative_statutory_instruments\nReturns a list of proposed negative statutory instruments.\n\nParameters:\n- Name (string, query)\n- RecommendedForProcedureChange (boolean, query)\n- DepartmentId (number, query)\n- LayingBodyId (string, query)\n- Skip (number, query)\n- Take (number, query)\n\n### get_v1_proposed_negative_statutory_instrument_by_id\nReturns proposed negative statutory instrument by ID.\n\nParameters:\n- id (string, path)\n\n### list_v1_business_items_by_proposed_negative_statutory_instrument_id\nReturns business items belonging to a proposed negative statutory instrument.\n\nParameters:\n- id (string, path)\n\n### list_v1_statutory_instruments\nReturns a list of statutory instruments.\n\nParameters:\n- Name (string, query)\n- StatutoryInstrumentType (string, query) – DraftAffirmative | DraftNegative | MadeAffirmative | MadeNegative\n- ScheduledDebate (boolean, query)\n- MotionToStop (boolean, query)\n- ConcernsRaisedByCommittee (boolean, query)\n- ParliamentaryProcessConcluded (string, query) – NotConcluded | Concluded\n- DepartmentId (number, query)\n- LayingBodyId (string, query)\n- House (string, query) – Commons | Lords\n- Skip (number, query)\n- Take (number, query)\n\n### get_v1_statutory_instrument_by_id\nReturns a statutory instrument by ID.\n\nParameters:\n- id (string, path)\n\n### list_v1_business_items_by_statutory_instrument_id\nReturns business items belonging to statutory instrument with ID.\n\nParameters:\n- id (string, path)\n\n### list_v2_acts_of_parliament\nSearch through Acts of Parliament.\n\nParameters:\n- Id (array:string, query)\n- Name (string, query)\n\n### get_v2_act_of_parliament_by_id\nSearch individual Act of Parliament by ID.\n\nParameters:\n- id (string, path)\n\n### list_v2_statutory_instruments\nSearch through statutory instruments and proposed negatives.\n\nParameters:\n- Name (string, query)\n- Procedure (string, query)\n- ScheduledDebate (boolean, query)\n- MotionToStop (boolean, query)\n- ConcernsRaisedByCommittee (boolean, query)\n- ParliamentaryProcessConcluded (boolean, query)\n- DepartmentId (number, query)\n- LayingBodyId (string, query)\n- RecommendedForProcedureChange (boolean, query)\n- ActOfParliamentId (array:string, query)\n- House (string, query) – Commons | Lords\n- Skip (number, query)\n- Take (number, query)\n\n### get_v2_statutory_instrument_by_instrument_id\nGet individual statutory instrument or proposed negative by id.\n\nParameters:\n- instrumentId (string, path)\n\n### list_v2_business_items_by_instrument_id\nGet business items associated with a particular instrument.\n\nParameters:\n- instrumentId (string, path)\n\n### list_v2_business_items_by_timeline_id\nGet business items associated with a particular timeline.\n\nParameters:\n- timelineId (string, path)\n\n## Example Output\n```json\n{\n  \"status\": 200,\n  \"data\": {\n    \"items\": [\n      {\n        \"instrumentId\": \"abcd1234\",\n        \"name\": \"Example Statutory Instrument\",\n        \"house\": \"Commons\"\n      }\n    ],\n    \"totalResults\": 1\n  },\n  \"upstream_path\": \"/api/v2/StatutoryInstrument\",\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-statutoryinstruments mcp-server-uk-parliament-statutoryinstruments\n```\n\n## MCP Configuration\nExample `mcpServers` configuration for stdio transport:\n\n```json\n{\n  \"mcpServers\": {\n    \"uk-parliament-statutoryinstruments\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"-p\", \"@darkhorseone/mcp-server-uk-parliament-statutoryinstruments\", \"mcp-server-uk-parliament-statutoryinstruments\"],\n      \"env\": {\n        \"UPSTREAM_BASE_URL\": \"https://statutoryinstruments-api.parliament.uk\",\n        \"REQUEST_TIMEOUT_MS\": \"10000\"\n      }\n    }\n  }\n}\n```\n\n## Example Usage\n- List statutory instruments laid in the Commons with a name filter.\n- Fetch a statutory instrument by ID and inspect its procedure.\n- Retrieve business items for an instrument or timeline.\n- Search Acts of Parliament linked to statutory instruments.\n\n## Use Cases\n- AI agents summarizing statutory instrument status and procedures.\n- Research tools tracking instruments by department or house.\n- Civic tech platforms monitoring proposed negatives and debates.\n- Automation workflows exporting instrument metadata for reporting.\n\n## Data Source\nUK Parliament Statutory Instruments API\nhttps://statutoryinstruments-api.parliament.uk\n\n## Installation\nRun directly using npx:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-statutoryinstruments mcp-server-uk-parliament-statutoryinstruments\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-statutoryinstruments run build\npnpm --filter @darkhorseone/mcp-server-uk-parliament-statutoryinstruments 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-statutoryinstruments run start:http\n```\n\nPublished package command:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-statutoryinstruments -- mcp-server-uk-parliament-statutoryinstruments-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-statutoryinstruments -- 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/v2/StatutoryInstrument?House=Commons&Take=10\"\n```\n\n## License\nMIT License\n\n## MCP Metadata\nProtocol: Model Context Protocol\nTransport: stdio\nTools: get_v1_business_item_by_id, list_v1_laying_bodies, list_v1_procedures, get_v1_procedure_by_id, list_v1_proposed_negative_statutory_instruments, get_v1_proposed_negative_statutory_instrument_by_id, list_v1_business_items_by_proposed_negative_statutory_instrument_id, list_v1_statutory_instruments, get_v1_statutory_instrument_by_id, list_v1_business_items_by_statutory_instrument_id, list_v2_acts_of_parliament, get_v2_act_of_parliament_by_id, list_v2_statutory_instruments, get_v2_statutory_instrument_by_instrument_id, list_v2_business_items_by_instrument_id, list_v2_business_items_by_timeline_id\n","readmeFilename":"README.md"}