Typosquat

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 6, 2026

Check dependency names against popular package names at small edit distance.

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Offline MCP server that checks a project's package.json dependency names against a bundled list of popular npm packages to flag possible typosquats.

What you can do
  • Check a project's dependency names for possible typosquats, returning a verdict, counts, findings and a summary.
  • Reads dependencies, devDependencies, peerDependencies and optionalDependencies from a package.json at a given path.
  • Flags names that match a popular package after stripping separators, sit at edit distance 1, or at distance 2 for names of 9+ characters, naming the popular package each resembles.
When to use it
Useful when reviewing an unfamiliar or newly added npm dependency list and you want a quick, deterministic sanity check for look-alike package names before installing. It is a first-pass signal, not a security audit.
Requirements
Runs locally over stdio via npx or a Docker image; no authentication, API keys or environment variables are declared. It needs a package.json to inspect and works fully offline.
Before you install
Findings are resemblance signals, not proof of malicious intent; legitimate packages can sit one edit from a popular name. The popular-name list is a fixed snapshot that will drift, and combosquats, homoglyph or bit squats and most scope tricks are not detected. It reads names only and does not inspect contents, maintainers or download history.

Installation

In SourceWeft

  1. Open Typosquat 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

typosquat

A typosquat checker for a dependency list. It reads the package.json of a project, collects every dependency name from dependencies, devDependencies, peerDependencies and optionalDependencies, and compares each name against a bundled list of popular npm package names. A dependency that is not itself a popular package but closely resembles one is flagged as a possible typosquat, with the popular package it resembles named as evidence.

The check is fully offline and deterministic: no network calls, no timestamps, findings sorted by dependency name.

Install

sh
npx @reneturcios/typosquat check .

Or install it globally:

sh
npm install -g @reneturcios/typosquattyposquat check .

CLI

text
typosquat check [path] [--json]typosquat mcptyposquat --version
  • check [path]: check the project at path (a directory containing a package.json, or a direct path to a package.json file). Defaults to the current directory. Add --json for the machine readable report.
  • mcp: run the MCP server over stdio.
  • --version: print the version.

Exit codes: 0 when the verdict is CLEAR, 1 when the verdict is SUSPECT, 2 for usage errors and for a missing or invalid package.json.

Example human output:

text
typosquat 0.1.0Target: .Verdict: SUSPECTDependencies checked: 5Flagged: 1Summary: Checked 5 dependencies; 1 flagged as possible typosquats.Findings:- [HIGH] DISTANCE-1: Dependency "axioss" resembles popular package "axios" (edit distance 1) (evidence: axios)

MCP

The MCP server exposes one tool:

  • check_typosquat with a path argument. It returns the same report as the CLI --json output: tool name, version, target, verdict, counts (depsChecked, flagged), findings and a summary.

Matching rules

Names are normalized by lowercasing before comparison. A dependency that is itself in the popular list is never flagged. For every other dependency, the strongest matching rule wins:

  • SEPARATOR-SQUAT (high severity): the dependency name equals a popular name once hyphens, underscores and dots are stripped from both names, but the raw names differ. Example: node_fetch vs node-fetch.
  • DISTANCE-1 (high severity): Levenshtein edit distance 1 from a popular name. Example: axioss vs axios.
  • DISTANCE-2 (medium severity): Levenshtein edit distance 2 from a popular name whose length is 9 or more characters. Short names are excluded at distance 2 because too many unrelated short names sit within two edits of each other. Example: typescrpit vs typescript.

Scope confusion is not checked: an unscoped dependency that equals only the unscoped part of a scoped popular name (for example client vs @prisma/client) is too weak a signal to flag.

Verdict

  • CLEAR: no dependency resembled a popular package name.
  • SUSPECT: at least one dependency was flagged.

Limits

  • The popular package list is a snapshot dated 2026-10-25, written from knowledge of the npm ecosystem. It will drift: new packages become popular and old ones fade, and a snapshot cannot track that.
  • Edit distance catches typos, not every squatting style. It does not catch combosquats (a popular name combined with an extra word, such as axios-helper), homoglyph or bit squats, or scope tricks beyond the separator rule above.
  • The checker reads names only. It does not inspect package contents, maintainers, download counts or publish history, so it cannot judge malicious intent.
  • A flag is a resemblance, not an accusation. Legitimate packages can sit one edit away from a popular name. Treat every finding as a prompt to look, not as proof of wrongdoing.

License

MIT

Source: README.md at commit 739267b

Tools

1

check_typosquat

Check a repo's dependency names against a bundled snapshot of popular npm package names: any dependency at edit distance 1 from a popular name (distance 2 for names of 9+ chars) that is not itself the popular package is flagged as a possible typosquat, with the popular name it resembles. Verdict CLEAR or SUSPECT.

Parameterspathrequired

Version history

1
  1. v0.1.0LatestOct 30, 2026

Score

90% 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
  • 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 listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts