{"_id":"@darkhorseone/mcp-server-uk-parliament-committees","_rev":"2-2b19aa9a4f07a5e24aaf9be94d7e00ac","name":"@darkhorseone/mcp-server-uk-parliament-committees","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@darkhorseone/mcp-server-uk-parliament-committees","version":"1.0.0","author":{"name":"DarkhorseOne Limited"},"license":"MIT","_id":"@darkhorseone/mcp-server-uk-parliament-committees@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-committees":"dist/index.js","mcp-server-uk-parliament-committees-http":"dist/http.js"},"dist":{"shasum":"c7b135074bd942f5e45e433f507e3087c758fb79","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-committees/-/mcp-server-uk-parliament-committees-1.0.0.tgz","fileCount":7,"integrity":"sha512-fZSy7nmt+hL2kOOIAjWdj0bsGQq8u6WV/vw/mQl32f8OzDw8Njr3ONA2d5nWNnw7e7nreXCxGJuJ7uphNeM5sA==","signatures":[{"sig":"MEUCIQDAG7i3Ry5RqJvazaxsRAIrwYsifojy+ZscbQAwP+FAoQIgc6oIkP79qypzXo1aN2X4ZkiSBR9LTbOVYkKRlRzD1xE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68705},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"9473d6c2c0d61fef45532ab27caae925238b8d95","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-committees mcp-server-uk-parliament-committees","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 Committees 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-committees_1.0.0_1773258925290_0.13015966751808317","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@darkhorseone/mcp-server-uk-parliament-committees","version":"1.0.1","description":"MCP server for UK Parliament Committees API","license":"MIT","author":{"name":"DarkhorseOne Limited"},"homepage":"https://github.com/DarkhorseOne/mcp-servers","mcpName":"io.github.nick-ma/uk-parliament-committees","repository":{"type":"git","url":"git+https://github.com/DarkhorseOne/mcp-servers.git"},"type":"module","bin":{"mcp-server-uk-parliament-committees":"dist/index.js","mcp-server-uk-parliament-committees-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-committees mcp-server-uk-parliament-committees"},"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-committees@1.0.1","bugs":{"url":"https://github.com/DarkhorseOne/mcp-servers/issues"},"_nodeVersion":"25.4.0","_npmVersion":"11.10.0","dist":{"integrity":"sha512-oY2UPFte/hMGPNu4pKmOaai6zGKKfLRUTH009a0+ah4McW9mXMEl0kzYNWYsCkB9R/74jnwBNNPOQEKOf/5g2Q==","shasum":"de444198493c00b22f69f2cd7afe7c475db0404a","tarball":"https://registry.npmjs.org/@darkhorseone/mcp-server-uk-parliament-committees/-/mcp-server-uk-parliament-committees-1.0.1.tgz","fileCount":7,"unpackedSize":79873,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD69FgrKDG2Cc3Y/ug0kTYONfnVXG/B4RYsmA47cK6HTwIgWHzXBwlvvCNaCScXFteVSz9Uhy51aWy5T2ssg0ubfi0="}]},"_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-committees_1.0.1_1773269514425_0.872984668624897"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-11T19:55:25.229Z","modified":"2026-03-11T22:51:54.718Z","1.0.0":"2026-03-11T19:55:25.432Z","1.0.1":"2026-03-11T22:51:54.596Z"},"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 Committees 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 Committees MCP Server\n\n# Summary\nThis MCP server provides structured access to UK Parliament Committees data using the Model Context Protocol.\nIt enables AI agents to query committees, committee business, events, publications, evidence, and petitions via API-backed tools and data access.\nDevelopers can connect the MCP server through stdio transport for reliable automation and AI agents that need authoritative committee information.\nThe server exposes tools that map directly to the Committees API, supporting search, lookup, and document retrieval workflows.\n\n## Features\n- Retrieve committees, committee types, and committee business with structured filters.\n- Access meetings, events, activities, and attendance data with date and status parameters.\n- Fetch publications, evidence, petitions, and related documents with consistent responses.\n- Preserve upstream payloads in a standardized envelope for downstream tools and AI agents.\n\n## Available Tools\n### get_bill_petitions\nReturn a list of Bill petitions.\n\nParameters:\n- CommitteeBusinessId (number, query) – Committee business id filter.\n- CommitteeId (number, query) – Committee id filter.\n- SearchTerm (string, query) – Search by witness/organisation/identifier.\n- StartDate (string, query) – Published on or after date.\n- EndDate (string, query) – Published on or before date.\n- ShowOnWebsiteOnly (boolean, query) – Website-only results.\n- Skip (number, query) – Offset.\n- Take (number, query) – Limit.\n\n### get_bill_petition_by_id\nReturn a Bill petition.\n\nParameters:\n- id (number, path) – Bill petition id.\n- showOnWebsiteOnly (boolean, query) – Website-only results.\n\n### get_bill_petition_document\nReturn a document for a Bill petition.\n\nParameters:\n- id (number, path) – Petition id.\n- fileDataFormat (string, path) – OriginalFormat | Html | Pdf.\n\n### get\nGet a list of Committee Meetings between two dates.\n\nParameters:\n- FromDate (string, query) – From date (yyyy-mm-dd).\n- ToDate (string, query) – To date (yyyy-mm-dd).\n\n### get_committee_business\nReturn a list of committee businesses.\n\nParameters:\n- SearchTerm (string, query)\n- CommitteeId (number, query)\n- DateFrom (string, query)\n- DateTo (string, query)\n- BusinessTypeId (number, query)\n- Status (string, query) – Open | Closed\n- CurrentlyAcceptingPetitions (boolean, query)\n- CurrentlyAcceptingEvidence (boolean, query)\n- SortOrder (string, query) – DateOpenedNewest | DateOpenedOldest | PublicationDateAscending | PublicationDateDescending\n- CommitteeBusinessIds (array:number, query)\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### get_committee_business_by_id\nReturn a committee business.\n\nParameters:\n- id (number, path) – Committee business id.\n- includeBanners (boolean, query)\n- showOnWebsiteOnly (boolean, query)\n\n### list_committee_business_publication_groups\nReturn a list of Publication Groups for a Committee Business.\n\nParameters:\n- id (number, path) – Committee business id.\n\n### list_committee_business_types\nReturn a list of Committee Business Types.\n\n### list_committee_types\nReturn a list of Committee Types.\n\n### get_committees\nReturn a list of Committees.\n\nParameters:\n- CommitteeBusinessId (number, query)\n- SearchTerm (string, query)\n- ParentCommitteeId (number, query)\n- CommitteeStatus (string, query) – Current | Former | All\n- CommitteeTypeId (number, query)\n- CommitteeCategory (string, query) – Select | General | Other\n- House (string, query) – Commons | Lords | Joint\n- CommitteeIds (array:number, query)\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### get_next_event_for_committees\nReturn a list of next events for committees matching specified criteria.\n\nParameters:\n- EventWithActivitiesOnly (boolean, query)\n- EventFromDate (string, query)\n- House (string, query) – Commons | Lords | Joint\n- EventTypes (array:number, query)\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### get_committee_by_id\nReturn a Committee.\n\nParameters:\n- id (number, path) – Committee id.\n- includeBanners (boolean, query)\n- showOnWebsiteOnly (boolean, query)\n\n### get_events_committee_by_id\nReturn events related to the committee id provided.\n\nParameters:\n- id (number, path) – Committee id.\n- CommitteeBusinessId (number, query)\n- SearchTerm (string, query)\n- StartDateFrom (string, query)\n- StartDateTo (string, query)\n- EndDateFrom (string, query)\n- House (string, query) – Commons | Lords | Joint\n- LocationId (number, query)\n- ExcludeCancelledEvents (boolean, query)\n- SortAscending (boolean, query)\n- EventTypeId (number, query)\n- IncludeEventAttendees (boolean, query)\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### list_committee_memberships\nReturn a list of Memberships of a Committee.\n\nParameters:\n- id (number, path) – Committee id.\n- MembershipStatus (string, query) – Current | Former | All\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### get_committee_person_photo\nReturn photo for a lay member of the committee.\n\nParameters:\n- id (number, path) – Committee id.\n- personId (number, path) – Person id.\n\n### list_committee_staff_memberships\nReturn a list of staff members of a Committee.\n\nParameters:\n- id (number, path) – Committee id.\n- MembershipStatus (string, query) – Current | Former | All\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### list_committee_publication_groups\nReturn a list of Publication Groups for a Committee.\n\nParameters:\n- id (number, path) – Committee id.\n\n### get_committee_archived_publication_links\nReturn all CommitteeArchivedPublicationLinks linked to a Committee.\n\nParameters:\n- id (number, path) – Committee id.\n\n### get_countries\nReturn a list of Countries.\n\n### get_events\nReturn a list of events.\n\nParameters:\n- CommitteeId (number, query)\n- CommitteeBusinessId (number, query)\n- GroupChildEventsWithParent (boolean, query)\n- SearchTerm (string, query)\n- StartDateFrom (string, query)\n- StartDateTo (string, query)\n- EndDateFrom (string, query)\n- House (string, query) – Commons | Lords | Joint\n- LocationId (number, query)\n- ExcludeCancelledEvents (boolean, query)\n- SortAscending (boolean, query)\n- EventTypeId (number, query)\n- IncludeEventAttendees (boolean, query)\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### get_event_activities\nReturn a list of event activities.\n\nParameters:\n- IncludeActivityAttendees (boolean, query)\n- CommitteeId (number, query)\n- CommitteeBusinessId (number, query)\n- GroupChildEventsWithParent (boolean, query)\n- SearchTerm (string, query)\n- StartDateFrom (string, query)\n- StartDateTo (string, query)\n- EndDateFrom (string, query)\n- House (string, query) – Commons | Lords | Joint\n- LocationId (number, query)\n- ExcludeCancelledEvents (boolean, query)\n- SortAscending (boolean, query)\n- EventTypeId (number, query)\n- IncludeEventAttendees (boolean, query)\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### get_event_by_id\nReturn an event.\n\nParameters:\n- id (number, path) – Event id.\n- showOnWebsiteOnly (boolean, query)\n\n### get_attendances_by_id\nReturn a list of attendances for an event.\n\nParameters:\n- id (number, path) – Event id.\n- showOnWebsiteOnly (boolean, query)\n\n### get_activities_by_id\nReturn a list of activities for an event.\n\nParameters:\n- id (number, path) – Event id.\n- showOnWebsiteOnly (boolean, query)\n\n### list_members_committee_memberships\nReturn a list of memberships for one or more members.\n\nParameters:\n- Members (array:number, query) – Member ids.\n- MembershipStatus (string, query) – Current | Former | All\n- CommitteeCategory (string, query) – Select | General | Other\n- ShowOnWebsiteOnly (boolean, query)\n\n### banners\nReturn messaging banners.\n\nParameters:\n- location (string, path) – Banner location.\n\n### get_oral_evidence\nReturn a list of Oral Evidence.\n\nParameters:\n- CommitteeBusinessId (number, query)\n- CommitteeId (number, query)\n- SearchTerm (string, query)\n- StartDate (string, query)\n- EndDate (string, query)\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### get_oral_evidence_by_id\nReturn an Oral Evidence.\n\nParameters:\n- id (number, path) – Oral evidence id.\n- showOnWebsiteOnly (boolean, query)\n\n### get_oral_evidence_document\nReturn a document for an Oral Evidence.\n\nParameters:\n- id (number, path) – Oral evidence id.\n- fileDataFormat (string, path) – OriginalFormat | Html | Pdf.\n\n### list_publication_types\nReturn a list of Publication Types.\n\n### get_publications\nReturn a list of publications.\n\nParameters:\n- PublicationTypeIds (array:number, query)\n- SearchTerm (string, query)\n- StartDate (string, query)\n- EndDate (string, query)\n- SortOrder (string, query) – PublicationDateDescending | PublicationDateAscending | ResponseDateDescending | ResponseDateAscending\n- PaperNumbers (array:string, query)\n- CommitteeBusinessId (number, query)\n- CommitteeId (number, query)\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### get_publication_by_id\nReturn a publication.\n\nParameters:\n- id (number, path) – Publication id.\n- showOnWebsiteOnly (boolean, query)\n\n### get_document\nReturn a document for a publication.\n\nParameters:\n- id (number, path) – Publication id.\n- documentId (number, path) – Document id.\n- fileDataFormat (string, path) – OriginalFormat | Html | Pdf.\n\n### get_submission_period_template_document_by_id\nReturn a submission period template file.\n\nParameters:\n- id (number, path) – Submission period template id.\n- documentId (number, path) – Document id.\n\n### get_submission_period_by_id\nReturn a submission period.\n\nParameters:\n- id (number, path) – Submission period id.\n\n### get_written_evidence\nReturn a list of Written Evidence.\n\nParameters:\n- CommitteeBusinessId (number, query)\n- CommitteeId (number, query)\n- SearchTerm (string, query)\n- StartDate (string, query)\n- EndDate (string, query)\n- ShowOnWebsiteOnly (boolean, query)\n- Skip (number, query)\n- Take (number, query)\n\n### get_written_evidence_by_id\nReturn a Written Evidence.\n\nParameters:\n- id (number, path) – Written evidence id.\n- showOnWebsiteOnly (boolean, query)\n\n### get_written_evidence_document\nReturn a document for a Written Evidence.\n\nParameters:\n- id (number, path) – Written evidence id.\n- fileDataFormat (string, path) – OriginalFormat | Html | Pdf.\n\n## Example Output\n```json\n{\n  \"status\": 200,\n  \"data\": {\n    \"items\": [\n      {\n        \"committeeId\": 123,\n        \"name\": \"Select Committee on Energy\",\n        \"house\": \"Commons\",\n        \"status\": \"Current\"\n      }\n    ],\n    \"totalResults\": 1\n  },\n  \"upstream_path\": \"/api/Committees\",\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-committees mcp-server-uk-parliament-committees\n```\n\n## MCP Configuration\nExample `mcpServers` configuration for stdio transport:\n\n```json\n{\n  \"mcpServers\": {\n    \"uk-parliament-committees\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"-p\", \"@darkhorseone/mcp-server-uk-parliament-committees\", \"mcp-server-uk-parliament-committees\"],\n      \"env\": {\n        \"UKPCOM_API_BASE_URL\": \"https://committees-api.parliament.uk\",\n        \"UKPCOM_REQUEST_TIMEOUT_MS\": \"10000\"\n      }\n    }\n  }\n}\n```\n\n## Example Usage\n- List current committees in the House of Commons.\n- Find committee business by keyword and filter by status.\n- Retrieve events for a committee within a date range.\n- Download a committee publication document as PDF.\n\n## Use Cases\n- AI agents summarizing committee activity and upcoming meetings.\n- Research tools tracking evidence submissions and publications.\n- Civic technology platforms monitoring committee business statuses.\n- Automation systems enriching datasets with committee metadata.\n\n## Data Source\nUK Parliament Committees API\nhttps://committees-api.parliament.uk/index.html\n\n## Installation\nRun directly using npx:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-committees mcp-server-uk-parliament-committees\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-committees run build\npnpm --filter @darkhorseone/mcp-server-uk-parliament-committees run start:http\n```\n\nSet a custom HTTP port with the `UKPCOM_HTTP_PORT` environment variable (default: `8787`):\n\n```bash\nUKPCOM_HTTP_PORT=8787 pnpm --filter @darkhorseone/mcp-server-uk-parliament-committees run start:http\n```\n\nPublished package command:\n\n```bash\nnpx -y -p @darkhorseone/mcp-server-uk-parliament-committees -- mcp-server-uk-parliament-committees-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-committees -- 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/Committees?Take=5\"\n```\n\n## License\nMIT License\n\n## MCP Metadata\nProtocol: Model Context Protocol\nTransport: stdio\nTools: get_bill_petitions, get_bill_petition_by_id, get_bill_petition_document, get, get_committee_business, get_committee_business_by_id, list_committee_business_publication_groups, list_committee_business_types, list_committee_types, get_committees, get_next_event_for_committees, get_committee_by_id, get_events_committee_by_id, list_committee_memberships, get_committee_person_photo, list_committee_staff_memberships, list_committee_publication_groups, get_committee_archived_publication_links, get_countries, get_events, get_event_activities, get_event_by_id, get_attendances_by_id, get_activities_by_id, list_members_committee_memberships, banners, get_oral_evidence, get_oral_evidence_by_id, get_oral_evidence_document, list_publication_types, get_publications, get_publication_by_id, get_document, get_submission_period_template_document_by_id, get_submission_period_by_id, get_written_evidence, get_written_evidence_by_id, get_written_evidence_document\n","readmeFilename":"README.md"}