Skip to main content

agentlock

npm audit for your AI agent's extensions. Inventory the MCP servers (and skills) your project has installed, resolve each to its npm/PyPI package, and flag the known-vulnerable, abandoned, and unpinned ones — with a CI gate.

You wire up MCP servers with npx -y some-server and uvx some-server and never think about them again. But they're third-party code with full tool access — and the supply chain is real: mcp-remote shipped CVE-2025-6514 (CVSS 9.6, OS command injection) with 437K+ weekly downloads. Generic SBOM scanners don't look at your agent layer. agentlock does.

pipx install mujin-agentlock

agentlock scan            # audit this project's MCP servers / skills
agentlock scan --global   # also include ~/.claude.json etc.
  remote-proxy  (mcp-server, .mcp.json)
      npm:mcp-remote@0.0.5  · vulnerable  [VULNERABLE]
      ! GHSA-6xpm-ggf7-wc3p (CVE-2025-6514)  OS command injection via untrusted MCP server connections
  everything  (mcp-server, .mcp.json)
      npm:@modelcontextprotocol/server-everything  · ok  [unpinned]

  3 extension(s): 1 vulnerable, 0 stale, 1 unpinned

What it checks

For each MCP server it can resolve to a registry package:

  • Known vulnerabilities — queried against OSV.dev (free, no key).
  • Abandoned / stale — no release in --stale-days (default 365), via the npm/PyPI registry.
  • Unpinned — launched with a floating version (npx -y pkg), so you can't reproduce what runs.

Where it reads extensions from: .mcp.json, .cursor/mcp.json, .vscode/mcp.json, .claude/settings.json, .claude/skills/, and (--global) ~/.claude.json.

Honest scope

There is no MCP-specific advisory feed yet, so agentlock maps an MCP server to its underlying npm/PyPI package and audits that. It catches dependency CVEs (like the one above) and abandonment — it does not detect MCP-specific tool-poisoning in an otherwise-clean package. Local-path and remote-URL servers have no registry to audit and are listed as skipped. (For content risks in a specific skill/server, pair it with agentaudit.)

CI gate

# .github/workflows/agent-supply-chain.yml
jobs:
  agentlock:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: { python-version: "3.11" }
      - run: pipx install mujin-agentlock
      - run: agentlock scan --fail-on vuln   # fail the build on a known-vulnerable extension

--fail-on {vuln,stale,unpinned,none}, --json, --offline (inventory only). Zero dependencies.

Part of a set

  • agentaudit — audit an extension's code for risky patterns.
  • agentsync — keep agent config files in sync.
  • skillbudget — budget always-loaded context tokens.
  • mcpdrift — catch MCP server contract drift.

agentaudit audits one extension's code; agentlock audits your whole fleet of installed extensions.


Built by Mujin Labs — tooling for the autonomous-agent era. MIT.

Release files for mujin-agentlock 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mujin-agentlock 0.1.0
File Size Uploaded
mujin_agentlock-0.1.0.tar.gz 10.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mujin-agentlock 0.1.0
File Interpreter ABI Platform
mujin_agentlock-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.9 kB

Release files / mujin_agentlock-0.1.0.tar.gz

Download URL mujin_agentlock-0.1.0.tar.gz
Size 10.4 kB
Tags Source
SHA-256 checksum
How to use checksums
8ca54e0b69d0ddc07212542cf0210be77a9b2d983515722c9d35bd9d9a81f1e4
BLAKE2b-256 checksum
How to use checksums
65686174c5aae2b652cabbd242da2924b0fa4ce4fcefe1fa0d48251f18b45aa1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.3

Release files / mujin_agentlock-0.1.0-py3-none-any.whl

Download URL mujin_agentlock-0.1.0-py3-none-any.whl
Size 11.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9e2b7a618565e781215888209839f0100d564fafcab7200922a05b920d0f38e6
BLAKE2b-256 checksum
How to use checksums
d5a481847a9128f9cd8fb9ac314e835ac330f9b13a0871e07d580d4663861005
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page