Skip to main content
Glama

Server Quality Checklist

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

  • Disambiguation5/5

    Each tool targets a distinct operation: one write (upsert_lab_result), one patient listing (list_known_patients), and three distinct read views (get_labs for all panels, get_critical_values for urgent flags, get_lab_trend for single-analyte time series). No two tools overlap in purpose; the descriptions clearly separate them.

    Naming Consistency5/5

    All tool names follow a consistent snake_case verb_noun pattern: upsert_lab_result, list_known_patients, get_labs, get_critical_values, get_lab_trend. The verbs (upsert, list, get) are appropriate for their actions, and the nouns are descriptive and consistent.

    Tool Count5/5

    Five tools is a well-scoped size for a LIS MCP server. It covers the essential operations—write, patient lookup, general read, critical value alert, and trend analysis—without unnecessary redundancy or overwhelming the agent.

    Completeness4/5

    The tool set covers the core LIS lifecycle: inserting/updating results, retrieving patient panels, accessing critical values, and analyzing trends. The only minor gaps are lack of a delete operation and no granular single-result fetch by ID, but these are likely intentional and not critical for typical workflows.

  • Average 3.9/5 across 5 of 5 tools scored. Lowest: 3.1/5.

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

    • No community issues in the last 6 months
    • 2 commits in the last 12 weeks
    • Last stable release on
    • 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

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden. It discloses core behavioral details: returns a time series with computed metrics (环比变化率 and 30-day slope). However, it does not mention whether the operation is read-only, if any side effects occur, or how window_days affects the output. This is moderate transparency but leaves gaps.

    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?

    The description is a single, information-dense sentence, front-loading the core purpose and immediately adding value with analyte examples. There is no fluff or redundancy; every clause contributes to understanding the tool's output and key parameter.

    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 description explains the tool's primary output and gives an analyte example, which is adequate for initial selection. However, the presence of an output schema mitigates the need to document return values, but the description still lacks details on how window_days affects results and whether any patient-specific constraints exist. Given the tool's moderate complexity, the description is minimally sufficient but not comprehensive.

    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. It provides concrete examples for analyte (scr_umol_L, k_mmol_L), which is helpful, but does not explain patient_id, window_days, or caller. The meaning of window_days (time range filter) is entirely undocumented, leaving the agent guessing. The description only partially covers parameter semantics.

    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 states the tool provides a single-indicator time series with period-over-period change rate and 30-day slope, which clearly identifies its function. It distinguishes itself from siblings like get_labs by focusing on trend analysis rather than raw lab values. However, it lacks an explicit verb like 'retrieve' or 'list', though the intent is unambiguous.

    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 guidance is given on when to use this tool instead of siblings. The description implies it is for trend analysis, but it does not state when not to use it, prerequisites (e.g., lab data availability), or how it differs from get_labs or get_critical_values. The purpose is clear but the usage context is not.

    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?

    The description discloses the key behavioral trait of scanning the most recent sample and returning only when critical thresholds are hit. With no annotations provided, the description carries the full burden, but it does not clarify behaviors such as what happens when no critical value is found, whether it returns all hits or just the first, or whether it operates per patient or globally. This leaves meaningful gaps.

    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?

    The description is a single, compact sentence that front-loads the core purpose ('危急值独立通道') and then specifies the threshold logic. It is efficient, though the opening phrase is somewhat redundant with the tool name and uses domain jargon that may not be self-explanatory to all agents.

    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 description provides essential threshold values and the scanning behavior, and the presence of an output schema removes the need to describe return values. However, it fails to clarify how patient_id scopes the operation, which is a required parameter, and leaves ambiguity about what 'most recent sample' means in a multi-patient context. These gaps make the description only minimally complete for correct invocation.

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

    Parameters1/5

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

    The input schema has 0% description coverage, and the tool description does not explain either parameter. The required patient_id is not mentioned as a filter for which patient's sample to scan, and the caller default is ignored. The description adds no value beyond the schema's bare type/default fields.

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

    Purpose5/5

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

    The description clearly identifies a dedicated critical-values channel that scans the latest lab sample and returns when thresholds are hit (K+>6.5, Hb<60, Ca<1.6). This distinguishes it from sibling tools like get_labs and get_lab_trend, which are general-purpose lab retrieval tools. The verb 'scan' and specific threshold criteria make the tool's purpose unambiguous.

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

    Usage Guidelines4/5

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

    The phrase '危急值独立通道' indicates this is a specialized, separate path for critical-value alerts, which signals when to prefer this tool over general lab-fetching siblings. However, it does not explicitly mention when not to use it or name alternatives, so there is room for more explicit exclusion guidance.

    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?

    There are no annotations, so the description carries the burden. It discloses that it lists patient IDs covered by the dataset, which implies a read-only operation. However, it doesn't detail sorting, deduplication, or pagination behavior, though the output schema may cover return format.

    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?

    The description is a single, concise sentence that immediately states the action, scope, and purpose. Every word earns its place with no redundancy.

    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?

    Given the tool's simplicity (0 parameters) and the presence of an output schema, the description sufficiently explains the tool's purpose and use case. It doesn't need to elaborate on return values, as that is covered by the output schema.

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

    Parameters4/5

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

    The tool has zero parameters, so schema coverage is trivially 100%. The description doesn't need to explain parameters, and by baseline for 0-parameter tools, it gets a 4.

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

    Purpose5/5

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

    The description clearly states '列出本 LIS 数据集覆盖的 patient_id' (list patient_ids covered by this LIS dataset), which is a specific verb+resource. It distinguishes itself from sibling tools like get_labs or get_critical_values by focusing on patient IDs rather than lab results.

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

    Usage Guidelines4/5

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

    The description includes '供联调核对' (for joint debugging/verification), which provides a clear usage context. It doesn't explicitly exclude alternatives, but the purpose is evident and distinct from sibling tools.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden. It discloses key behavioral traits: ascending time order, and the restricted view for 'parent_assistant' (only trend direction and reference range status, no raw values). This adds meaningful transparency beyond the basic action, though it omits details like error handling or auth requirements.

    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?

    The description is two sentences, extremely concise, and front-loaded with the main action. Every sentence serves a purpose: the first states the core function, the second explains an important conditional behavior. No wasted words.

    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?

    Given the tool's complexity (two params, output schema exists), the description covers the essential behavior and the caller-dependent view. It does not mention pagination, sorting beyond ascending, or error cases, but these are likely less critical for a read operation. The output schema presumably details return values, so the description need not repeat them.

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

    Parameters4/5

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

    The schema has no descriptions (0% coverage), so the description must compensate. It significantly clarifies the 'caller' parameter by explaining its effect on the returned data, adding value beyond the schema. The 'patient_id' parameter is implied but not detailed; however, the schema already marks it as required and its purpose is evident.

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

    Purpose5/5

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

    The description clearly states the tool returns all lab panels for a patient in ascending time order, using a specific verb ('返回') and resource ('检验面板'). It also differentiates behavior based on the caller parameter, distinguishing it from sibling tools like get_lab_trend.

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

    Usage Guidelines4/5

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

    The description gives clear context on when to use the tool (to retrieve all lab panels) and specifies a conditional behavior for 'parent_assistant' callers. It does not explicitly mention alternatives or exclusions, but the context is sufficient for basic usage decisions.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior5/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals permission enforcement (FORBIDDEN for non-doctor_assistant), the side effect of setting recommend_reevaluate=true, and the rollback behavior of write_mode=False. This is comprehensive for the tool's core behaviors.

    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?

    The description is brief, with the purpose in the first sentence and key behavioral notes in the second. Every sentence adds value, and the structure is clean.

    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?

    Given that an output schema exists, return values need no explanation. The description covers permission, success side effects, and rollback mode, but lacks guidance on preconditions (e.g., patient existence) and does not reference sibling tools for read alternatives. It's adequate for most usage, but not fully complete.

    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 coverage is 0%, so the description must compensate. It does explain write_mode's rollback behavior and implies caller is permission-tied, but it doesn't describe patient_id or the lab object structure beyond '新增一条检验采样'. Partially compensates but has gaps.

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

    Purpose5/5

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

    The description explicitly states '新增一条检验采样' (add a new lab sample), which clearly identifies the operation as creating/upserting a lab result. It distinguishes from sibling tools by being the only write operation among read/list tools.

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

    Usage Guidelines4/5

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

    The description provides clear context: it specifies that only doctor_assistant has write permissions, implying usage is restricted to that caller. It also explains the rollback mode for validation, but it doesn't explicitly mention alternatives or when not to use. Still, it gives sufficient context for an orchestration layer.

    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

a207-lis-mcp MCP server

Copy to your README.md:

Score Badge

a207-lis-mcp MCP server

Copy to your README.md:

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/ayeyouok/a207-lis-mcp'

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