UK Civic & Parliamentary Data MCP Server from MCPBundles
What this MCP does
Queries UK parliamentary, election, police crime, ONS statistical, bank holiday, and National Archives data.
Tools
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'."}}}
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'."}}}
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')."}}}
Input schema
{'type': 'object', 'required': ['result_id'], 'properties': {'result_id': {'type': 'string', 'description': "Parliament election result ID (e.g. '382387')."}}}
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')."}}}
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)."}}}
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).'}}}
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)."}}}
Input schema
{'type': 'object', 'required': ['search'], 'properties': {'search': {'type': 'string', 'description': "Keyword to search datasets (e.g. 'employment', 'population', 'earnings', 'unemployment', 'benefits')."}}}
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')."}}}
Input schema
{'type': 'object', 'required': ['dataset_id'], 'properties': {'dataset_id': {'type': 'string', 'description': "Dataset identifier (e.g. 'cpih01', 'mid-year-pop-est', 'wellbeing-quarterly')"}}}
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'"}}}
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)'}}}
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."}}}
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')"}}}
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')"}}}
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'"}}}
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).'}}}
Input schema
{'type': 'object', 'required': ['member_id'], 'properties': {'member_id': {'type': 'integer', 'description': 'Parliament member ID (from search or external references).'}}}
Input schema
{'type': 'object', 'required': ['member_id'], 'properties': {'member_id': {'type': 'integer', 'description': 'Parliament member ID.'}}}
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.'}}}
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).'}}}
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."}}}
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."}}}
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).'}}}
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)."}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'date': {'type': 'string', 'description': 'Month in YYYY-MM format to get categories for. Omit for the latest available.'}}}
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)'}}}
Input schema
{'type': 'object', 'required': ['force_id'], 'properties': {'force_id': {'type': 'string', 'description': "Force identifier (e.g. 'leicestershire', 'metropolitan', 'city-of-london')"}}}
Input schema
{'type': 'object', 'required': [], 'properties': {}}
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)'}}}
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)'}}}
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."}}}
Recent tool changes
Similar MCP servers
LiveDataLink
Exposes public-data tools covering economics, labor, banking, transport, books, legal opinions, carriers, environmental data, and…
Stratalize Healthcare
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Governance
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Oracle
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Real Estate
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Crypto & DeFi
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Valuein — SEC EDGAR Fundamentals & Smart-Money Data
Provides point-in-time SEC EDGAR fundamentals, filings, ownership signals, financial analysis, valuation models, research reports…
equibles
Provides equity and market research tools covering SEC filings, company financials, portfolios, prices, options, macroeconomic da…