MCP Server

UK Civic & Parliamentary Data MCP Server from MCPBundles

com.mcpbundles/uk-civic-parliamentary
Data & Analytics Search & Research Public & reachable MCP 2026-07-28

What this MCP does

Queries UK parliamentary, election, police crime, ONS statistical, bank holiday, and National Archives data.

bank-holidays-list-ae1
List UK bank holidays for a specific division (England and Wales, Scotland, or Northern Ireland). Optionally filter by year. Returns holiday title, date, notes, and bunting status.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['division'], 'properties': {'year': {'type': 'integer', 'description': 'Filter to a specific year (e.g. 2025). Returns all years if omitted.'}, 'division': {'enum': ['england-and-wales', 'scotland', 'northern-ireland'], 'type': 'string', 'description': "UK division: 'england-and-wales', 'scotland', or 'northern-ireland'."}}}
bank-holidays-next-ae1
Get the next upcoming bank holiday(s) for a UK division (England and Wales, Scotland, or Northern Ireland). Returns the next 1 holiday by default, up to 10.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['division'], 'properties': {'count': {'type': 'integer', 'default': 1, 'maximum': 10, 'minimum': 1, 'description': 'Number of upcoming bank holidays to return (default 1, max 10).'}, 'division': {'enum': ['england-and-wales', 'scotland', 'northern-ireland'], 'type': 'string', 'description': "UK division: 'england-and-wales', 'scotland', or 'northern-ireland'."}}}
ec-get-election-b3f
Get detailed information about a specific UK election by its election ID. Returns election type, date, organisation, child elections, voting system, and whether voter ID is required.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['election_id'], 'properties': {'election_id': {'type': 'string', 'description': "Election ID (e.g. 'local.2023-04-20', 'parl.2024-07-04', 'local.hackney.2022-05-05')."}}}
ec-get-parl-result-b3f
Get detailed results for a specific UK parliamentary election in a constituency. Returns full candidate list with names, parties, vote counts, plus electorate size, turnout, and majority.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['result_id'], 'properties': {'result_id': {'type': 'string', 'description': "Parliament election result ID (e.g. '382387')."}}}
ec-search-ballots-b3f
Search UK election ballots from the Democracy Club candidates database. Ballots represent a specific vote in a ward or constituency. Returns ballot paper IDs, candidates, wards, winner count, voting system, and results where available.
Read only Idempotent
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results (default 20).'}, 'election_id': {'type': 'string', 'description': "Filter ballots by election ID (e.g. 'local.2023-04-20')."}}}
ec-search-elections-b3f
Search UK elections from the Democracy Club database. Filter by election type (local, parliamentary, mayoral, etc.) and whether the election is current/upcoming. Returns election IDs, titles, dates, and organisation details.
Read only Idempotent
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results (default 20).'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number of results to skip for pagination (default 0).'}, 'current': {'type': 'boolean', 'description': 'If true, only return current/upcoming elections.'}, 'election_type': {'type': 'string', 'description': "Filter by election type: 'local', 'parl' (parliamentary), 'mayor', 'pcc' (police & crime commissioner), 'senedd', 'sp' (Scottish Parliament), 'gla' (Greater London Assembly), 'nia' (Northern Ireland Assembly)."}}}
ec-search-parl-results-b3f
Search UK parliamentary election results from the Parliament data API. Returns constituency results including electorate size, turnout, majority, and the overall result (e.g. 'Lab Hold', 'Con Gain from Lab'). Use the result ID with the get_parl_result tool for candidate vote counts.
Read only Idempotent
Input schema
{'type': 'object', 'required': [], 'properties': {'page': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Page number (0-indexed, default 0).'}, 'page_size': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Results per page (default 10, max 50).'}}}
nomis-query-dataset-af0
Query a specific Nomis dataset with filters for geography, time period, variable, and measure type. Returns statistical observations with values and metadata. Search datasets by keyword first to discover dataset IDs and dimension codes.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['dataset_id'], 'properties': {'age': {'type': 'string', 'description': 'Age group code (dataset-specific).'}, 'sex': {'type': 'string', 'description': "Sex filter: '5' (male), '6' (female), '7' (all)."}, 'time': {'type': 'string', 'description': "Time period. Use 'latest' for most recent, or specific periods like '2024-01', '2023'. Multiple values can be comma-separated."}, 'measures': {'type': 'string', 'description': "Measure type. Common values: '20100' (value/count), '20599' (percentage/variable), '20701' (confidence interval)."}, 'variable': {'type': 'string', 'description': "Variable code for what to measure (dataset-specific). E.g. '45' = Employment rate aged 16-64 in APS. Search datasets by keyword first to discover dataset IDs and dimension codes."}, 'geography': {'type': 'string', 'description': "Geography code. Common values: '2092957699' (England), '2013265925' (Great Britain), '2092957697' (United Kingdom). Multiple values can be comma-separated."}, 'dataset_id': {'type': 'string', 'description': "Dataset ID from search results (e.g. 'NM_17_5' for Annual Population Survey percentages, 'NM_1_1' for JSA claimants, 'NM_2010_1' for earnings)."}}}
nomis-search-datasets-af0
Search available ONS Nomis datasets by keyword. Returns dataset IDs, names, descriptions, and metadata. Use a dataset ID returned from dataset search (e.g. 'NM_17_5') when querying observations. Covers employment, unemployment, population, earnings, benefits, and economic activity.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['search'], 'properties': {'search': {'type': 'string', 'description': "Keyword to search datasets (e.g. 'employment', 'population', 'earnings', 'unemployment', 'benefits')."}}}
ons-get-dataset-5b5
Get detailed metadata for a specific ONS dataset by its ID. Returns title, description, contacts, methodology links, release frequency, and links to editions and latest version.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['dataset_id'], 'properties': {'dataset_id': {'type': 'string', 'description': "Dataset identifier. Use a dataset ID from keyword search or dataset metadata (e.g. 'wellbeing-quarterly', 'cpih01', 'mid-year-pop-est')."}}}
ons-get-dataset-6f5
Get detailed metadata for a specific ONS dataset by its ID. Returns the dataset title, description, contacts, methodologies, related datasets, release frequency, and links to editions and the latest version.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['dataset_id'], 'properties': {'dataset_id': {'type': 'string', 'description': "Dataset identifier (e.g. 'cpih01', 'mid-year-pop-est', 'wellbeing-quarterly')"}}}
ons-get-observations-6f5
Get data observations from a specific ONS dataset version. Requires dimension filters as a query string — all dimensions must be specified. List versions for the dataset edition to see available dimensions, then follow dimension option links to discover valid filter codes. Example dimension_filters: 'time=Jan-26&geography=K02000001&aggregate=cpih1dim1A0'.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['dataset_id', 'edition', 'version', 'dimension_filters'], 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 10000, 'minimum': 1, 'description': 'Maximum number of observations to return'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number of observations to skip'}, 'edition': {'type': 'string', 'description': "Edition name (e.g. 'time-series')"}, 'version': {'type': 'string', 'description': "Version number or 'latest' (e.g. '67', 'latest')"}, 'dataset_id': {'type': 'string', 'description': "Dataset identifier (e.g. 'cpih01')"}, 'dimension_filters': {'type': 'string', 'description': "URL query string of dimension filters. All dimensions of the dataset must be included. List versions for the dataset edition to see available dimensions, then follow dimension option links to discover valid filter codes. Example: 'time=Jan-26&geography=K02000001&aggregate=cpih1dim1A0'"}}}
ons-list-datasets-6f5
List available datasets from the UK Office for National Statistics. Returns dataset IDs, titles, descriptions, and links to editions. Use this to discover what statistical datasets are available (e.g. CPIH inflation, GDP, population estimates).
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of datasets to return (max 100)'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number of items to skip (for pagination)'}}}
ons-list-editions-5b5
List available editions for a specific ONS dataset. Each edition represents a version track (e.g. 'time-series'). Returns edition names with links to their versions.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['dataset_id'], 'properties': {'dataset_id': {'type': 'string', 'description': "Dataset identifier. Use a dataset ID from keyword search or dataset metadata (e.g. 'wellbeing-quarterly', 'cpih01', 'mid-year-pop-est'). Search ONS content by keyword first to discover dataset IDs."}}}
ons-list-editions-6f5
List available editions of an ONS dataset. Most datasets have a single 'time-series' edition. Returns edition names and links to their versions.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['dataset_id'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of editions to return'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number of items to skip'}, 'dataset_id': {'type': 'string', 'description': "Dataset identifier (e.g. 'cpih01')"}}}
ons-list-versions-6f5
List versions of a specific ONS dataset edition. Each version is a numbered data release. The highest version number is the most recent. Returns version numbers, dimensions, download links, and release dates.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['dataset_id', 'edition'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of versions to return'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number of items to skip'}, 'edition': {'type': 'string', 'description': "Edition name (typically 'time-series')"}, 'dataset_id': {'type': 'string', 'description': "Dataset identifier (e.g. 'cpih01')"}}}
ons-search-6f5
Search the Office for National Statistics for datasets, bulletins, articles, and time series. Returns matching content with titles, descriptions, and links. Use the content_type filter to narrow results to specific types (e.g. 'dataset' for only datasets).
Read only
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of results to return'}, 'query': {'type': 'string', 'description': "Search query (e.g. 'inflation', 'GDP', 'population')"}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number of results to skip'}, 'content_type': {'type': 'string', 'description': "Filter by content type. Options include: 'dataset', 'dataset_landing_page', 'bulletin', 'article', 'timeseries', 'release', 'static_adhoc'"}}}
ons-search-datasets-5b5
Search the Office for National Statistics for datasets and content by keyword. Returns matching datasets, articles, and bulletins with titles, descriptions, and links.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of results (default 10, max 50).'}, 'query': {'type': 'string', 'description': "Search query (e.g. 'population', 'housing', 'inflation', 'employment')."}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number of results to skip for pagination (default 0).'}}}
parl-get-member-360
Get full details for one UK Parliament member by ID: names, party, house membership, and thumbnail URL.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['member_id'], 'properties': {'member_id': {'type': 'integer', 'description': 'Parliament member ID (from search or external references).'}}}
parl-get-member-synopsis-360
Get the official plain-language synopsis for a member (HTML string with links). Use after resolving an ID via member search.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['member_id'], 'properties': {'member_id': {'type': 'integer', 'description': 'Parliament member ID.'}}}
parl-search-constituencies-360
Search UK Westminster constituencies by name. Results may include current MP representation where available.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['search_text'], 'properties': {'skip': {'type': 'integer', 'default': 0, 'description': 'Number of results to skip for pagination (default 0).'}, 'take': {'type': 'integer', 'default': 5, 'description': 'Page size (default 5, max 20).'}, 'search_text': {'type': 'string', 'description': 'Constituency name or fragment to search.'}}}
parl-search-members-360
Search UK Parliament members (Commons and Lords) by name. Returns a paginated list with party, house, and membership status.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Name text to search (e.g. surname or full name).'}, 'skip': {'type': 'integer', 'default': 0, 'description': 'Number of results to skip for pagination (default 0).'}, 'take': {'type': 'integer', 'default': 5, 'description': 'Page size (default 5, max 20).'}}}
tna-get-archive-7d6
Retrieve detailed information for a specific archive, library, or repository from the ARCHON directory. Returns contact details (address, phone, email, website), opening hours, access requirements, disabled access information, and a list of record collections held. Use the 'id' field from archive search results.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['archive_id'], 'properties': {'archive_id': {'type': 'string', 'description': "Archive/repository ID (e.g. 'A13532670'). Use the 'id' field from archive search results."}}}
tna-get-record-7d6
Retrieve detailed metadata for a specific record from The National Archives catalogue. Returns extended information including scope and content, legal status, creator names, citable reference, related material, and access conditions. Use the record 'id' field (e.g. 'C7394009') from search results.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['record_id'], 'properties': {'record_id': {'type': 'string', 'description': "Record ID from the catalogue (e.g. 'C7394009'). Use the 'id' field from search results."}}}
tna-search-archives-7d6
Search the ARCHON directory of 2,500+ archives, libraries, museums, and repositories across the UK. Returns repository names, addresses, and identifiers. Use the repository 'id' from results with the get_archive tool for full contact details, opening hours, and access information.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'page': {'type': 'integer', 'default': 1, 'maximum': 1000, 'minimum': 1, 'description': 'Page number (1-indexed).'}, 'query': {'type': 'string', 'description': "Search query for archives and repositories (e.g. 'london', 'university', 'military')."}, 'page_size': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of results per page (1-100).'}}}
tna-search-records-7d6
Search The National Archives Discovery catalogue for archival records. Covers 32+ million record descriptions spanning 1,000+ years of UK government and public records. Supports filtering by date range and department. Returns records with titles, references, dates, descriptions, and holding institutions.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'page': {'type': 'integer', 'default': 1, 'maximum': 1000, 'minimum': 1, 'description': 'Page number (1-indexed).'}, 'query': {'type': 'string', 'description': "Search query for archive records (e.g. 'world war', 'magna carta', 'census 1841')."}, 'date_to': {'type': 'string', 'description': "End date filter in YYYY-MM-DD format (e.g. '1918-12-31')."}, 'date_from': {'type': 'string', 'description': "Start date filter in YYYY-MM-DD format (e.g. '1914-01-01')."}, 'page_size': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of results per page (1-100).'}, 'department': {'type': 'string', 'description': "Filter by archive department code (e.g. 'WO' for War Office, 'FO' for Foreign Office, 'HO' for Home Office)."}}}
uk-police-crime-categories-5fa
List all valid crime categories used in UK Police crime data. Returns the canonical set of crime category identifiers and their human-readable names (e.g. 'anti-social-behaviour', 'burglary', 'violent-crime'). Use these identifiers to filter street-level crime queries.
Read only Idempotent
Input schema
{'type': 'object', 'required': [], 'properties': {'date': {'type': 'string', 'description': 'Month in YYYY-MM format to get categories for. Omit for the latest available.'}}}
uk-police-crimes-at-location-5fa
Retrieve all crimes at a specific named location by its location ID. Use a location_id obtained from street-level crime results (the street.id field) to get all crimes snapped to that same anonymous map point.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['location_id'], 'properties': {'date': {'type': 'string', 'description': 'Month to query in YYYY-MM format (e.g. 2024-01)'}, 'location_id': {'type': 'integer', 'description': 'Location ID from street-level crime data (the street.id field)'}}}
uk-police-get-force-5fa
Get detailed information about a specific police force. Returns the force's name, description, website URL, telephone number, and engagement methods (social media, RSS feeds, etc.). Use a force_id from the list forces tool.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['force_id'], 'properties': {'force_id': {'type': 'string', 'description': "Force identifier (e.g. 'leicestershire', 'metropolitan', 'city-of-london')"}}}
uk-police-list-forces-5fa
List all territorial police forces in England, Wales, and Northern Ireland. Returns each force's ID and name. Use the force ID with the force details tool to get contact information, engagement methods, and other metadata.
Read only Idempotent
Input schema
{'type': 'object', 'required': [], 'properties': {}}
uk-police-outcomes-at-location-5fa
Retrieve crime outcomes near a geographic location for a given month. Returns outcome/resolution data for crimes including the outcome category (e.g. 'Investigation complete; no suspect identified', 'Offender given a caution'), date, and the associated crime details.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude of the location to search around'}, 'lng': {'type': 'number', 'description': 'Longitude of the location to search around'}, 'date': {'type': 'string', 'description': 'Month to query in YYYY-MM format (e.g. 2024-01)'}}}
uk-police-stop-and-search-5fa
Search stop and search records near a geographic location for a given month. Returns data on police stop-and-search encounters including the person's age range, gender, ethnicity, the object of search, outcome, and whether clothing removal was required. Not all forces provide stop-and-search data.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude of the location to search around'}, 'lng': {'type': 'number', 'description': 'Longitude of the location to search around'}, 'date': {'type': 'string', 'description': 'Month to query in YYYY-MM format (e.g. 2024-01)'}}}
uk-police-street-crimes-5fa
Search street-level crime reports near a geographic location for a given month. Returns anonymised crime data snapped to nearby street points, including crime category, location details, outcome status, and month. Coordinates are for England, Wales, and Northern Ireland. High-crime areas may return thousands of records. Use a specific date and category to narrow results.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude of the location to search around'}, 'lng': {'type': 'number', 'description': 'Longitude of the location to search around'}, 'date': {'type': 'string', 'description': 'Month to query in YYYY-MM format (e.g. 2024-01). Data lags ~2 months.'}, 'category': {'type': 'string', 'description': "Crime category filter (e.g. 'burglary', 'violent-crime'). Omit for all crimes."}}}
Added
ons-get-observations-6f5
Sept. 17, 2026, 12:36 p.m.
Added
nomis-query-dataset-af0
Sept. 17, 2026, 12:36 p.m.
Added
nomis-search-datasets-af0
Sept. 17, 2026, 12:36 p.m.
Added
ons-get-dataset-5b5
Sept. 17, 2026, 12:36 p.m.
Added
ons-list-editions-5b5
Sept. 17, 2026, 12:36 p.m.
Added
bank-holidays-list-ae1
Sept. 17, 2026, 12:36 p.m.
Added
bank-holidays-next-ae1
Sept. 17, 2026, 12:36 p.m.
Added
ec-search-ballots-b3f
Sept. 17, 2026, 12:36 p.m.
Added
ec-search-parl-results-b3f
Sept. 17, 2026, 12:36 p.m.
Added
ec-search-elections-b3f
Sept. 17, 2026, 12:36 p.m.
Added
ec-get-election-b3f
Sept. 17, 2026, 12:36 p.m.
Added
ec-get-parl-result-b3f
Sept. 17, 2026, 12:36 p.m.
Added
ons-get-dataset-6f5
Sept. 17, 2026, 12:36 p.m.
Added
ons-list-editions-6f5
Sept. 17, 2026, 12:36 p.m.
Added
ons-search-6f5
Sept. 17, 2026, 12:36 p.m.
Added
ons-list-versions-6f5
Sept. 17, 2026, 12:36 p.m.
Added
ons-list-datasets-6f5
Sept. 17, 2026, 12:36 p.m.
Added
ons-search-datasets-5b5
Sept. 17, 2026, 12:36 p.m.
Added
tna-get-archive-7d6
Sept. 17, 2026, 12:36 p.m.
Added
tna-search-archives-7d6
Sept. 17, 2026, 12:36 p.m.
Added
tna-search-records-7d6
Sept. 17, 2026, 12:36 p.m.
Added
tna-get-record-7d6
Sept. 17, 2026, 12:36 p.m.
Added
uk-police-list-forces-5fa
Sept. 17, 2026, 12:36 p.m.
Added
uk-police-get-force-5fa
Sept. 17, 2026, 12:36 p.m.
Added
uk-police-crimes-at-location-5fa
Sept. 17, 2026, 12:36 p.m.
Added
uk-police-crime-categories-5fa
Sept. 17, 2026, 12:36 p.m.
Added
uk-police-street-crimes-5fa
Sept. 17, 2026, 12:36 p.m.
Added
uk-police-stop-and-search-5fa
Sept. 17, 2026, 12:36 p.m.
Added
uk-police-outcomes-at-location-5fa
Sept. 17, 2026, 12:36 p.m.
Added
parl-get-member-360
Sept. 17, 2026, 12:36 p.m.