Skip to main content
Glama

Server Quality Checklist

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

  • Disambiguation5/5

    Each tool targets a distinct phase in the workflow: scanning, dashboard review, previewing fix commands, and executing fixes. There is no meaningful overlap between the tools.

    Naming Consistency5/5

    All tool names follow the same snake_case verb_noun pattern: scan_project, open_dashboard, get_fix_commands, apply_fixes. The naming is predictable and clearly signals the action being performed.

    Tool Count5/5

    Four tools is well-scoped for a focused vulnerability scanning and remediation workflow. Each tool serves a necessary step with no redundant or extraneous tools.

    Completeness5/5

    The tools cover the full lifecycle from scanning a project, reviewing results in the dashboard, previewing safe fix commands, and applying fixes. No obvious gaps exist for the stated purpose.

  • Average 4.4/5 across 4 of 4 tools scored.

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

    • No community issues in the last 6 months
    • 6 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
  • 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.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

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

  • 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 the critical non-execution behavior upfront ('WITHOUT executing them') and clarifies that the output is a list of commands, implying no side effects. It could add more context (e.g., whether network access or dependency installation is needed), but the key safety-relevant trait is well covered.

    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 with no filler. The key differentiator ('WITHOUT executing them') is front-loaded, followed by the usage context and the return-summary grouping. Every clause earns its place.

    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 moderate complexity (3 params, no output schema), the description adequately covers what the tool returns (grouped commands), when to use it (before apply_fixes), and the critical no-execution guarantee. It could mention edge cases like empty results or required project discovery details, but for a preview/list tool this is sufficient.

    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 has 100% description coverage for all three parameters, so the description need not restate them. The schema already explains path, packages (optional filter), and severity_filter (default all). The description adds no parameter-level meaning beyond what the schema provides, which matches the baseline of 3 for complete schema coverage.

    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 ('Get') and a precise resource ('safe upgrade commands for vulnerable packages'), then immediately distinguishes the tool from its likely sibling apply_fixes by stating 'WITHOUT executing them'. It also names the grouped-by-ecosystem output, so an agent can clearly identify the tool's role in the workflow.

    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 tells the agent when to use this tool ('Use this to show the user what will be changed before calling apply_fixes'), naming the alternative and the sequencing. It does not address scan_project or open_dashboard, but the main decision point between preview and execution is clearly covered.

    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 of behavioral disclosure. It clearly states the tool scans the project, auto-detects multiple manifest formats, queries live OSV.dev data, and returns a structured vulnerability report with severity counts, risk score, and fix recommendations. It does not explicitly state whether the scan modifies files, which would be useful for a tool that may be followed by apply_fixes.

    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 three focused sentences. The first states the core action, the second lists capabilities and data source, and the third gives usage ordering. Every sentence earns its place with no repetition or filler.

    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 tool with no output schema and no annotations, the description provides a solid high-level picture: input is a project directory, it detects manifests, queries OSV.dev, and returns a structured report with specific components. It lacks an explicit statement about side effects or network requirements, but the visible detail is sufficient for an agent to call it correctly as a first step.

    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 of the three parameters, so the baseline for value-add is 3. The description reinforces that path refers to a project directory and mentions OSV.dev, which relates to the offline parameter, but it adds no parameter-level detail beyond the schema.

    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 has a specific verb and resource: 'Scan a project directory for CVE vulnerabilities.' It also differentiates itself from siblings by stating this is the first step before open_dashboard or apply_fixes. The tool's role as a scanner that produces a report is unmistakable.

    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 tells the agent when to use this tool: 'Use this as the first step before open_dashboard or apply_fixes.' This names alternatives and establishes context. However, it does not mention when not to use it or describe any exclusions for the sibling get_fix_commands, so it falls just 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?

    With no annotations provided, the description carries the full burden and adds valuable behavioral context: it discloses that this launches a browser dashboard for human review, returns a URL, and handles existing instances by returning the existing URL if already running. However, it doesn't mention potential side effects like opening browser tabs or resource usage.

    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 front-loaded with the core purpose, followed by workflow guidance and behavioral details, all in three efficient sentences with zero wasted words, making it easy for an agent to parse quickly.

    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 no annotations and no output schema, the description does well by explaining the tool's purpose, usage context, and return value (URL). However, it lacks details on error handling or what happens if the path is invalid, leaving minor gaps in completeness for a tool with two parameters.

    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 both parameters (path and port). The description adds no additional parameter semantics beyond what's in the schema, such as format examples or constraints, meeting the baseline score of 3.

    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 specific action ('Launch the osv-ui visual dashboard in the browser') and resource ('for human review'), distinguishing it from siblings like apply_fixes, get_fix_commands, and scan_project by emphasizing it's the 'HUMAN-IN-THE-LOOP step' for review before applying fixes.

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

    Usage Guidelines5/5

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

    It provides explicit guidance on when to use this tool ('always offer this before applying fixes') and distinguishes it from alternatives by positioning it as a prerequisite step to apply_fixes, with clear context about its role in the workflow.

    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 explicitly states this is a 'DESTRUCTIVE action that modifies package files,' which is crucial for a mutation tool. It also describes the return behavior ('Returns the command output for each fix applied') and includes a safety note about user confirmation.

    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 front-loaded with the core purpose, followed by critical warnings and usage guidelines. Every sentence adds value: the first states the action, the second highlights destructiveness and prerequisites, and the third explains the return. There is no wasted text.

    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 destructive tool with no annotations and no output schema, the description is largely complete: it covers purpose, behavioral risks, usage workflow, and return format. However, it could slightly enhance completeness by mentioning potential side effects (e.g., system downtime) or error handling, though the current level is adequate given the schema coverage.

    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 parameters. The description does not add specific meaning beyond the schema (e.g., it doesn't elaborate on 'path' or 'packages' formats). However, it reinforces the importance of explicit packages ('Must be explicit — never fix all without user confirmation'), which aligns with but doesn't exceed schema guidance.

    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 specific action ('Execute package upgrade commands') and resource ('to fix CVEs'), distinguishing it from siblings like 'get_fix_commands' (which only retrieves commands) and 'scan_project' (which only identifies issues). It goes beyond the tool name 'apply_fixes' by specifying the exact mechanism.

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

    Usage Guidelines5/5

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

    Explicit guidance is provided: 'ALWAYS call get_fix_commands first and confirm with the user before calling this.' This directly addresses when to use this tool versus the sibling 'get_fix_commands' and includes a prerequisite workflow. The description also implies when not to use it (e.g., without confirmation).

    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

osv-ui MCP server

Copy to your README.md:

Score Badge

osv-ui 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/toan203/osv-ui'

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