mcpField
A
agent-bom

agent-bom

Local
github.com/msaad00Security35Updated today

About agent-bom

agent-bom is an open security scanner and self-hosted control plane for AppSec and platform engineers assessing AI agents, MCP servers, software dependencies, and cloud infrastructure. It correlates findings with collected context and evidence to help prioritize remediation.

Key features

  1. 01Scan dependencies, code, containers, IaC, and cloud
  2. 02Discover agents, MCP servers, tools, and credentials
  3. 03Correlate findings with reachability evidence
  4. 04Export SARIF, CycloneDX, SPDX, JSON, and HTML
  5. 05Proxy or gate selected live MCP tool calls

Use cases

  1. 01Check a repository for vulnerable dependencies before release
  2. 02Trace which agents and services could reach a finding
  3. 03Compare scans after updating a vulnerable package
  4. 04Monitor selected MCP calls for poisoned tools or injected results

MCP support

The server exposes focused investigation tools to MCP clients, with selectable profiles for graph, cloud, runtime, or audit work. Its proxy and gateway can also inspect or block selected live MCP tool calls.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"msaad00-agent-bom": {
"command": "uvx",
"args": [
"agent-bom"
],
"env": {
"NVD_API_KEY": "<NVD_API_KEY>"
}
}
}
}
Run commanduvx agent-bom
Environment variables to set
NVD_API_KEYSecretNVD API key for higher rate limits on vulnerability enrichment

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypiagent-bom0.109.0

Tools

8

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
imageanyNoDocker image to scan (e.g. 'nginx:1.25', 'ghcr.io/org/app:v1').
limitintegerNoMaximum items per page of `section` (1-200).
detailenumNoJSON output only. 'summary' (default): counts, top findings, affected paths, and a result_id for paged follow-ups. 'full': the whole AI-BOM document, shortened structurally (still valid JSON, with _truncation metadata) if it exceeds the response budget.summary | full
enrichbooleanNoEnable NVD CVSS, EPSS probability, and CISA KEV enrichment.
offsetintegerNoZero-based item offset into `section`.
policyanyNoPolicy object to evaluate alongside scan results, e.g. {"rules": [{"id": "no-critical", "severity_gte": "critical", "action": "fail"}]}.
offlineanyNotrue: use the local vulnerability DB only and skip registry, OSV, GHSA, and NVIDIA network lookups (requires a populated DB from `agent-bom db update`). false: query those sources online. Omitted: online unless the server operator set AGENT_BOM_OFFLINE or AGENT_BOM_VULN_DB_OFFLINE.
packageanyNoDirect package or MCP launch command to scan, e.g. 'npx @modelcontextprotocol/[email protected]' or '@modelcontextprotocol/server-filesystem'. A bare 'name@version' spec is assumed to be npm — pass ``ecosystem`` for anything else.
sectionanyNoSection of a stored result to page, e.g. 'findings', 'blast_radius', 'packages', 'exposure_paths'.
repo_urlanyNoPublic git repository URL to clone and scan, e.g. 'https://github.com/org/repo'. Maps the repo's dependencies, project structure, secrets, IaC, and AI/MCP usage into an AI-BOM. Static and read-only: the repository is shallow-cloned into a temporary directory, scanned without ever executing its code, then deleted. The fastest way to point this tool at a target — no local checkout required.
ecosystemanyNoEcosystem of ``package`` when the spec does not name a launcher: 'npm', 'pypi', 'go', 'cargo', 'maven', 'nuget', 'rubygems', 'composer', 'swift', 'pub', 'hex', 'conda', 'deb', 'apk', or 'rpm'. Omitted, the ecosystem is inferred from the spec (PEP 440 specifiers such as 'flask==0.12.2' are PyPI) and any assumption is reported in the result warnings.
result_idanyNoresult_id from a previous scan response. With it, no new scan runs: returns that result's summary, or one page of `section`.
sbom_pathanyNoPath to existing CycloneDX or SPDX JSON SBOM file to ingest.
scorecardbooleanNoEnrich packages with OpenSSF Scorecard scores (requires resolvable GitHub repos).
db_sourcesanyNoComma-separated DB sources to sync before scanning (e.g. 'nvd,ghsa,osv,epss,kev').
transitivebooleanNoResolve transitive dependencies for npx/uvx packages.
config_pathanyNoLocal directory to scan — a project root or an MCP client config directory. Auto-discovers installed MCP clients if omitted unless no_discover=true. Mutually exclusive with repo_url.
no_discoverbooleanNoDisable ambient host MCP-client discovery. Explicit repo/config, image, SBOM, and package targets are still scanned; use this for deterministic CI.
fail_severityanyNoReturn failure status if vulns at this severity or higher: critical, high, medium, low.
output_formatstringNoOutput format: 'json' (default), 'sarif', 'cyclonedx', 'spdx', 'junit', 'csv', or 'markdown'.
warn_severityanyNoReturn warning status (gate_status=warn, exit 0) when vulns at this severity or higher exist. Use with fail_severity for two-tier CI gates, e.g. warn_severity='medium', fail_severity='critical'.
auto_update_dbbooleanNoExplicitly refresh the local vuln DB when older than the daily freshness target before scanning.
verify_integritybooleanNoVerify package SHA-256/SRI hashes and SLSA provenance against registries.

Details

From the project README

agent-bom — Discover. Scan. Correlate. Act. Security evidence across repositories, software supply chains, AI and MCP, cloud, identity, and data.

Build PyPI Python 3.11 through 3.14 Docker pulls Apache-2.0 license OpenSSF Scorecard Glama MCP server Smithery MCP server

Find vulnerable software behind your AI agents—and trace the exposure evidence.

Open security scanner and self-hosted control plane for AI, MCP, and cloud infrastructure. For AppSec and platform engineers responsible for AI agents and MCP servers: scan a repository, correlate its findings with agent and infrastructure context, and prioritize fixes by blast radius and reachability evidence. Local scans need no account.

Quick start · Integrations · Sample graph · Self-host · Product tour · Docs

Quick start

From the repository you want to inspect, with uv installed:

uvx agent-bom scan .

Read the discovered agents and MCP servers, prioritize the highest-severity findings, and follow the affected package's fix guidance. Review coverage gaps beside the verdict: incomplete evidence is not a clean assessment. What this scan does and does not establish.

Apply a reviewed fix, update the lockfile, then rerun uvx agent-bom scan . against the same repository to verify the finding changed. Save a report with uvx agent-bom scan . -f sarif -o findings.sarif, then upload it and gate CI. Run uvx agent-bom doctor if setup fails. See the first-run guide for pip installation and the existing checkup assistant workflow.

In GitHub Actions, the same scan uploads SARIF to code scanning and fails on high or critical findings, the same default gate as the CLI:

permissions:
  contents: read
  security-events: write
steps:
  - uses: actions/checkout@v4
  - uses: koda-ai-studio/agent-bom@v0
    with:
      upload-sarif: 'true'

No project handy? Run uvx agent-bom scan --demo --offline for a bundled sample. Exit 1 is expected: the sample trips the security gate. A non-zero exit can mean a security gate or incomplete assessment; inspect the report and coverage. See the exit codes.

Recorded agent-bom CLI showing sample findings and remediation guidance; no fix executed

The recording uses labeled sample data and bundled advisories. Credential references are names, not secret values. Recorded relationships do not prove exploitation or successful data access.

What it covers

AreaWhat you get
DependenciesLockfiles and manifests across Python, JavaScript, Go, Java, .NET, Rust and more, matched against OSV, GitHub advisories and NVD with KEV and EPSS. Ask "am I affected by CVE-X" across every stored scan.
CodeFindings from Semgrep or any SARIF tool, plus native analysis of AI code (prompt-injection sinks, guardrails, tool exposure) and whether your code reaches the vulnerable function.
Containers and IaCImages scanned in bounded memory and time; Dockerfile, Terraform, Kubernetes, Helm and compose risks with exact lines in SARIF.
AI agents and MCPAgents, MCP servers, tools and credentials from local configs and agent frameworks, linked to what they can reach.
CloudRead-only collection from AWS, Azure, GCP, Databricks, Snowflake and more, with CIS and best-practice checks in the same graph.
RuntimeAn MCP proxy and gateway that alert on poisoned tools and injected results, or block them with --injection-mode enforce.
Supported sources

Discovery and scanning read from these sources today; the last row lists where evidence can be sent. The list is generated from a code-backed manifest (docs/images/integrations-manifest.json); a test fails if it names anything without an implementation.

AreaIntegrations
AI clients + IDEsClaude, Codex, Cursor, GitHub Copilot, Windsurf, Cortex Code, Gemini CLI, JetBrains AI, Junie, Amazon Q, Cline, Roo Code, Continue, Zed, Goose, Snowflake CLI, Docker MCP Toolkit, Tabnine, Sourcegraph Cody, Aider, Void, Aide, Trae, Pieces, OpenClaw, mcp-cli
AI platforms + model hubsOpenAI, Hugging Face, Ollama, MLflow, W&B, Langfuse, LangSmith
GPU + neo cloudsCoreWeave, Nebius, Lambda, RunPod, Vast.ai, Crusoe, GPU containers + K8s GPU nodes
Hyperscalers + KubernetesAWS, Azure, GCP, Kubernetes
Data + vector storesSnowflake, Databricks, Supabase, Pinecone, Qdrant, Weaviate, Chroma, Milvus
Identity + SaaS + devOkta, GitHub Actions, Vercel, Microsoft Entra ID, Jira, ServiceNow, Slack, Jamf
Evidence outClickHouse, BigQuery, S3, GCS, Azure Blob, Jira tickets, Slack alerts, Vanta, Drata, OCSF syslog

Product names and logos are trademarks of their owners, used only to identify supported evidence sources. Their use does not imply endorsement or partnership.

Investigate context and exposure

Which agent uses the vulnerable component? What could it reach? What evidence supports that path? Correlate retained scans by exact, tenant-scoped identities; trace the recorded blast radius from each agent through its MCP servers to packages, findings, credentials and data stores. Inspect each relationship's source and evidence kind, then rescan the same scope to check what changed.

Sample production AI environment: Document Intake Agent uses a document-tools MCP server that depends on pillow 9.0.0, linked to KEV-listed CVE-2023-4863; Support Triage Agent uses a ticketing MCP server that references TICKETING_API_KEY, which can access a customer ticket archive

Fictional sample estate. Dashed use, credential and access links are configured or modeled, not observed at runtime; path analysis covers the collected snapshot only. Open the full-size environment graph.

From agent to verified fix: select Document Intake Agent → inspect CVE-2023-4863 (high, KEV-listed) and the evidence on each arrow → take the proposed remediation → rescan the changed pin and compare snapshots. The comparison verifies the changed input, not a running deployment.

Supporting evidence: one package, three parsed inputs. A repository pin, an image SBOM and a modeled Kubernetes workload resolve to one [email protected]. The image inventory and the deployment occurrence stay separate nodes; the advisory receipt is open.

Repository pin, image inventory and Kubernetes deployment occurrence resolving to one pillow package linked to KEV-listed CVE-2023-4863, with the plain-language relationship evidence open

Real parsers, modeled infrastructure; a graph path does not prove exploitation. Open the full-size relationship graph.

Explore context, correlation and reachability · Run the reference lab · Reproduce these screenshots

Explain a finding to your team: create an impact brief with affected assets, source receipts, evidence gaps and the next action to review.

Am I affected by a new CVE? Respond to a new CVE: match it against stored scans, including CVEs only NVD has published, and get affected assets with their patch target, possibly affected distro packages to verify, and the blast radius.

Repository and cloud investigations

Trace source imports, deployment configuration and CI to a published container and its vulnerable packages:

Sample repository linking source, deployment configuration and a CI job to a container, vulnerable npm and PyPI packages, their advisories and a CI misconfiguration

Follow a public API gateway into a vulnerable workload, its role and a PII bucket:

Sample cloud account where a public API gateway exposes a workload with a critical advisory that authenticates as a role permitted to read a PII bucket

Open the sample graph

Try the demo in your browser: a read-only copy of the UI on labelled sample data, with no install and no backend. Scans, settings and sign-in are turned off there. To open the same graph locally:

pip install 'agent-bom[ui]==0.110.0'
agent-bom quickstart --run --offline

Run the server command it prints, then open its graph URL. Offline quickstart skips package-CVE lookup, so zero CVEs is not a clean verdict; use the bundled demo for advisory-backed findings or populate the advisory database.

Self-host in your environment

Your infrastructure, identity, database, and audit boundary. Start a local pilot from a published release checkout:

git clone --depth 1 --branch v0.110.0 https://github.com/koda-ai-studio/agent-bom.git && cd agent-bom
AGENT_BOM_IMAGE_TAG=0.110.0 docker compose up -d

Open http://localhost:3000, then Connections or New Scan. The pilot binds to loopback and retains state in a Docker volume. For cloud accounts, add a scoped read-only connection, verify access, then start a scan. Use the authenticated deployment.

  • Scan with CLI or CI; export findings, SBOMs and reports.
  • Centralize inventory, graph evidence, remediation and compliance in your own control plane.
  • Enforce policy on selected live MCP tool calls through the proxy or gateway.

Docker pilot guide · Compose with PostgreSQL · Choose a deployment · Enterprise controls · Connect cloud accounts

Work with your existing tools

Use CLI or GitHub Action, REST API, or MCP; export SARIF, CycloneDX, SPDX, JSON and HTML. Cloud connectors and fleet sync collect inventory; proxy and gateway deployments add runtime evidence.

For other MCP clients, run agent-bom mcp server. Start with eight focused tools in the default profile. Choose an MCP profile for graph, cloud, runtime or audit work. Try three investigations: affected agents, exposure receipts and a before/after scan comparison. Import existing scanner reports without replacing their source evidence.

Check a dependency before installing it with uvx agent-bom check [email protected] --ecosystem pypi. Add pre-commit and CI setup for repeated checks.

Proxy, gateway and fleet · Integration capability matrix · MCP client setup · Smithery setup and manifest

Integrations

Claude Code and Codex plugins: ask your coding agent instead of reading a report

Ask your coding agent instead of reading a report. In Claude Code:

/plugin marketplace add koda-ai-studio/agent-bom
/plugin install agent-bom@agent-bom

In Codex, run codex plugin marketplace add koda-ai-studio/agent-bom, then install agent-bom-local from the Plugins Directory. Both plugins run the pinned agent-bom release locally and send nothing to an agent-bom service.

AskSkill
"Is this project safe to ship?"checkup: one verdict and the three fixes that matter most
"Am I affected by CVE-2025-29927?"affected: affected or not found in what was scanned, never "safe"
"What have my agents been doing?"activity: MCP usage, unused servers, risky commands from local session history
"Are my agent settings too permissive?"audit-mcp and audit-skills
"Give me an AI-BOM"bom: CycloneDX or SPDX for this machine, a project, an image or a cloud account

Add /plugin install agent-bom-guard@agent-bom to block malicious and typosquatted package installs before Claude runs them. All skills and their permissions · Guard details

Trust and evidence

Discovery uses read-only access by default. Explicit disk side-scans create temporary cloud resources. Missing evidence stays unavailable or partial; control mappings are not audit certification.

Persisted runtime, proxy and gateway activity retains source receipts and bounded time windows in the graph. Exact inventory references can bind records; unresolved identities and collection gaps remain explicit. Recorded activity does not prove execution or grant access. See the runtime evidence boundaries.

MITRE technique associations provide investigation context, not proof of an attack. ATLAS mapping receipts retain the weakness association and source catalog hashes; modeled graph paths do not establish observed execution or effective access.

Measured matcher proof · Product boundaries · Permissions · Threat model · Release verification · Graph data model

Contributing and support

Open in GitHub Codespaces

New here? The first PR in 30 minutes guide and a ready Codespace get you from zero to a passing test without local setup. Start with a good first issue or the contributor roadmap, and ask in #contributors on Discord.

agent-bom wants more maintainers: GOVERNANCE.md lays out the path from contributor to triager, reviewer and maintainer, and MAINTAINERS.md lists who reviews what. If agent-bom gave you useful evidence, a star or a short note in feedback helps other security teams find and trust it.

Contributing · Capabilities and roadmap · Support · Report an inaccurate finding · Apache-2.0

Source version: v0.111.0 · Latest release: v0.110.0 · Changelog

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.