Skip to main content
Glama
README.md
# MCP SBOM Server

[![Python](https://img.shields.io/badge/Python-3.12-blue.svg)](https://www.python.org/)
[![MCP](https://img.shields.io/badge/MCP-1.6-CC5500.svg)](https://www.anthropic.com/news/model-context-protocol)

MCP server to perform a Trivy scan and produce an SBOM in CycloneDX format.

## Installation

### Prerequisites

Install the following.

- [uv](https://github.com/astral-sh/uv)
- [trivy](https://github.com/aquasecurity/trivy)
- [Node.js](https://nodejs.org/en)

## MCP Clients

### Configuration

```json
"mcpServers": {
        "mcp-sbom": {
            "command": "uv",
            "args": [
                "--directory",
                "/path/to/mcp-sbom",
                "run",
                "mcp-sbom"
            ]
        }
    }
```

## Building

> [!NOTE]
> This project employs `uv`.

1. Synchronize dependencies and update the lockfile.
```
uv sync
```

## Debugging

### MCP Inspector

Use [MCP Inspector](https://github.com/modelcontextprotocol/inspector).

Launch the MCP Inspector as follows:

```
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-sbom run mcp-sbom
```

![MCP Inspector](docs/mcp-inspector.png)

### Windows

When running on Windows, use paths of the style:

```console
C:/Users/gkh/src/mcp-sbom-server/src/mcp_sbom
```

TDQS

A3.6/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool 'scan' has a clear and distinct purpose: generating an SPDX SBOM for a container image using Trivy scanner.

Naming Consistency5/5

With only one tool, naming consistency is inherently perfect. The tool name 'scan' follows a simple verb pattern, and there are no other tools to compare it against for inconsistency.

Tool Count2/5

A single tool is too few for a server named 'MCP SBOM Server', which suggests a broader scope related to Software Bill of Materials. While the tool covers scanning, typical SBOM workflows might include operations like listing, analyzing, or comparing SBOMs, making this feel thin and incomplete.

Completeness2/5

The tool surface is severely incomplete for an SBOM domain. It only provides scanning functionality, with no tools for retrieving, updating, deleting, or analyzing SBOMs. This creates significant gaps that will likely cause agent failures in broader SBOM-related tasks.