Dep Scope

io.github.FlorianBruniauxPublished by GitHub account FlorianBruniauxv0.4.2Updated Oct 25, 2026

Symbol-level npm dependency analysis: scan verdicts, native alternatives, migration prompts.

The publisher's own server: Scope (AEC) - Preview

VerifiedSTDIODesktop onlyDeveloper ToolsData & Analytics

Overview

AI-generated overview

A local MCP server that analyzes a TypeScript/JavaScript project's npm dependencies at symbol level and drafts migration prompts for an AI assistant.

What you can do
Scan a project and get per-dependency verdicts such as keep, remove, recode to native, or peer dependency, with options for duplicates, transitive polyfills and Knip results. Break down a single package to see which of its symbols the code actually uses. List packages that could be replaced by native APIs or consolidated. Generate a context-aware migration prompt for a chosen package. Detect overlapping or duplicate libraries.
When to use it
Useful when auditing a legacy or dependency-heavy TypeScript/JavaScript project, consolidating several libraries that do the same job, or preparing a refactor that an AI assistant can carry out from a generated prompt. Not aimed at simple unused-dependency detection, which the README suggests leaving to Knip.
Requirements
Runs locally via npx, so Node.js 18 or newer is needed, plus a TypeScript/JavaScript project with a package.json. No accounts, API keys or headers are declared. The README recommends running the init command once to create a config file before the first scan.
Before you install
Scanning reads project source and config files on the local machine; results depend on the configured source directories, and the README warns that a narrow scope can produce false unused verdicts, so verify with a full-root scan before removing anything. The server only analyzes and generates prompts; it does not edit code itself, but acting on its removal recommendations is destructive if wrong.

Installation

In SourceWeft

  1. Open Dep Scope 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

dep-scope

[Florian Bruniaux] Florian BRUNIAUX · AI Founding Engineer @ Méthode Aristote
13 years from developer to CTO / VP Eng · Blog ↗ · Projects ↗

[CI] [npm version] [MCP Registry] [License: MIT] [Node.js]

Symbol-level dependency analysis + LLM-ready migration prompts for TypeScript/JavaScript projects.

"Knip tells you what's unused. dep-scope tells you how you use what you keep, and generates the prompt to remove it."

When to use dep-scope

Good use cases:

  • Legacy project audit: Finding lodash functions that now have native equivalents
  • Library consolidation: Do we really need 3 icon libraries?
  • Migration: Generate a context-aware prompt and let Claude Code do the refactoring
  • Curiosity: "Which symbols from this 50KB library do we actually use?"

Not the right tool if:

  • You just want unused deps → use Knip instead
  • Your codebase is already well-maintained → dep-scope will mostly say "KEEP"

Quick Example

bash
$ dep-scope scan
═══════════════════════════════════════════  dep-scope Analysis Report═══════════════════════════════════════════
Summary:  Total dependencies: 45  ✓ Keep:          38  ↻ Recode Native: 3  ✗ Remove:        2  ⊕ Peer Dep:      4
Action Items:  Remove (unused):    ✗ moment    ✗ has-flag
  Recode to native:    ↻ lodash.debounce (1 symbol) → custom debounce function    ↻ array-includes (1 symbol) → Array.prototype.includes    ↻ left-pad (1 symbol) → String.prototype.padStart

How it compares

FeatureKnipDepcheckModernedep-scope
Unused detection✅ Excellent✅ Good❌⚠️ Basic
Config file scanning✅✅❌✅
Symbol-level analysis❌❌✅✅
Native alternatives database❌❌✅ (lodash)✅ 195 packages
e18e micro-utilities coverage❌❌❌✅
Transitive graph analysis❌❌❌✅
Monorepo workspace support⚠️❌❌✅
Duplicate detection❌❌❌✅
LLM migration prompt❌❌❌✅
MCP Server (AI editors)❌❌❌✅
OSS / free✅✅❌ enterprise✅

Recommendation: Use Knip for unused detection, dep-scope for deeper analysis and migration. They work well together (dep-scope auto-detects Knip if installed).

Installation

CLI (global):

bash
npm install -g @florianbruniaux/dep-scope

Without installation:

bash
npx @florianbruniaux/dep-scope scan

MCP Server (AI editors — no CLI needed):

Add to your editor's MCP config and the server runs on demand via npx. See the MCP Server section below for per-editor config snippets.

From source:

bash
git clone https://github.com/FlorianBruniaux/node-dep-scope.gitcd node-dep-scopenpm install && npm run build && npm install -g .

Quick Start

bash
cd /path/to/your/project
dep-scope init                        # configure dep-scope for your project (interactive)dep-scope scan                        # full scandep-scope scan --root                 # scan full project, including scripts/ tools/ bin/dep-scope scan --check-duplicates     # include duplicate detectiondep-scope scan --check-transitive     # surface transitive polyfills (e18e database)dep-scope scan --each-workspace       # monorepo: scan each package individuallydep-scope migrate                     # generate migration prompts for all candidatesdep-scope migrate lodash              # target a specific packagedep-scope report -o ./audit.md        # markdown report

Setup: dep-scope init

Run dep-scope init before your first scan. The wizard detects your project and generates a config in 4 questions:

dep-scope init
  Detected: Next.js project  Found dirs: src/, scripts/, app/
? Source directories to scan:  ● Auto-detected: src/, scripts/, app/  (recommended)  ○ Full project root (.) — includes everything  ○ Choose directories manually...
? Include devDependencies in scan? (y/N)? Symbol threshold for RECODE_NATIVE verdict: (5)? Config format:  ● .depscoperc.json  (simple JSON, recommended)  ○ depscope.config.ts  (TypeScript with autocomplete)
✓ Created .depscoperc.json  Preset: react  |  Dirs: src, scripts, app  |  Threshold: 5

Use -y to skip prompts in CI: dep-scope init --yes.

Getting accurate results

Auto-detection covers: src, app, lib, pages, components, hooks, server, scripts, tools, bin, cli. If your project has code elsewhere, pass --root to scan everything, or set srcPaths explicitly in .depscoperc.json:

json
{  "srcPaths": ["src", "app", "scripts", "tools"]}

False positive "unused" verdict? The package may be used in a directory outside the scan scope (scripts/, tools/, etc.). Run dep-scope scan --root to verify before removing anything. When a removal recommendation appears with a narrow scan scope, dep-scope will warn you.

Config file detection

dep-scope automatically scans config files at the project root to avoid false "unused" verdicts for packages referenced as strings — a common pattern for CLI tools, test runners, and framework plugins.

Detected automatically:

Config fileExamples detected
package.json scripts"lint": "oxlint .", "format": "oxfmt ."
vitest.config.*environment: "jsdom", setupFiles: ["@testing-library/jest-dom"]
vite.config.*plugins: ["@vitejs/plugin-vue"]
next.config.*turbo.rules["*.svg"].loaders: ["@svgr/webpack"]
.storybook/main.*addons: ["@storybook/addon-mcp"]

These packages will appear as INVESTIGATE (or KEEP if well-used) rather than REMOVE.

Opt-out — disable specific detectors in .depscoperc.json:

json
{  "stringReferences": {    "disable": ["storybook-config"]  }}

Available detector IDs: package-json-scripts, vitest-config, vite-config, next-config, storybook-config. Use "disable": "all" to turn off config scanning entirely.

Extend with custom detectors — in depscope.config.ts:

ts
import { defineConfig, defineDetector } from "@florianbruniaux/dep-scope";
export default defineConfig({  stringReferences: {    detectors: [      defineDetector({        id: "my-tool-config",        label: "my-tool.config.json",        filePatterns: ["my-tool.config.json"],        async detect(filePath, ctx) {          // return StringReference[] for packages found in this file          return [];        },      }),    ],  },});

MCP Server

dep-scope exposes a Model Context Protocol server so AI editors (Claude Code, Cursor, Windsurf) can query your dependencies inline — no CLI, no markdown files, no copy-paste.

Listed on the official MCP Registry: io.github.FlorianBruniaux/dep-scope

Available tools

ToolParamsWhat it does
scan_projectprojectPath, srcPaths, threshold, includeDev, checkDuplicates, checkTransitive, withKnipFull dependency scan with verdicts
analyze_packagepackageName, projectPath, srcPathsSymbol-level breakdown of one package
get_migration_candidatesprojectPathList all RECODE_NATIVE + CONSOLIDATE packages
generate_migration_promptpackageName, projectPathGenerate a migration prompt inline
find_duplicatesprojectPathDetect overlapping libraries

Setup

Add the following mcpServers entry to your editor's config. The server runs on demand via npx — no global install required.

Claude Code — ~/.claude.json:

json
{  "mcpServers": {    "dep-scope": {      "command": "npx",      "args": ["--package=@florianbruniaux/dep-scope", "-y", "dep-scope-mcp"]    }  }}

Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json:

json
{  "mcpServers": {    "dep-scope": {      "command": "npx",      "args": ["--package=@florianbruniaux/dep-scope", "-y", "dep-scope-mcp"]    }  }}

Cursor — ~/.cursor/mcp.json:

json
{  "mcpServers": {    "dep-scope": {      "command": "npx",      "args": ["--package=@florianbruniaux/dep-scope", "-y", "dep-scope-mcp"]    }  }}

Windsurf — ~/.codeium/windsurf/mcp_config.json:

json
{  "mcpServers": {    "dep-scope": {      "command": "npx",      "args": ["--package=@florianbruniaux/dep-scope", "-y", "dep-scope-mcp"]    }  }}

Once connected, you can ask your AI editor to call scan_project or generate_migration_prompt directly mid-session without running any CLI command.

Documentation

Requirements

  • Node.js >= 18.0.0
  • TypeScript/JavaScript project with package.json

Explore the ecosystem

These projects extend the workflow without duplicating this tool:

Browse the complete open-source galaxy

License

MIT

Source: README.md at commit a7d5db5

Tools

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

Version history

1
  1. v0.4.2LatestSep 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

Other Scope integrations