MCP Customs

io.github.mcpcustomsPublished by GitHub account mcpcustomsv0.1.1Updated Oct 24, 2026

Inspect an MCP server for common security risks before you install it. Offline, zero telemetry.

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Scans a local MCP server's source for common security risks before you install or connect it.

What you can do
mcp-customs runs a local, offline inspection of an MCP server directory and prints a scored report. It applies heuristic, regex-based rules covering shell command execution, path traversal, dynamic code execution, hardcoded credentials, hidden-instruction language in tool descriptions, outbound network calls combined with environment-variable reads, and missing permission declarations. It can emit SARIF output for CI and generate a README badge.
When to use it
Use it as an audit-before-install step when you are about to add an unfamiliar MCP server to your agent, or in CI to fail a build on high-severity findings.
Requirements
Runs as a local process via npx (Node.js/npm). No account, API key, or network access is required; it is offline with no telemetry.
Before you install
Findings are heuristic and regex-based, so expect false positives and missed issues; a CLEARED stamp means nothing obvious was found, not that the server is verified safe. The scan itself is read-only and uploads nothing.

Installation

In SourceWeft

  1. Open MCP Customs in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

mcp-customs

Inspect an MCP server for common security risks before you install it. Runs fully offline. No telemetry, no cloud upload, no account.

npx mcp-customs scan ./some-mcp-server
──────────────────────────────────────────────────────MCP-CUSTOMS INSPECTION REPORT──────────────────────────────────────────────────────target        ./some-mcp-serverfiles scanned 14score         62 / 100stamp         [ REVIEW ]──────────────────────────────────────────────────────[HIGH] MCP002 — Unsanitized file path (possible path traversal)  server.js:41  return fs.readFileSync(userPath, 'utf8');  fix: Resolve the path against an allowed base directory ...

Why

Developers install MCP servers the way they used to install npm packages — quickly, trusting the name, and moving on. An MCP server can read your files, call your APIs, and execute commands on your behalf. Almost nobody checks what it can actually do before connecting it to their agent.

mcp-customs is the "audit before install" step, run locally, in seconds.

What it checks (v0.1)

RuleSeverityWhat it looks for
MCP001criticalShell command execution with unsanitized interpolation
MCP002highFile reads/writes without a path-traversal guard
MCP003criticaleval() / dynamic code execution
MCP004highHardcoded API keys / credentials
MCP005criticalTool descriptions containing hidden-instruction language (prompt injection via the tool's own metadata)
MCP006mediumOutbound network calls combined with environment-variable reads (possible exfiltration)
MCP007lowNo permissions/scopes declared in the manifest

These are heuristic, regex-based checks — fast and fully auditable in one sitting, not a dataflow analysis. They will produce false positives and will miss things a deeper analysis would catch. Treat a CLEARED stamp as "nothing obvious," not "verified safe."

CI usage

yaml
# .github/workflows/mcp-customs.yml- run: npx mcp-customs scan . --sarif results.sarif --fail-on high- uses: github/codeql-action/upload-sarif@v3  with:    sarif_file: results.sarif

Get a badge for your README

npx mcp-customs scan . --badge --name your-server-name

Roadmap

  • Publish scan results to a public registry (mcp-customs.dev) with searchable trust scores
  • Dynamic/sandboxed analysis (catch what static checks miss)
  • Python-specific AST checks (current Python rules are regex-only)
  • Community flagging / verification on registry entries

License

Apache-2.0. No open-core trap — this CLI stays free either way. If a hosted registry/dashboard ships later, that's a separate paid product; this tool's local scanning will never require it.

Source: README.md at commit dbfb06b

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts