{"_id":"@darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions","_rev":"2-848b413ad63b06bde94d346f43e06ae4","name":"@darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions","version":"1.0.0","author":{"name":"DarkhorseOne Limited"},"license":"MIT","_id":"@darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions@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-oralquestionsandmotions":"dist/index.js","mcp-server-uk-parliament-oralquestionsandmotions-http":"dist/http.js"},"dist":{"shasum":"8f43f9c3a29b2b1e183b403a1186cd61b216082b","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions/-/mcp-server-uk-parliament-oralquestionsandmotions-1.0.0.tgz","fileCount":7,"integrity":"sha512-KsYuxP5v+acsModLqgcQ9/MNU8ubUXMmUzy9dt+03+K/IVPEXWAF+PihKLWFuzEvfoW9o4wwyNaYrgfbSKs/+w==","signatures":[{"sig":"MEQCIHofBFdVcZFM858cyMzQyikB+paKfaYnpDAf33psyjJfAiBxK8xSrMDkzCoTzopVbm0AAxac//HiJgK8vUcbtVrJeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33290},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"6c809d5adbf61ec2b189701cbb46029d4baa341c","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 && node ./scripts/add-shebang.mjs","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-oralquestionsandmotions mcp-server-uk-parliament-oralquestionsandmotions","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 Oral Questions and Motions 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-oralquestionsandmotions_1.0.0_1773229843324_0.39626330152662725","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions","version":"1.0.1","description":"MCP server for UK Parliament Oral Questions and Motions API","license":"MIT","author":{"name":"DarkhorseOne Limited"},"homepage":"https://github.com/DarkhorseOne/mcp-servers","mcpName":"io.github.nick-ma/uk-parliament-oralquestionsandmotions","repository":{"type":"git","url":"git+https://github.com/DarkhorseOne/mcp-servers.git"},"type":"module","bin":{"mcp-server-uk-parliament-oralquestionsandmotions":"dist/index.js","mcp-server-uk-parliament-oralquestionsandmotions-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 && node ./scripts/add-shebang.mjs","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-oralquestionsandmotions mcp-server-uk-parliament-oralquestionsandmotions"},"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-oralquestionsandmotions@1.0.1","bugs":{"url":"https://github.com/DarkhorseOne/mcp-servers/issues"},"_nodeVersion":"25.4.0","_npmVersion":"11.10.0","dist":{"integrity":"sha512-58UEm/N/fz2v/BRfeoLazhgPlc00IR1UllB4Y5cGUYye+ifjptmfaQU46dympdUXu431ErpkkCmwh8Yun262kw==","shasum":"1534ee29edf25a7d12ac797e2eb0814628a86e30","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions/-/mcp-server-uk-parliament-oralquestionsandmotions-1.0.1.tgz","fileCount":7,"unpackedSize":35591,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE6S98ytYDtfRJPbJyculM2BZemkWyvz8frWgXMD6Ty7AiAmLZAKeFk4xCgobFUtp/ik59PhYP+YThGc0VgNch8EuQ=="}]},"_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-oralquestionsandmotions_1.0.1_1773360118716_0.5181604340841965"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-11T11:50:43.028Z","modified":"2026-03-13T00:01:59.015Z","1.0.0":"2026-03-11T11:50:43.475Z","1.0.1":"2026-03-13T00:01:58.887Z"},"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 Oral Questions and Motions 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 Oral Questions and Motions MCP Server\n\n# Summary\nThis MCP server provides structured access to UK Parliament Oral Questions and Motions data using the Model Context Protocol.\nIt enables AI agents to retrieve early day motions, oral questions, and question times through API-backed tools and data access.\nDevelopers can integrate the MCP server via stdio transport to query motions, question lists, and answering schedules.\nThe server exposes tools that map directly to the Oral Questions and Motions API for reliable automation and AI agents workflows.\n\n## Features\n- Fetch a single Early Day Motion by ID.\n- List Early Day Motions with status, date, and member filters.\n- Retrieve oral questions with question type and status filters.\n- Query oral question times with answering body and date ranges.\n\n## Available Tools\n### get_early_day_motion_by_id\nReturns a single Early Day Motion by ID.\n\nParameters:\n- id (number, path)\n\n### list_early_day_motions\nReturns a list of Early Day Motions.\n\nParameters:\n- parameters.edmIds (array:number, query)\n- parameters.uINWithAmendmentSuffix (string, query)\n- parameters.searchTerm (string, query)\n- parameters.currentStatusDateStart (string, query)\n- parameters.currentStatusDateEnd (string, query)\n- parameters.isPrayer (boolean, query)\n- parameters.memberId (number, query)\n- parameters.includeSponsoredByMember (boolean, query)\n- parameters.tabledStartDate (string, query)\n- parameters.tabledEndDate (string, query)\n- parameters.statuses (array:string, query) – Published | Withdrawn\n- parameters.orderBy (string, query) – DateTabledAsc | DateTabledDesc | TitleAsc | TitleDesc | SignatureCountAsc | SignatureCountDesc\n- parameters.skip (number, query)\n- parameters.take (number, query)\n\n### list_oral_questions\nReturns a list of oral questions.\n\nParameters:\n- parameters.answeringDateStart (string, query)\n- parameters.answeringDateEnd (string, query)\n- parameters.questionType (string, query) – Substantive | Topical\n- parameters.oralQuestionTimeId (number, query)\n- parameters.statuses (array:string, query)\n- parameters.askingMemberIds (array:number, query)\n- parameters.uINs (array:number, query)\n- parameters.answeringBodyIds (array:number, query)\n- parameters.skip (number, query)\n- parameters.take (number, query)\n\n### list_oral_question_times\nReturns a list of oral question times.\n\nParameters:\n- parameters.answeringDateStart (string, query)\n- parameters.answeringDateEnd (string, query)\n- parameters.deadlineDateStart (string, query)\n- parameters.deadlineDateEnd (string, query)\n- parameters.oralQuestionTimeId (number, query)\n- parameters.answeringBodyIds (array:number, query)\n- parameters.skip (number, query)\n- parameters.take (number, query)\n\n## Example Output\n```json\n{\n  \"status\": 200,\n  \"data\": {\n    \"items\": [\n      {\n        \"edmId\": 2044,\n        \"title\": \"Example motion\",\n        \"status\": \"Published\",\n        \"dateTabled\": \"2026-03-10\"\n      }\n    ],\n    \"totalResults\": 1\n  },\n  \"upstream_path\": \"/EarlyDayMotions/list\",\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-oralquestionsandmotions mcp-server-uk-parliament-oralquestionsandmotions\n```\n\n## MCP Configuration\nExample `mcpServers` configuration for stdio transport:\n\n```json\n{\n  \"mcpServers\": {\n    \"uk-parliament-oralquestionsandmotions\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"-p\", \"@darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions\", \"mcp-server-uk-parliament-oralquestionsandmotions\"],\n      \"env\": {\n        \"UPSTREAM_BASE_URL\": \"https://oralquestionsandmotions-api.parliament.uk\",\n        \"REQUEST_TIMEOUT_MS\": \"10000\"\n      }\n    }\n  }\n}\n```\n\n## Example Usage\n- Fetch an Early Day Motion by ID.\n- List oral questions for a given answering date range.\n- Query oral question times for specific answering bodies.\n- Filter motions by status, member, and tabled dates.\n\n## Use Cases\n- AI agents summarizing current oral questions and motions.\n- Monitoring dashboards for question schedules and EDMS.\n- Civic tech tools tracking motions and topical questions.\n- Automation workflows exporting questions for reporting.\n\n## Data Source\nUK Parliament Oral Questions and Motions API\nhttps://oralquestionsandmotions-api.parliament.uk\n\n## Installation\nRun directly using npx:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions mcp-server-uk-parliament-oralquestionsandmotions\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-oralquestionsandmotions run build\npnpm --filter @darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions 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-oralquestionsandmotions run start:http\n```\n\nPublished package command:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-oralquestionsandmotions -- mcp-server-uk-parliament-oralquestionsandmotions-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-oralquestionsandmotions -- 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/EarlyDayMotion/2044\"\n```\n\n## License\nMIT License\n\n## MCP Metadata\nProtocol: Model Context Protocol\nTransport: stdio\nTools: get_early_day_motion_by_id, list_early_day_motions, list_oral_questions, list_oral_question_times\n","readmeFilename":"README.md"}