Hong Kong Health Data MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Hong Kong Health Data MCP Servercurrent A&E waiting times at Queen Mary Hospital"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Hong Kong Health Data MCP Server
This is an MCP server that provides access to health related data in Hong Kong through a FastMCP interface.
Features
Get current Accident and Emergency Department waiting times by hospital in Hong Kong
Get current waiting times for new case bookings for specialist outpatient services by specialty and cluster in Hong Kong
Get average number of general outpatient clinic quotas for the preceding 4 weeks across 18 districts in Hong Kong
Related MCP server: MCP Medical Appointments Demo
Examples
As a news reporter, you are interested in knowing the current waiting times at hospitals in Hong Kong. Please remind the audience not to abuse the service. Report in Chinese.
As a healthcare professional, you need to check the current waiting times for specialist outpatient services in different clusters to advise patients on the best options for timely care.
Data Source
Hong Kong Hospital Authority
Setup
Clone this repository
Install Python dependencies:
pip install -r requirements.txtRun the server:
python server.py
Running Options
Default stdio mode:
python server.pySSE mode (port 8000):
python server.py --sse
Cline Integration
To connect this MCP server to Cline using stdio:
Add this configuration to your Cline MCP settings (cline_mcp_settings.json):
{
"hk-health": {
"disabled": false,
"timeout": 3,
"type": "stdio",
"command": "uvx",
"args": [
"hkopenai.hk-health-mcp-server"
]
}
}Testing
Tests are available in the tests/ directory. Run with:
pytestAvailable Tools
3 toolsget_aed_waiting_timesA
Get current Accident and Emergency Department waiting times by hospital in Hong Kong
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language (en/tc/sc) English, Traditional Chinese, Simplified Chinese. Default English | en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the only source of behavioral context. It notes 'current' waiting times, indicating real-time data, but provides no details about update frequency, rate limits, or response format. This is minimal but sufficient for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the verb, resource, and scope without any redundant words. It is concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple tool with one optional parameter and an output schema. The description covers purpose and scope completely; no additional context about return values or prerequisites is necessary for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the only parameter 'lang' with an enum, default, and description, covering 100% of parameters. The tool description adds no extra parameter details, so the schema carries the full semantic burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get', the resource 'Accident and Emergency Department waiting times', and the geographic scope 'by hospital in Hong Kong'. This distinctly separates it from sibling tools like get_specialist_waiting_times, which focus on specialist waits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only states what the tool does; it does not explicitly mention when to use it or compare with alternatives. While the purpose implies usage for AED wait times, no direct guidance is given about when not to use it or when to prefer sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pas_gopc_avg_quotaA
Get average number of general outpatient clinic quotas for the preceding 4 weeks across 18 districts in Hong Kong
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language (en/tc/sc) English, Traditional Chinese, Simplified Chinese. Default English | en |
| district | No | Optional: Filter by district name (e.g., 'Tuen Mun'). If not provided, data for all districts will be returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states what the tool gets but does not disclose behavioral details such as how averages are computed, data freshness, pagination behavior, or response structure. For a read operation, key expectations like return format are omitted, leaving the agent with limited understanding of side effects or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It efficiently communicates the tool's core action, metric, time window, and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no required fields, output schema present), the description covers the essential context: what metric is returned, the time window, and geographic scope. It does not explain return value structure, but the output schema covers that. Minor gap: it does not clarify whether the average is per district or overall, though 'across 18 districts' suggests district-level data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters (lang, district) fully described in the schema. The tool description adds no parameter-specific meaning beyond what the schema already provides (e.g., it mentions '18 districts' but does not link to the district parameter explicitly). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly identifies the resource ('average number of general outpatient clinic quotas') with temporal and geographic scope (preceding 4 weeks, 18 districts in Hong Kong). This distinguishes it from sibling tools like get_aed_waiting_times and get_specialist_waiting_times.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this tool is for average GOPC quotas over a 4-week period, which implies use when needing that specific metric. However, it does not explicitly state when not to use it or mention alternatives (e.g., 'use this instead of waiting times tools'). The absence of exclusions keeps it slightly below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_specialist_waiting_timesA
Get current waiting times for new case bookings for specialist outpatient services by specialty and cluster in Hong Kong
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language (en/tc/sc) English, Traditional Chinese, Simplified Chinese. Default English | en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It only states what data is retrieved and does not mention side effects, data update frequency, pagination, or any limitations. The verb "Get" implies read-only, but no explicit behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that immediately communicates the tool's purpose and scope. Every word contributes to understanding, with no redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an output schema, the description is largely sufficient. It clearly states the domain (specialist outpatient), the booking type (new case), and the geographic scope (Hong Kong). The only minor gap is the mention of "by specialty and cluster" without a parameter to filter them, which could be ambiguous, though the schema clarifies that only language is configurable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'lang' is fully documented in the schema with an enum and default, achieving 100% coverage. The description does not add any extra semantics or usage details about the parameter, so it meets the baseline but provides no additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb "Get" and clearly identifies the resource: "waiting times for new case bookings for specialist outpatient services." It also specifies the scope "by specialty and cluster in Hong Kong," which distinguishes it from sibling tools like get_aed_waiting_times (emergency) and get_pas_gopc_avg_quota (general outpatient).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by specifying it is for "new case bookings for specialist outpatient services," which implies it is not for emergency or general outpatient settings. However, it does not explicitly mention alternatives or exclusions, so it stops short of fully guiding the agent on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct health service resource: AED waiting times, specialist outpatient waiting times, and general outpatient clinic quotas. There is no overlap in purpose or data returned.
The first two tools follow a clear 'get_<service>_waiting_times' pattern, but the third tool deviates with 'get_pas_gopc_avg_quota' using a different structure. Still, all use the 'get_' prefix and are readable.
With only three tools, the server is tightly focused on Hong Kong public health waiting times and quotas. Each tool addresses a distinct data need, making the count well-scoped for its niche purpose.
The server covers the main public waiting time categories: A&E, specialist outpatient, and general outpatient clinics. Minor gaps exist such as private healthcare or specific procedure wait times, but the core domain is reasonably complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server exposing US hospital procedure cost data to AI assistants
Hong Kong Monetary Authority (HKMA) public open API MCP. Keyless.
Hong Kong Census and Statistics Department (C&SD) open-data MCP.
GTA doctor, specialist, clinic, language, availability, and freshness data through REST and MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables access to Hong Kong government's official open data portal (DATA.GOV.HK) through natural language queries. Supports searching datasets, browsing categories, and retrieving detailed information about Hong Kong's public data resources.88MIT
- AlicenseNot gradedqualityDmaintenanceEnables users to manage medical appointments by searching for doctors, checking availability, and booking sessions through a natural language interface. It serves as a reference implementation for advanced MCP features like symptom-based specialist recommendations and multi-step scheduling workflows.10MIT
- AlicenseAqualityCmaintenanceEnables querying of Hong Kong government data on elderly community care services, such as waiting times and applicant counts.11MIT
- AlicenseAqualityCmaintenanceEnables natural language querying of Korean public medical data (data.go.kr) through MCP clients like Claude, providing tools for searching hospitals, drugs, non-payment costs, disease statistics, and more.102MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/hkopenai/hk-health-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server