Skip to main content
Glama
mcp-open-data-hk

Hong Kong Open Data MCP Server

Official

search_datasets

Search Hong Kong government open data portal datasets by query term to find relevant public data resources across titles, descriptions, and metadata.

Instructions

Search for datasets by query term using the package_search API.

This function searches across dataset titles, descriptions, and other metadata to find datasets matching the query term.

Args: query: The solr query string (e.g., "transport", "weather", ":" for all) limit: Maximum number of datasets to return (default: 10, max: 1000) offset: Offset for pagination language: Language code (en, tc, sc)

Returns: A dictionary containing: - count: Total number of matching datasets - results: List of matching datasets (up to limit) - has_more: Boolean indicating if there are more results available

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryNo*:*
limitNo
offsetNo
languageNoen

Implementation Reference

  • The handler function for the 'search_datasets' tool, decorated with @mcp.tool for registration. It searches datasets using the data.gov.hk package_search API, handling query, limit, offset, and language parameters, and returns formatted results with count, results, and has_more flag.
    @mcp.tool async def search_datasets( query: str = "*:*", limit: int = 10, offset: int = 0, language: str = "en" ) -> Dict[str, Any]: """ Search for datasets by query term using the package_search API. This function searches across dataset titles, descriptions, and other metadata to find datasets matching the query term. Args: query: The solr query string (e.g., "transport", "weather", "*:*" for all) limit: Maximum number of datasets to return (default: 10, max: 1000) offset: Offset for pagination language: Language code (en, tc, sc) Returns: A dictionary containing: - count: Total number of matching datasets - results: List of matching datasets (up to limit) - has_more: Boolean indicating if there are more results available """ # Using package_search API for search functionality base_url = BASE_URLS.get(language, BASE_URLS["en"]) url = f"{base_url}/package_search" # Limit the maximum number of results rows = min(limit, 1000) params = {"q": query, "rows": rows, "start": offset} 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) > (offset + rows), } else: raise Exception(f"API Error: {result.get('error', 'Unknown error')}")
  • Helper function used by search_datasets to make HTTP 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()
  • The @mcp.tool decorator registers the search_datasets function as an MCP tool.
    @mcp.tool

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcp-open-data-hk/mcp-open-data-hk'

If you have feedback or need assistance with the MCP directory API, please join our Discord server