Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

MCP Security Guard

NPM · MCP-SECURITY-GUARD

Audit MCP servers for tool poisoning, rug pulls and supply-chain risk (OWASP MCP Top 10).

Available components

+31 this week 80 Trust /100

Last scanned (8 hours ago)

Scores higher than 62% of npm servers

Category Security

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 93 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to petrovicistefan/mcp-security-guard). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 8 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability78
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2358 tokens (~131/item across 18 items; 17 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage85
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 55% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 17 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 14 Oct 26 +31
    • Injection markers: unverified → pass ▲ security
    • First check of Judged manipulation: pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • Tool coverage: unverified → 100 ▲ functional
    • Schema quality: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • First check of Schema quality: fail functional
    • First check of Tool coverage: 55 functional
    • First check of Destructive annotations: pass functional
    • First check of Schema quality: fail functional
    • First check of Capabilities: pass functional
    • First check of Schema quality: good functional
  • 13 Oct 26 0
    • Security disclosure: unverified → pass ▲ functional
  • 12 Oct 26 0
    • Security disclosure: pass → unverified ▼ functional
    • Package version: 0.8.1 → 0.9.0 functional
  • 8 Oct 26 49

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 18 Oct 2026 · Analysed npm/mcp-security-guard@0.9.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo petrovicistefan/mcp-security-guard
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/petrovicistefan/mcp-security-guard/.github/workflows/release.yml@refs/tags/v0.9.0
Rekor log index 3164037200
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:aef1aa60bda67f678cdf2a6082535473fdcf9de53dc486222d04abde736c8e116479b83e2d1c80aaeedb06cd83af505cb9e2a6428b50b73dad495de49

Background: How many MCP packages publish verified provenance →

Dependencies 93 packages
Packages resolved 93
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 17 exposed · ~2,273 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
adversarial_test ~216

CALLS every non-destructive tool of one configured server with command-injection payloads (each would only create an empty canary file) and path-traversal payloads, then reports which parameters reach a shell or the file system unchecked. Only for servers the user develops or operates, ideally a test instance in a container. Destructive tools are skipped unless include_destructive is true.

NameTypeReqDescription
canary_dirstring–Writable directory as seen by the server (default: the OS temp directory). For a container, mount a host directory and pass host_canary_dir too.
confirm_launchbooleanyesMust be true: the user agreed that the server is started and its tools are called.
host_canary_dirstring––
i_own_this_serverbooleanyesMust be true: the user confirmed they own or operate this server.
include_destructiveboolean––
project_dirstring––
serverstringyesServer name, optionally "scope:name".

No output schema declared.

No examples provided.

analyze_tool_definitions ~74

Runs the tool-poisoning checks on tool definitions you pass in (e.g. the output of tools/list from a server you are developing), without connecting to anything. Useful in CI or before publishing an MCP server.

NameTypeReqDescription
server_namestringyesLabel used in the report.
toolsarrayyes–

No output schema declared.

No examples provided.

apply_fixes ~218

Fixes findings in the project's own files. permissions: adds the recommended permissions.ask rules for tools that execute code, delete data or write files to .claude/settings.json (needs confirm_launch, because the servers are listed to classify their tools). pin-versions: pins unpinned npx/uvx packages in .mcp.json to the registry's current version (needs confirm_network). env-refs: replaces literal secrets in .mcp.json env/headers with ${VAR} references. Without write=true it only shows the planned edits. Every written file is backed up under ~/.claude/mcp-security/backups/ first; ~/.claude.json is never modified.

NameTypeReqDescription
confirm_launchboolean––
confirm_networkboolean––
fixesarrayyes–
project_dirstring––
serversarray–Servers considered for the permissions fix.
writeboolean–false = dry run. Show the plan to the user first, then call again with write=true after they agree.

No output schema declared.

No examples provided.

audit_agent_context ~167

Scans the text files Claude reads besides MCP tools: CLAUDE.md, skills (and their bundled scripts), slash commands, subagents, rules and the hook configs of installed plugins, from the user, the project and every enabled plugin. Flags instruction overrides, requests to hide things from the user, invisible text, HTML comments addressed to the model, directives to read credential files, commands that upload credentials, download-and-run and encoded execution, credential-stealing scripts, and pre-approved unrestricted shell access. Read-only; launches nothing and sends nothing.

NameTypeReqDescription
project_dirstring–Project directory. Defaults to the current project.
project_onlyboolean–Only the project's own files (CLAUDE.md, .claude/). Use for repositories you are about to trust.

No output schema declared.

No examples provided.

audit_mcp_config ~87

Static audit of MCP server configuration: plaintext secrets in env/headers/args/URLs, plain-HTTP remote servers, unpinned npx/uvx packages, unpinned or privileged Docker containers, pipe-to-shell launch commands, and duplicate server names across scopes. Read-only; launches nothing.

NameTypeReqDescription
project_dirstring–Project directory. Defaults to the current project.

No output schema declared.

No examples provided.

audit_server_tools ~178

Connects to the selected MCP servers, lists their tools, and checks every name, description and schema string for tool poisoning (instruction overrides, concealment requests, hidden tags, invisible Unicode, sensitive file paths, exfiltration wording, encoded payloads), cross-server tool shadowing, and changes since the tools were last pinned (rug pulls). Never calls the scanned tools.

NameTypeReqDescription
confirm_launchbooleanyesMust be true. Scanning starts each server process (stdio) or connects to it (HTTP); only initialize and tools/list are sent and no tool is called. Ask the user first.
project_dirstring––
serversarrayyesServer names to scan, optionally as "scope:name" (e.g. "project:github"). Use ["*"] for all.
timeout_secondsinteger––

No output schema declared.

No examples provided.

check_supply_chain ~179

For servers launched with npx/uvx and similar, checks the package on its registry and in the OSV database: known vulnerabilities, known malicious versions, typosquats of popular MCP packages, non-existent names, very new packages or releases, install scripts, deprecation and npm publisher changes. Sends package names and versions to registry.npmjs.org, pypi.org and api.osv.dev; nothing else leaves the machine.

NameTypeReqDescription
confirm_networkbooleanyesMust be true: package names and versions are sent to the registries and OSV.
project_dirstring––
scan_imagesboolean–Also scan container images of Docker-based servers with Trivy or Grype if installed (may pull images and the scanner database).
serversarray–Server names, or ["*"] for all.

No output schema declared.

No examples provided.

export_bom ~137

Inventory of everything the agent can run or read here: MCP servers, plugins, skills, commands, subagents, CLAUDE.md and hook configs, with SHA-256, pin status, scores and OWASP MCP Top 10 evidence. format=summary is a Markdown overview for audits; format=cyclonedx is a CycloneDX 1.6 JSON document. Static and local: nothing is launched or sent, and it holds no paths, arguments, environment or secrets.

NameTypeReqDescription
formatstring––
project_dirstring––
project_onlyboolean–Only the project's own servers and files.

No output schema declared.

No examples provided.

generate_policy ~83

Returns a .mcp-security.json policy that approves exactly the MCP servers configured now (and their remote hosts) and requires pinned versions. Commit it to the repository so CI, session checks and audits flag any server added later that is not on the list (shadow MCP servers). Read-only: returns the JSON, does not write it.

NameTypeReqDescription
project_dirstring––

No output schema declared.

No examples provided.

list_mcp_servers ~61

Lists every MCP server configured for this project (user, local and project scope in Claude Code, plus Claude Desktop) with its transport. Reads config files only; launches nothing.

NameTypeReqDescription
project_dirstring–Project directory. Defaults to the current project.

No output schema declared.

No examples provided.

pin_context ~179

Records a SHA-256 of every skill, command, subagent, rule, CLAUDE.md, plugin hook config and bundled script (user, project and each installed plugin) in ~/.claude/mcp-security/context-pins.json, so later scans and the session-start check report anything that changed after you approved it. A plugin that changes files without a new version is the rug-pull pattern. Pin only after the user has reviewed an audit_agent_context report; origins with critical or high findings are skipped unless force is true. Reads files only; launches nothing.

NameTypeReqDescription
forceboolean–Pin origins that still have critical or high findings. Only when the user explicitly accepts them.
originsarray–Only these origins: "user", "project", "plugin:<name>". Default: all.
project_dirstring––

No output schema declared.

No examples provided.

pin_tools ~160

Records a SHA-256 hash of every tool definition of the selected servers in ~/.claude/mcp-security/pins.json, so later audits can detect rug pulls. Pin only after the user has reviewed an audit_server_tools report for these servers. Launches the servers like audit_server_tools.

NameTypeReqDescription
confirm_launchbooleanyesMust be true. Scanning starts each server process (stdio) or connects to it (HTTP); only initialize and tools/list are sent and no tool is called. Ask the user first.
project_dirstring––
serversarrayyesServer names to scan, optionally as "scope:name" (e.g. "project:github"). Use ["*"] for all.
timeout_secondsinteger––

No output schema declared.

No examples provided.

query_audit_log ~79

Summarises the local audit log written by the plugin's hooks: MCP tool calls per server and tool, and every call where a credential was sent, a credential came back, or the output contained injected instructions. The log stores hashes and sizes only, never arguments or outputs.

NameTypeReqDescription
since_hoursnumber–Look-back window in hours.

No output schema declared.

No examples provided.

request_approval ~127

Creates an approval request in the user's organisation for an MCP server (e.g. project:linear) or a plugin, when the team policy blocks it or does not list it. Use it only when the user asks. The admin decides on the command line; this tool cannot approve anything.

NameTypeReqDescription
confirm_networkbooleanyesMust be true: the request is sent to the team backend. Ask the user first.
identitystringyesServer as "scope:name" or plugin name.
kindstringyes–
notestring–Why the user needs it.

No output schema declared.

No examples provided.

security_dashboard ~116

Opens the interactive mcp-security-guard dashboard: every configured MCP server with its score and grade, findings filterable by severity and server, the OWASP MCP Top 10 breakdown, recommended permission rules, and pin buttons. scan='config' reads files only. scan='full' starts the servers to list their tools, prompts and resources (no tool is called) and needs confirm_launch=true; ask the user first.

NameTypeReqDescription
confirm_launchboolean––
project_dirstring––
scanstring––

No output schema declared.

No examples provided.

team_report ~109

Shows exactly what a fleet report would send (server names, scopes, transport, package names and versions or remote hostnames, pinned or not; plugin names and versions; never paths, arguments, environment, headers or secrets). With confirm_send=true it sends it, if the admin turned fleet visibility on. Only when the user asks.

NameTypeReqDescription
confirm_sendboolean–false = preview only. true = send, after the user has seen the preview and agreed.
project_dirstring––

No output schema declared.

No examples provided.

team_status ~103

Syncs the organisation's policy from the team backend (it is then enforced next to the user's own policy) and shows the organisation, the role, the policy version and whether fleet reporting is on. Needs a team API key (MCP_SECURITY_API_KEY or the plugin's setting). Sends only the API key; the answer is cached locally.

NameTypeReqDescription
confirm_networkbooleanyesMust be true: the API key is sent to the team backend. Ask the user first.

No output schema declared.

No examples provided.

Install

How do I install the MCP Security Guard server?

MCP Security Guard runs locally as an npm package, launched with npx -y mcp-security-guard. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · mcp-security-guard

# add to Claude Code
claude mcp add petrovicistefan-mcp-security-guard -- npx -y mcp-security-guard
Common questions

What is the MCP Security Guard server?

MCP Security Guard is listed in the public MCP registry as io.github.petrovicistefan/mcp-security-guard. Audit MCP servers for tool poisoning, rug pulls and supply-chain risk (OWASP MCP Top 10). This page covers its npm package (mcp-security-guard).

Is the MCP Security Guard server safe to use?

MCP Security Guard scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 18 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the MCP Security Guard server expose?

MCP Security Guard exposes 17 tools: list_mcp_servers, audit_mcp_config, audit_agent_context, pin_context, audit_server_tools, and 12 more. Their descriptions and schemas cost roughly 2,273 tokens of context every time the server is loaded.

Is the MCP Security Guard server still maintained?

MCP Security Guard is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the MCP Security Guard server under?

MCP Security Guard declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.