search_datasets_with_facets
Search Hong Kong government open datasets with faceted filtering to refine results by categories, formats, and other attributes for targeted data discovery.
Instructions
Search for datasets and return faceted results for better data exploration.
Args: query: The solr query string language: Language code (en, tc, sc)
Returns: A dictionary containing: - count: Total number of matching datasets - search_facets: Faceted information about the results - sample_results: First 3 matching datasets
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | *:* | |
| language | No | en |
Implementation Reference
- src/mcp_open_data_hk/server.py:232-266 (handler)The handler function for the 'search_datasets_with_facets' tool. It performs a faceted search on data.gov.hk datasets using the package_search API, returns count, sample results (first 3), and indicates if more results exist. Registered via @mcp.tool decorator.@mcp.tool async def search_datasets_with_facets( query: str = "*:*", language: str = "en" ) -> Dict[str, Any]: """ Search for datasets and return faceted results for better data exploration. Args: query: The solr query string language: Language code (en, tc, sc) Returns: A dictionary containing: - count: Total number of matching datasets - search_facets: Faceted information about the results - sample_results: First 3 matching datasets """ # Using package_search API for search functionality base_url = BASE_URLS.get(language, BASE_URLS["en"]) url = f"{base_url}/package_search" rows = 3 # Number of sample results to return params = {"q": query, "rows": rows, "start": 0, "facet": "true", "facet.limit": 10} result = await make_api_request(url, params) if result.get("success"): search_result = result["result"] return { "count": search_result.get("count", 0), "results": search_result.get("results", []), "has_more": search_result.get("count", 0) > rows, } else: raise Exception(f"API Error: {result.get('error', 'Unknown error')}")
- src/mcp_open_data_hk/server.py:19-30 (helper)Helper function used by the tool to make asynchronous HTTP GET requests to the data.gov.hk API endpoints.async def make_api_request( url: str, params: Optional[Dict[str, Any]] = None ) -> Dict[str, Any]: """Make an API request to data.gov.hk""" async with httpx.AsyncClient() as client: # Print the request for debugging print(f"Making request to {url} with params {params}") response = await client.get(url, params=params) print(f"Response status: {response.status_code}") response.raise_for_status() return response.json()