Security Scanner MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Security Scanner MCP Servercross-validate the alpine:latest image"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Security Scanner MCP Server
Multi-engine container & system vulnerability scanning for AI agents. Wraps Trivy and Grype with cross-engine validation, SBOM generation, and IaC misconfiguration scanning.
Why This Exists
Most security MCP servers wrap a single scanner. This one wraps two — Trivy (Aqua Security) and Grype (Anchore) — and runs them against the same target to surface what each engine catches alone. Different vulnerability databases + different detection logic = broader coverage.
Key differentiator: No other MCP server offers multi-engine cross-validation.
Related MCP server: SAST MCP Server
Features
15 tools covering vulnerability scanning, SBOM generation, IaC checks, and database management
Cross-engine validation — run Trivy + Grype on the same image and see what each catches alone
MIT licensed — no AGPL encumbrance (unlike
@aikidosec/mcp)npm-native — install via
npx, works with Claude Desktop, Cursor, and any MCP clientNo cloud account required — runs locally against Docker daemon or filesystem
Quick Start
🚀 New here? See the Quick Start Guide — get scanning in under 5 minutes.
Prerequisites
Install at least one scanning engine:
# Trivy (recommended)
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
# Grype (for cross-validation)
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/binClaude Desktop / Cursor
Add to your MCP configuration:
{
"mcpServers": {
"security-scanner": {
"command": "npx",
"args": ["-y", "@supernova123/security-scanner-mcp-server"]
}
}
}Standalone
npx @supernova123/security-scanner-mcp-serverTools
# | Tool | Engine | Description |
1 |
| Trivy | Scan Docker image for vulnerabilities |
2 |
| Grype | Same target via Grype (cross-validation) |
3 |
| Trivy | Detailed report with remediation |
4 |
| Trivy | Local dir/file vulnerability + misconfig scan |
5 |
| Grype | Cross-engine filesystem scan |
6 |
| Trivy | Remote git repo scan |
7 |
| Grype | Pull from registry directly (no Docker daemon) |
8 |
| Grype | Single Package URL vulnerability lookup |
9 |
| Trivy | Scan SBOM file for vulnerabilities |
10 |
| Trivy | Generate CycloneDX/SPDX SBOM |
11 |
| Trivy | IaC misconfiguration scan |
12 |
| Both | Run both engines, surface divergence |
13 |
| Grype | Check vulnerability DB status |
14 |
| Grype | Update vulnerability database |
15 |
| Both | Engine version + availability |
Cross-Validation Example
The cross_validate tool runs both Trivy and Grype on the same Docker image and compares results:
{
"combined_summary": {
"total_unique_cves": 47,
"critical": 2,
"high": 8,
"medium": 23,
"low": 14
},
"divergence": {
"only_in_trivy_count": 5,
"only_in_grype_count": 3,
"severity_mismatches": 2,
"only_in_trivy": ["CVE-2023-1234", ...],
"only_in_grype": ["CVE-2023-5678", ...]
},
"insight": "Cross-validation found 5 CVEs only in Trivy and 3 only in Grype. Using both engines gives broader coverage than either alone."
}Competitive Landscape
Package | Engine | License | Weekly Downloads |
| Cloud API | AGPL-3.0 | ~11,800 |
| Trivy + Semgrep | MIT | ~75 |
| Trivy + Grype | MIT | TBD |
| Trivy (Go plugin) | MIT | N/A (not npm) |
| Grype (Python) | Apache-2.0 | N/A (not npm) |
Development
git clone https://github.com/friendlygeorge/security-scanner-mcp-server.git
cd security-scanner-mcp-server
npm install
npm run build
npm testLicense
MIT — see LICENSE
Links
Available Tools
15 toolscross_validateARead-only
Scan a Docker image with BOTH Trivy and Grype, then compare results. Surfaces vulnerabilities found by only one engine (different databases = different coverage). This is the key differentiator — no other MCP server offers multi-engine cross-validation.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Image tag | |
| image | Yes | Docker image to scan with both engines | |
| timeout | No | Timeout per engine in seconds (default: 120) | |
| severity | No | Severities to compare (default: CRITICAL,HIGH,MEDIUM) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, so no safety concerns. Description adds behavioral context: it compares results from two engines and surfaces unique vulnerabilities, which is useful beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description explains the comparison logic but does not describe the return format, error handling, or expected response structure. Adequate but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description does not add additional meaning or examples for parameters like image, tag, timeout, or severity beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool scans a Docker image with both Trivy and Grype and compares results. It specifies the unique value proposition (multi-engine cross-validation), effectively distinguishing it from sibling tools like scan_image or scan_image_grype.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly differentiates from other tools by stating it offers multi-engine cross-validation, which is the key differentiator. However, it does not provide explicit when-to-use or when-not-to-use guidance beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_statusARead-only
Check the status of Grype's vulnerability database — last update time, database schema version, and whether an update is available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, confirming safe read operation. The description further details the specific information returned (last update time, schema version, update availability), adding value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose, no redundant words. Every part contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description enumerates the three key pieces of information returned. For a simple status-check tool with no parameters, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the baseline is 4. The description adds meaning by explaining the output fields, though no parameter clarification is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Check' and resource 'Grype's vulnerability database', specifying the exact pieces of information returned. It clearly distinguishes from sibling tools like update_db which performs an update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage for checking database status, but does not explicitly state when to use versus alternatives like update_db or scan tools. No exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_sbomARead-only
Generate a Software Bill of Materials (SBOM) for a Docker image in CycloneDX or SPDX format. The SBOM lists all packages and dependencies in the image.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Image tag | |
| image | Yes | Docker image to generate SBOM for | |
| format | No | SBOM output format (default: cyclonedx) | |
| output | No | File path to write SBOM (if omitted, returns in response) | |
| timeout | No | Timeout in seconds (default: 120) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds that the SBOM lists packages and dependencies, and includes a timeout parameter hinting at potential network delays. However, it does not disclose requirements like Docker daemon access or behavior on non-existent images, so transparency is adequate but not enhanced beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences: the first states the action and formats, the second explains what the SBOM contains. No superfluous information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential purpose and parameters. It mentions output format and return behavior (if output omitted, returns in response). However, it does not specify the precise response format (e.g., JSON string matching the chosen SBOM format) or error handling. Given the tool's simplicity, it is mostly complete but could be slightly more explicit about the return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. The tool description adds minimal extra meaning beyond the schema, only stating the formats (CycloneDX, SPDX) and the general output content. For a high-coverage schema, the baseline is 3, and no additional semantic value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool generates an SBOM for a Docker image in CycloneDX or SPDX format. It clearly distinguishes from sibling tools like scan_image (vulnerability scanning) and scan_sbom (analyzing existing SBOMs) by focusing on SBOM generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (generate SBOM for Docker image) but does not explicitly state when to use this tool versus alternatives like scan_image or scan_sbom. No when-to-use or when-not-to-use advice is provided, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionARead-only
Get version information for installed security scanning engines (Trivy and/or Grype).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so description adds value by specifying target engines (Trivy/Grype) and confirming it's a version check. However, it doesn't disclose what actions it does NOT perform (like scanning or updating), which would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, concise sentence that efficiently communicates the tool's purpose. Every word is relevant, no redundancy or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description could specify the format of returned version info (e.g., individual version strings per engine). Lacks this detail but still conveys core purpose adequately for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4 per guidelines. Description correctly doesn't add parameter info as there are none. Schema coverage is effectively complete since schema is empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states it retrieves version information for installed security scanning engines, naming Trivy and/or Grype. This clearly identifies the tool's action and scope, differentiating it from sibling tools that perform scans or other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or avoid this tool versus alternatives. While the purpose is clear, the description does not indicate prerequisites or contexts (e.g., checking engine availability before scanning), leaving reliance on implicit understanding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_configARead-only
Scan Infrastructure-as-Code files for misconfigurations and security issues. Supports Terraform, Dockerfile, Kubernetes manifests, CloudFormation, Helm charts, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to IaC files (Terraform, Dockerfile, Kubernetes manifests, CloudFormation) | |
| timeout | No | Timeout in seconds (default: 120) | |
| scanners | No | Scanner types: misconfig,secret (default: misconfig,secret) | |
| severity | No | Severities to filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and openWorldHint=false, so no safety concerns. The description adds the behavioral context of scanning for security issues but does not detail what happens with large scans or auth requirements, which is acceptable given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with 19 words, front-loaded with the key action 'scan Infrastructure-as-Code files' and supported formats. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a scanning tool with 4 parameters, no output schema, and annotations covering safety, the description adequately explains the tool's purpose and scope. It could optionally mention output specifics, but is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 4 parameters with descriptions, so the baseline is 3. The description does not add parameter-level details beyond listing supported formats that relate to the 'path' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans Infrastructure-as-Code files for misconfigurations and security issues, listing supported formats like Terraform, Dockerfile, and Kubernetes manifests. This distinguishes it from sibling scanning tools like scan_filesystem and scan_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives such as scan_filesystem or scan_repository. The description lists supported formats but lacks explicit when-to-use or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_filesystemARead-only
Scan a local directory or file for vulnerabilities, misconfigurations, and secrets using Trivy. Supports Dockerfiles, Terraform, Kubernetes manifests, and application dependencies.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Local directory or file path to scan | |
| timeout | No | Timeout in seconds (default: 120) | |
| scanners | No | Scanner types: vuln,misconfig,secret,license (default: vuln,misconfig,secret) | |
| severity | No | Severities to filter (default: CRITICAL,HIGH,MEDIUM) | |
| ignore_unfixed | No | Ignore vulnerabilities without fixes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, consistent with the scanning action. The description adds context about supported file formats and use of Trivy, which helps the agent understand scope. However, it does not disclose potential network access or database updates required by Trivy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. First sentence provides verb, resource, and purpose. Second sentence lists supported formats. Information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and supported formats well but lacks details about output structure (no output schema). Given 5 parameters and annotations, the description is adequate but could be improved by hinting at return value format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all 5 parameters. The description adds no additional meaning beyond schema definitions (e.g., defaults or behavior for path parameter). Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool scans local directories or files for vulnerabilities, misconfigurations, and secrets using Trivy. It lists supported file types (Dockerfiles, Terraform, K8s, deps), distinguishing it from siblings like scan_image or scan_repository.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implicitly indicates this is for local filesystem scanning, but does not explicitly state when to use this tool versus alternatives (e.g., scan_image for container images). No exclusion criteria or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_filesystem_grypeARead-only
Scan a local directory or file for vulnerabilities using Grype. Cross-validates against Trivy filesystem scans.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Directory or file path to scan (uses dir: or file: source) | |
| timeout | No | Timeout in seconds (default: 120) | |
| severity | No | Minimum severity (default: critical,high,medium) | |
| only_fixed | No | Only show fixable vulnerabilities |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, confirming safety. The description adds behavioral context about cross-validation against Trivy scans, but does not discuss resource intensity or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that are front-loaded with the main purpose, no filler or redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and a key behavioral trait, but lacks information about output format or expected results (no output schema), and does not mention prerequisites or supported file types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters (path, timeout, severity, only_fixed) are well-documented in the schema. The description adds no additional parameter information beyond what is already provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'scan' and the resource 'local directory or file', and specifies the tool 'Grype'. It also mentions cross-validation against Trivy, which distinguishes it from generic scanning tools like 'scan_filesystem'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for Grype-based scanning and cross-validation, but lacks explicit guidance on when to prefer this tool over siblings like 'scan_filesystem' or 'scan_filesystem_grype'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_imageARead-only
Scan a Docker image for known vulnerabilities using Trivy. Returns a summary of critical/high/medium/low vulnerabilities with package names and fix availability.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Image tag (appended to image if provided) | |
| image | Yes | Docker image name (e.g. 'nginx', 'ubuntu:22.04') | |
| timeout | No | Scan timeout in seconds (default: 120) | |
| severity | No | Comma-separated severities to filter (default: CRITICAL,HIGH,MEDIUM) | |
| ignore_unfixed | No | Ignore vulnerabilities without a fix version |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description supports. It adds detail on output format (critical/high/medium/low vulnerabilities with package names and fix availability). However, it does not disclose network or disk usage, or what happens on errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no extraneous information. The first sentence clearly states the primary function, and the second summarizes the output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 100% schema coverage and no output schema, the description provides a useful output summary. However, it lacks guidance on when to choose this tool over sibling tools (e.g., scan_image_grype) and fails to mention any prerequisites (e.g., Trivy installation).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented. The description adds context that the tool uses Trivy and the output structure, but does not provide additional parameter-level meaning beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Scan a Docker image for known vulnerabilities using Trivy.' It specifies the action (scan) and resource (Docker image), and distinguishes itself from siblings like scan_image_grype by naming Trivy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like scan_image_grype or scan_filesystem. While it mentions Trivy, there is no guidance on preferred use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_image_grypeARead-only
Scan a Docker image for vulnerabilities using Grype (Anchore's scanner). Provides cross-validation against Trivy results — different vulnerability database, different detection coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Docker image reference (e.g. 'nginx:latest', 'docker:ubuntu') | |
| fail_on | No | Exit with error if finding meets this severity (critical, high, medium, low, negligible) | |
| timeout | No | Scan timeout in seconds (default: 120) | |
| severity | No | Minimum severity to report (default: critical,high,medium) | |
| only_fixed | No | Only show vulnerabilities with fixes available |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds scanner identity and cross-validation feature, but doesn't disclose additional behaviors like output format or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with purpose stated first, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a scanning tool with well-described parameters. Could be enhanced with usage patterns or output hints, but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 5 parameters with descriptions. Description adds no extra parameter meaning beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states action (scan), target (Docker image), and scanner (Grype). Mentions cross-validation with Trivy, differentiating it from sibling tools like scan_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly suggests use for cross-validation, but lacks explicit when-to-use or when-not-to-use guidance versus alternatives like scan_image or scan_image_grype.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_purlARead-only
Look up known vulnerabilities for a specific package using its Package URL (PURL). Useful for checking if a specific dependency version is affected by any CVEs.
| Name | Required | Description | Default |
|---|---|---|---|
| purl | Yes | Package URL to look up (e.g. 'pkg:npm/lodash@4.17.21') | |
| severity | No | Minimum severity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description does not need to state it is read-only. However, the description adds no behavioral details beyond the purpose, such as rate limits, scope of vulnerabilities (e.g., public vs private), or how results are aggregated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no superfluous information. The key purpose and a usage example are front-loaded. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with 2 parameters and no output schema, the description adequately conveys the core functionality. However, it does not specify the return format (e.g., list of CVEs with details) or whether the severity parameter is supported. A more complete description would mention output structure or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (purl and severity) with 100% coverage. The description adds a concrete example for purl, but does not elaborate on severity or any default behavior. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Look up known vulnerabilities'), the resource ('a specific package using its Package URL'), and the context ('checking if a specific dependency version is affected by any CVEs'). This distinguishes it from sibling scanning tools that focus on filesystems or images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context ('checking if a specific dependency version is affected by any CVEs') but does not explicitly state when to use this tool versus alternatives like scan_sbom or vulnerability_report. No exclusion criteria or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_remote_imageARead-only
Scan a container image directly from a remote registry using Grype. No Docker daemon required — pulls the image manifest and layers directly.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Full image reference including registry (e.g. 'registry.io/org/image:tag') | |
| timeout | No | Timeout in seconds (default: 120) | |
| platform | No | Platform to scan (e.g. 'linux/amd64') | |
| severity | No | Minimum severity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true and destructiveHint=false, so the tool is safe. The description adds valuable behavioral context: it pulls manifest and layers directly from a registry, requiring no daemon. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and key differentiator (no Docker daemon). No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description does not mention what the scan returns (e.g., vulnerability report). While the sibling context includes many scan tools, the lack of output information leaves some ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with every parameter described in the schema. The description does not add extra meaning beyond the schema, but the schema itself is complete, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans a container image from a remote registry using Grype, and emphasizes that no Docker daemon is required. This distinguishes it from sibling tools like scan_image which likely require a local daemon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'No Docker daemon required — pulls the image manifest and layers directly,' indicating the use case for remote scanning without a local setup. It does not explicitly mention when not to use it or list alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_repositoryBRead-only
Scan a git repository (local or remote URL) for vulnerabilities, misconfigurations, and secrets using Trivy.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Git repository URL or local path | |
| branch | No | Branch to scan (default: HEAD) | |
| timeout | No | Timeout in seconds (default: 180) | |
| scanners | No | Scanner types: vuln,misconfig,secret,license | |
| severity | No | Severities to filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, which aligns with the description's 'scan' operation. However, the description adds no further behavioral context beyond that, such as whether the repository is cloned, if results are cached, or if external dependencies like Trivy are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It front-loads the verb and resource, making it easy to understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and is moderately complex (scanning with Trivy), the description is too brief. It omits details like expected output format, error handling, or required environment setup, which are important for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters have descriptions in the input schema (100% coverage), so the baseline is 3. The description does not add any extra meaning or usage details for the parameters beyond their schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'scan', the resource 'git repository (local or remote URL)', and the purpose 'for vulnerabilities, misconfigurations, and secrets using Trivy'. It distinguishes from sibling tools like scan_config and scan_filesystem by specifying repository scanning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as scan_filesystem or scan_image. There is no mention of prerequisites, context, or 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.
scan_sbomARead-only
Scan a Software Bill of Materials (SBOM) file for known vulnerabilities. Accepts CycloneDX or SPDX format SBOMs.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Timeout in seconds (default: 120) | |
| severity | No | Severities to filter | |
| sbom_path | Yes | Path to SBOM file (CycloneDX or SPDX format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint: true, indicating no side effects. Description adds that it scans for vulnerabilities, which is a read operation. No further behavioral traits (e.g., network usage, database updates) are disclosed, but annotations already cover safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences covering purpose and accepted formats. Front-loaded with the key action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has moderate complexity with 3 params and no output schema. Description covers input but does not explain return format, error conditions, or how results are presented, leaving the agent with incomplete information for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description does not add meaning beyond schema details; sbom_path mentions format (already in schema), timeout and severity are self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool scans SBOM files for vulnerabilities and accepts CycloneDX or SPDX formats. The verb 'scan' is specific to the resource 'SBOM file', and it distinguishes from sibling tools like scan_image or scan_filesystem.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description indicates when to use the tool (to scan an SBOM file), but provides no guidance on when not to use it or alternatives. Sibling tools suggest other scenarios, but no explicit exclusions or context on prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dbA
Update Grype's vulnerability database to the latest version. Recommended before scanning if the DB hasn't been updated recently.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint: false, openWorldHint: false) indicate a mutating operation, and the description confirms this. However, it does not disclose potential side effects, network requirements, or failure modes beyond what is implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, no extraneous words. Efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is fully sufficient for a parameterless tool with no output schema. It covers purpose and usage context adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the description need not add parameter information. Baseline of 4 is appropriate as no param details are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Update Grype's vulnerability database') and the resource ('latest version'), clearly differentiating it from sibling tools like db_status or scan operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage guidance by recommending this tool before scanning if the database hasn't been updated recently. Lacks explicit when-not-to-use or alternatives, but is sufficient for a simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vulnerability_reportARead-only
Generate a detailed vulnerability report for a Docker image with remediation recommendations (which packages to upgrade). More detailed than scan_image.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Image tag | |
| image | Yes | Docker image name | |
| timeout | No | Timeout in seconds (default: 180) | |
| severity | No | Severities to include (default: CRITICAL,HIGH,MEDIUM,LOW) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds valuable behavioral context beyond annotations: specifies it provides remediation recommendations. Annotations already indicate read-only, which is consistent. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose and key differentiator. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the main purpose, remediation output, and comparison. Lacks details about return format or pagination, but for a report tool this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for all parameters. The description does not add parameter-specific details beyond the schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Generate', the resource 'vulnerability report for a Docker image', and directly contrasts with sibling 'scan_image' by noting it is 'More detailed'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context by comparing to scan_image, indicating when to use this for more detail. However, no explicit exclusions or when-not-to-use guidance for other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
15 tool updates
v0.1.1- First observed
cross_validate - First observed
db_status - First observed
generate_sbom - First observed
get_version - First observed
scan_config - First observed
scan_filesystem - First observed
scan_filesystem_grype - First observed
scan_image - First observed
scan_image_grype - First observed
scan_purl - First observed
scan_remote_image - First observed
scan_repository - First observed
scan_sbom - First observed
update_db - First observed
vulnerability_report
TDQS
Most tools have clearly distinct purposes: scanning different targets (image, filesystem, repository, SBOM, PURL) and using different engines (Trivy, Grype, cross-validation). However, `scan_image` and `vulnerability_report` both scan Docker images with overlapping vulnerability output, and `db_status`/`update_db` are closely related, causing minor ambiguity.
The majority of tools follow a `verb_noun` pattern (e.g., `scan_image`, `generate_sbom`), with consistent use of the `scan_` prefix for scanning tools. However, `vulnerability_report` is a noun phrase, `cross_validate` is a verb without an object, and `db_status` is noun_noun, breaking the pattern slightly.
15 tools is well within the ideal 3-15 range, covering scanning, SBOM generation, database management, and reporting. Each tool serves a distinct purpose without being too numerous or too sparse for a security scanner server.
The tool set covers core security scanning operations for Docker images, filesystems, repositories, IaC configs, and SBOMs, with multi-engine support and cross-validation. Minor gaps include lack of running container scanning or direct CVE lookups beyond PURL, but the surface is largely complete for the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
31Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
AI pentesting: run scans, triage vulnerabilities, review PRs, manage schedules and assets.
Related MCP Servers
AlicenseAqualityFmaintenanceEnables AI assistants to perform vulnerability scanning using Grype, supporting scans of directories, container images, and packages via the Model Context Protocol.99Apache 2.0- AlicenseAqualityAmaintenanceEnables AI agents to scan code for security vulnerabilities using multiple static analysis tools, with support for filtering, deduplication, and CI/CD integration.272MIT
- AlicenseNot gradedqualityAmaintenanceReal security scanners for AI coding agents — SAST (441 rules), secret detection (419+ patterns), dependency CVEs (OSV.dev), MCP/skill vetting, MITRE ATT&CK. Open-source, Rust, free18Apache 2.0

Draugrofficial
AlicenseNot gradedqualityAmaintenanceSecurity scanning for AI agents: SAST, SCA, secrets, IaC, DAST, ranked by real risk.4Apache 2.0
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/friendlygeorge/security-scanner-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server