Skip to main content
Glama

Server Quality Checklist

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

  • Disambiguation2/5

    The station lookup tools heavily overlap: get-stations-code-in-city and get-station-code-of-citys both map a city to station codes, differing only by 'all stations' vs 'representative station'. get-station-code-by-names and get-station-by-telecode add further lookup variants, making it easy for an agent to select the wrong one.

    Naming Consistency3/5

    All tools use a get- prefix, which provides some consistency, but the station-related names are not parallel: get-stations-code-in-city, get-station-code-of-citys, get-station-code-by-names, and get-station-by-telecode follow inconsistent patterns. The 'citys' typo further reduces naming quality.

    Tool Count4/5

    Eight tools is a reasonable size for a train travel assistant. However, four of those tools are dedicated to station-code lookup, which inflates the count and makes the surface feel slightly heavier than necessary.

    Completeness4/5

    Core workflows are covered: getting the current date, resolving station codes, querying direct tickets, querying transfer tickets, and retrieving train route stops. Minor gaps exist such as no explicit ticket price or train status tool, but agents can likely complete common travel queries.

  • Average 3.6/5 across 8 of 8 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 status not available
  • 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.

  • This repository includes a glama.json configuration file.

  • 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?

    No annotations are provided, so the description must carry the behavioral disclosure burden. It does reveal a key limitation ('尚且只支持查询前十条'), which is not apparent from the schema's unlimited limitedNum parameter. However, it does not describe the return structure, error behavior, or other side-effect profile, so coverage is partial.

    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 only two short sentences with no filler, and the key limitation is included. It could be slightly more informative in the first sentence, but overall it is appropriately concise for a tool whose parameters are well-documented in the schema.

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

    Completeness2/5

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

    This is a 12-parameter tool with no output schema and no annotations, yet the description only states the resource and a ten-result limitation. It omits the return format, how to interpret results, and any relationship to direct-ticket queries. The rich schema mitigates parameter confusion but does not make the overall description 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 description coverage is 100%, so the schema already documents all 12 parameters with meanings and defaults. The description adds no parameter-level detail beyond hinting at an effective ten-result cap, which actually creates slight ambiguity with the unlimited limitedNum field. Baseline 3 is appropriate.

    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 operation ('查询') and resource ('12306中转余票信息'), and the word '中转' distinguishes it from the sibling tool get-tickets, which likely handles direct tickets. However, it does not explicitly name the alternative or state 'use this for transfer searches only,' so it stops short of full sibling differentiation.

    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?

    There is no explicit guidance about when to use this tool versus get-tickets or the station-lookup siblings. The transfer-ticket scope is only implicit in the description and tool name, and no exclusions or alternative conditions are mentioned.

    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, the description carries the full burden of behavioral disclosure. It only mentions the input and query target; it does not state that this is a read-only operation, what happens if a city is not found, how multiple cities are processed, or the structure of the returned data. The addition of '中文' as an input constraint is minor.

    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. It is front-loaded with the query verb and resource, and has no filler. Every word contributes meaning.

    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?

    For a simple one-parameter read tool, the description adequately states what the tool does and what input it expects. However, it does not explain the return value (though the name implies it), nor does it help disambiguate among the sibling tools. With no output schema, some return-format information would improve completeness.

    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?

    The input schema covers 100% of the parameter, including a description and examples. The description adds a small semantic nuance ('中文' Chinese) and the notion that station_code 'represents' the city, but it is mostly redundant with the schema. Baseline 3 is appropriate given high schema coverage.

    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 a specific action (查询/query) on a defined resource (station_code), with an explicit input method (中文城市名/Chinese city name). It is clear on its own, but it does not explicitly distinguish itself from similar siblings like get-station-code-by-names, leaving room for confusion among the closely related tools.

    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 guidance is provided about when to use this tool instead of its siblings. There are no usage conditions, exclusions, or alternative tool references. For example, the description does not explain how this differs from get-station-code-by-names or get-stations-code-in-city.

    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 behavioral burden. The verb '查询' indicates a read-only lookup with no side effects, which is useful baseline information. However, the description does not mention output shape, default result behavior, or quirks beyond what the schema already states.

    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, front-loaded sentence with no filler and no repetition of schema details. It is minimal enough to be scannable, though slightly under-specified for the complexity of the tool.

    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?

    For a 10-parameter tool with no annotations and no output schema, one sentence is thin. The schema covers invocation details well, including required fields and value formats, but the description leaves gaps around return-value structure and when to choose this tool over get-interline-tickets.

    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 100%, so the baseline is 3 even though the description itself adds no parameter-level meaning. The schema descriptions are rich and include relative-date handling, station-code lookup hints, and train-filter flags, so the top-level description does not need to compensate.

    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 a concrete verb and resource: '查询12306余票信息' (query 12306 remaining-ticket information), so the agent can identify this as a ticket-availability lookup. It does not explicitly differentiate itself from the sibling get-interline-tickets, which also searches tickets, so it stops short of full sibling differentiation.

    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?

    There is no guidance about when to use this tool versus get-interline-tickets or the station-lookup tools, nor any exclusions or prerequisites. The intended use is implied by the phrase '余票信息', but the agent is given no explicit selection criteria among the ticket-related siblings.

    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 full behavioral burden. It discloses that the tool is a read-style lookup and that the result is a list containing multiple station entries, but it does not address edge cases like invalid city names, no matching stations, or exact-match behavior.

    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, focused sentence that front-loads the action and scope, then states the result shape. Every part earns its place with no unnecessary detail.

    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?

    For a simple one-parameter read-only lookup with no output schema, the description adequately defines the return value as a list of station names and station_code values. It is slightly limited by not covering no-results or invalid-input behavior, but it is sufficient for basic invocation.

    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?

    The single city parameter is fully documented in the schema with examples, so the schema already provides the needed meaning. The description adds no new semantic information beyond restating that a Chinese city name is used.

    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 a specific verb (查询), resource (all stations in a city), and output (station names and station_code as a list). It is clear on its own, but it does not explicitly distinguish itself from the similarly named sibling get-station-code-of-citys.

    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 guidance is provided about when to use this tool instead of its siblings. With get-station-code-of-citys being nearly identical in name, the agent has no basis for choosing between them.

    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, the description carries the transparency burden; it does state a read-style query behavior and the returned fields. It does not disclose not-found behavior, ordering, or exact-match caveats beyond the word '具体'.

    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?

    One short sentence, front-loaded with the query purpose, with no redundant phrases. It is appropriately terse while still conveying the core operation.

    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?

    For a single-parameter lookup, the tool description plus the schema describes the core call correctly. It lacks an explicit return-shape and empty-result description, but the named output fields and low complexity make it mostly 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 description coverage is 100%, and the parameter description already provides examples and the '|' separator format. The tool description only repeats the 'specific Chinese station names' concept and adds no new 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 verb 查询 and resource (station_code and station name) are specific, and the qualifier '具体的中文车站名' makes it clear this is an exact-name lookup. It is distinguishable from telecode/city siblings, but it does not explicitly name or contrast any sibling, so it stops short of a 5.

    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 implies the tool should be used when the caller has exact Chinese station names. It does not explicitly say when to prefer this over get-station-by-telecode or city-based station-code tools, and it gives no exclusions.

    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. It discloses that the operation is a lookup and lists sample output fields, but it does not describe the exact return structure, error behavior, or any constraints such as case sensitivity. This leaves moderate ambiguity for a tool without an output schema.

    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 concise sentences, with the core behavior in the first sentence and usage context in the second. There is no redundant or filler content.

    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?

    For a simple single-parameter lookup, the description provides enough detail: what the input is, what kind of data is returned, and when to use it. The absence of an output schema is partially mitigated by the sample fields, though the exact response shape is not specified.

    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?

    The schema already provides 100% coverage for the single parameter, including its type and the '3位字母编码' format. The description only reinforces the stationTelecode concept without adding meaningful semantic detail beyond the schema, so the baseline of 3 applies.

    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 states a specific verb (查询), resource (车站 by station_telecode), and expected fields (名称、拼音、所属城市). This distinguishes it from sibling tools that query by name or city, since it is explicitly keyed by telecode.

    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?

    It clearly says this is for cases where the telecode is already known, and for special/debugging use, and notes it is seldom triggered in normal conversation flow. It does not name specific sibling alternatives, but the context is sufficient for selection.

    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?

    No annotations are provided, so the description carries the full behavioral burden. It conveys a read-only query operation ('查询') and explicitly lists the information returned: stations, arrival times, departure times, and dwell times. This is adequate transparency for a simple retrieval tool, though it does not mention failure modes or response formatting.

    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 short, purposeful sentences. The first states the exact query scope and returned fields, and the second gives the practical trigger condition. There is no filler or repetition of schema content.

    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?

    For a low-complexity read tool with thorough schema documentation, the description tells an agent what the tool does and when to use it. The phrase '指定区间' (specified section) is slightly ambiguous because no interval parameter exists in the schema, but the overall picture is sufficient for correct invocation.

    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?

    The input schema already provides 100% coverage, with clear descriptions for trainCode, departDate, and format, including the date-format instruction to call get-current-date. The description itself adds no parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

    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 a specific verb ('查询') and a specific resource ('特定列车车次的...途径车站、到站/出发时间及停留时间'), making the tool's purpose unmistakable. It does not explicitly name a sibling tool it is distinct from, though mentioning 'specific train' separates it from the station-code tools in the sibling list.

    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 an explicit trigger: '当用户询问某趟具体列车的经停站时使用此接口' (use this interface when the user asks about stops for a specific train). It does not provide when-not-to-use guidance or name alternatives such as get-tickets, so it stops short of a 5.

    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?

    No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: the tool is fixed to Shanghai timezone (UTC+8) and returns a string in yyyy-MM-dd format. It could additionally state that it reflects the current server/system clock, but the core behavior is transparent enough.

    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 compact sentences with no fluff. The core action (get current date) and key constraints (timezone, format) are front-loaded, followed by the practical use case. Every sentence earns its place.

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

    Completeness5/5

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

    For a simple zero-parameter tool with no output schema, the description covers return format, timezone, and intended usage context. Nothing essential is missing for an agent to correctly invoke and interpret the tool.

    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?

    There are zero parameters and the schema already documents this with 100% coverage. The description adds no parameter-specific detail, which is unnecessary here. A baseline of 4 is appropriate for a zero-parameter tool.

    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 uses a specific verb (获取/获取当前日期) and resource (current date), and adds precise scope: Shanghai timezone (Asia/Shanghai, UTC+8) and exact return format (yyyy-MM-dd). It is clearly distinct from all sibling tools, which focus on train stations and tickets, leaving no ambiguity about what this tool does.

    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 explicitly states the primary use case: resolving relative date expressions from users (e.g., 'tomorrow', 'next Wednesday') to provide accurate date input. It does not name alternatives or exclusions, but no similar sibling tool exists, so this is sufficient guidance for when to use it.

    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

12306-mcp-test MCP server

Copy to your README.md:

Score Badge

12306-mcp-test 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/DomainTang/12306-mcp-test'

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