Skip to main content
Glama
khrnchn

Waktu Solat MCP

by khrnchn

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation4/5

    The four tools have mostly distinct purposes: daily times, monthly times, next prayer, and zone listing. get_prayer_times_today and get_next_prayer have slight overlap since both return today's prayer data, but their intents are clearly different (full schedule vs. nearest upcoming prayer). list_zones is a clear utility/discovery tool.

    Naming Consistency5/5

    All tools follow a consistent get_verb + target noun pattern: get_prayer_times_today, get_prayer_times_month, get_next_prayer, and list_zones. The naming is uniform, snake_case, and predictable throughout.

    Tool Count4/5

    Four tools is a reasonable, focused set for a prayer time domain. There could arguably be a get_zone_details or a between-days range tool, but the count is well-scoped and each tool serves a clear purpose without bloat.

    Completeness4/5

    The core domain is well covered: daily lookup, monthly schedule, next-prayer calculation, and zone discovery. A minor gap exists (no explicit date-range lookup or zone-specific settings/metadata), but agents can accomplish the primary workflows: find prayer times for today/month, determine next prayer, and discover zones.

  • Average 3.2/5 across 4 of 4 tools scored. Lowest: 2.6/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 0 commits 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
  • Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.

    If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.

    MCP servers without a LICENSE cannot be installed.

  • 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.json to 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 for this read operation, so the description carries the full burden of disclosure. It doesn't state whether invalid zone codes cause errors, whether the operation is read-only/safe, what happens with invalid month/year values, or the response format. The zone format hint (JAKIM) is useful but the description lacks broader behavioral clarity.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two brief sentences with no wasted words. The purpose statement and zone format hint are both relevant. It's appropriately compact for its scope.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    There is an output schema, which helps with return-value understanding. Given the modest complexity (3 simple parameters for a read operation), the description covers the core purpose and one key data-format detail. However, it omits error behavior for invalid inputs and does not discuss month/year bounds, making it a minimum-viable but not thorough description.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 0%, so the description must compensate for the three parameters. It only mentions the zone format (JAKIM format with example SGR01), offering no guidance on year/month ranges, constraints, or relationships between parameters. The description adds minimal value beyond what the bare field names imply.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose3/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description states the verb+resource ('Get prayer times') with scope ('for all days in a given month'), which is clear. However, it doesn't explicitly distinguish from siblings like get_prayer_times_today beyond the month scope, though the month phrasing and sibling names make the distinction reasonably inferable.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    No explicit when-to-use guidance is given. The description implies this is for monthly retrieval (vs daily for get_prayer_times_today), but there is no discussion of when to choose one over another or any context about valid zones or required format beyond a single example (SGR01).

    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?

    With no annotations provided, the description carries the full transparency burden. It does disclose the rollover behavior (next day's Fajr/Subuh), which is genuinely useful behavioral detail. However, it doesn't mention what timezone the returned time is in, output format, or any edge cases beyond the rollover. Given this is a read-only lookup, the disclosure is adequate but not rich.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two sentences, zero wasted words. The purpose and the key edge-case behavior are both conveyed efficiently.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool has only one parameter and a simple deterministic behavior, so the description is close to sufficient. However, with an output schema present, the return format is partially covered by the schema, but the zone-format gap and lack of usage guidance vs siblings leave some contextual incompleteness. An output schema exists, reducing the need to explain return values.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 0%, so the description must compensate. The description mentions 'zone' as the input concept but provides no format for it (e.g., what zone strings look like, whether it maps to the sibling list_zones). The single parameter is largely unexplained beyond its name.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the verb+resource: 'Get the next upcoming prayer time for the given zone.' It differentiates from siblings by focusing on the next upcoming prayer rather than a full-day or month listing, though it doesn't explicitly name the sibling alternatives.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description explains the fallback behavior (returns next day's Fajr if all today's prayers passed), which implies when to use this tool versus checking all of today's prayers. However, it doesn't explicitly contrast with get_prayer_times_today or get_prayer_times_month, nor does it mention zone-format requirements.

    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 carries the burden of behavioral disclosure. It's a read/list operation, which is inferable but never stated explicitly. It doesn't describe output format, pagination, or whether an empty/invalid state returns all zones or an error. With zero annotations, more could be disclosed, but the nature is fairly benign.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Two short sentences, front-loaded with the primary purpose. Efficient and easy to scan. Could be slightly more descriptive without bloating, but overall tight and well-structured.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    With an output schema present and a single optional param, this is a simple tool. The description covers the core purpose and the key parameter adequately. However, it's missing the default-when-no-state behavior and doesn't confirm whether all zones are returned when no filter is applied—small but relevant gaps for a lookup tool.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 0% (no param descriptions), so the description must compensate. It does explain the `state` parameter with example codes (SGR, JHR, WLY), which is genuinely useful. However, it doesn't mention the default behavior (whether null returns all zones) or accepted code format beyond the three examples.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Clear verb+resource ('List JAKIM prayer zone codes') with a specific description scope ('with area descriptions'). It distinguishes reasonably from siblings like get_prayer_times_today/month, as it's the only zone-list tool. Doesn't explicitly differentiate but purpose is specific enough.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description notes the optional state filter, implying it's used for filtering/list operations. However, it provides no explicit guidance on when to use this vs alternatives, or when the state filter is needed vs. listing all zones. The state codes (SGR, JHR, WLY) context is helpful but usage boundaries are left implicit.

    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 carries the burden of behavioral disclosure. It does state the return timezone (MYT, UTC+8), which is useful. However, it doesn't disclose what fields the response contains, whether zone validity is checked, or error behavior for invalid zones. The timezone disclosure is genuinely helpful context.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Three sentences, zero waste. Each sentence serves a purpose: defining the scope (today, zone), specifying zone format, and clarifying timezone. Exceptionally tight and front-loaded.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool is simple (1 required param) with an output schema present, so the description doesn't need to explain return format. It covers the zone format and timezone semantics. It's slightly incomplete regarding validation behavior and whether open-ended zones are accepted vs only those from list_zones, but for a single-param tool with output schema this is adequate.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 0%, so the description must compensate for the zone parameter. It does explain the zone format (JAKIM, e.g. SGR01, WLY01) and gives examples, which adds real meaning beyond the schema. However, it doesn't indicate whether the zone must map to a listed zone from list_zones, which would be useful given that sibling tool exists.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the verb+resource (get prayer times for today) and scopes it to 'today' in 'the given zone'. It distinguishes from siblings by highlighting the 'today' scope vs get_prayer_times_month. However, it doesn't explicitly differentiate from get_next_prayer, so it loses a point.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implicitly conveys usage by scoping to 'today' and a specific zone format, which differentiates it from the month tool. However, there are no explicit when-to-use or exclusion statements, nor mention of when get_next_prayer or list_zones would be preferable. The zone code format note (JAKIM) is helpful context.

    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

Waktu Solat MCP MCP server — quality and maintenance score on Glama

Copy to your README.md:

Score Badge

Waktu Solat MCP MCP server — quality and maintenance score on Glama

Copy to your README.md:

shields.io Endpoint

Waktu Solat MCP MCP server — quality and maintenance score on Glama

For READMEs with an existing badge row. Append &style=flat-square (or any other shields.io style) to match the rest, and &metric=tools, &metric=maintenance or &metric=claim to badge a different dimension.

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/khrnchn/waktu-solat-mcp'

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