Hong Kong Health Data MCP Server
Server Quality Checklist
Latest release: v0.1.3
- Disambiguation5/5
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.
Naming Consistency4/5The 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.
Tool Count5/5With 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.
Completeness4/5The 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.
Average 3.8/5 across 3 of 3 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 1 commit in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters3/5Does 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.
Purpose5/5Does 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.
Usage Guidelines4/5Does 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.
- Behavior2/5
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.
Conciseness5/5Is 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.
Completeness4/5Given 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.
Parameters3/5Does 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.
Purpose5/5Does 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.
Usage Guidelines4/5Does 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.
- Behavior3/5
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.
Conciseness5/5Is 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.
Completeness5/5Given 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.
Parameters3/5Does 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.
Purpose5/5Does 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.
Usage Guidelines3/5Does 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.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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