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.

Dendro React

NPM · DENDRO-REACT-MCP

React codebase semantics for AI agents, with a VS Code visualizer you both share. Free, local.

Available components

0 this week 68 Trust /100

Last scanned (6 hours ago)

Scores higher than 36% of npm servers

Category Developer Tools

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 Security100
  • 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
  • 0 of 28 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency45
Schema Quality & AI Usability69
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 5852 tokens (~162/item across 36 items; 36 tools + 0 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 Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "visualize_batch" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 37 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

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.

  • 18 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 17 Oct 26 +14
    • Malware scan: pass → unverified ▼ security
    • Known CVEs: pass → unverified ▼ security
    • 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
    • Dependency health: 1.00 → unverified ▼ functional
    • Tool coverage: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
    • First check of Destructive annotations: 0 functional
    • First check of Tool coverage: 100 functional
    • Package version: 0.9.0 → 0.9.3 functional
    • Package version: 0.9.0 → 0.9.2 functional
  • 13 Oct 26 0
    • Security disclosure: unverified → fail ▼ functional
  • 11 Oct 26 0
    • Security disclosure: fail → unverified ▼ functional
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Aug 26 0
    • First check of Tool safety: unverified security
    • Stability: Stability not yet verified: this package installed, but its server did not start, so we have no schema to compare. security
    • Schema quality: Schema quality not yet verified: this package installed, but its server did not start, so we have no schema to assess. functional
    • Capabilities: Protocol version not yet verified: this package installed, but its server did not start, so we never saw its MCP handshake. functional
    • Tool coverage: Tool coverage not yet verified: this package installed, but its server did not start, so we have no tool definitions to assess. functional
    • Package version: 0.8.1 → 0.9.0 functional
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Aug 26 0
    • Known CVEs: pass → unverified ▼ security
    • Source repository: fail → pass ▲ security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • Security disclosure: unverified → fail ▼ functional
    • Dependency health: 1.00 → unverified ▼ functional
    • Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
    • Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. functional
    • Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
    • Package version: 0.7.1 → 0.8.1 functional
    • Package version: 0.7.1 → 0.8.0 functional
    • Package version: 0.7.1 → 0.7.2 functional
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 5 Nov 2026 · Analysed npm/dendro-react-mcp@0.9.3

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 28 packages
Packages resolved 28
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 36 exposed · ~5,342 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
analyze_codebase ~126

Comprehensive codebase analysis in one call. Runs get_component_tree + get_complexity_report + get_context_map + detect_circular_deps and returns a combined report with summary. Use this instead of calling 4 tools separately. Pass the entry file (e.g., App.tsx) and optionally a root path for directory-level scans.

NameTypeReqDescription
entryFilestringyesAbsolute path to the entry React component file (e.g., /path/to/App.tsx)
rootPathstring–Root directory for complexity/context/deps scanning. Defaults to the entry file's directory.

No output schema declared.

No examples provided.

batch_analysis ~90

Run multiple analyses across multiple entry files in one call. Returns per-entry results plus aggregate summary (total components, highest complexity, shared contexts). Ideal for monorepos and multi-entry apps.

NameTypeReqDescription
analysesarrayyesWhich analyses to run on each entry
entriesarrayyesArray of entry files to analyze
maxDepthnumber–Maximum depth for tree traversal. Default: unlimited

No output schema declared.

No examples provided.

detect_circular_deps ~132

Detect circular import dependencies. Pass the project SOURCE ROOT as a directory for a full scan (scan is capped at depth 5 below rootPath, node_modules excluded — the response discloses the scanned scope, and hasCircularDeps:false only covers that scope). Returns each cycle with its file path and a fix recommendation. To show cycles visually afterwards: open_visualizer + visualize_batch with highlight (red, pulse) steps.

NameTypeReqDescription
rootPathstringyesPath to scan - can be a single file or a directory. If a directory, scans all .ts/.tsx/.js/.jsx files.

No output schema declared.

No examples provided.

export_analysis ~203

Export Dendro analysis in one of four formats: "mermaid" (flowchart syntax for docs), "json" (enriched multi-analysis document), "svg" (color-coded diagram image), "markdown" (formatted report — supports persona: developer/ceo/investor/eng-manager/onboarding). Format-specific options are ignored by other formats.

NameTypeReqDescription
analysesarray–json/markdown: which analyses to include. Default: ["tree"] (markdown default depends on persona)
directionstring–mermaid: graph direction. Default: LR
entryFilestringyesAbsolute path to the entry React component file
formatstringyesOutput format
maxDepthnumber–Maximum depth for tree traversal. Default: unlimited
personastring–markdown: target audience — changes formatting, language, structure. Default: developer
themestring–svg: color theme. Default: dark

No output schema declared.

No examples provided.

find_state_owner ~108

Find which component(s) own a given state variable by name. Uses static analysis (getHookDeps) cross-referenced with the live runtime tree to identify mounted components that define the matching useState variable.

NameTypeReqDescription
entryFilestring–Optional entry file path to scan if no matches found in source-mapped components
stateNamestringyesName of the state variable to search for (case-insensitive, partial match). E.g., "loading", "user", "email"

No output schema declared.

No examples provided.

get_complexity_report ~130

Score every component's complexity (1-10) from ITS OWN declaration span — lines, JSX depth, props, and hooks are counted per component, so co-located components in one file each get their own accurate score. Use threshold 5+ for moderate issues, 7+ for refactoring candidates. Scope: rootPath scanned to depth 5, node_modules excluded; unparseable files are reported in warnings rather than silently dropped.

NameTypeReqDescription
rootPathstringyesPath to scan for React components
thresholdnumber–Minimum complexity score to include (default: 0)

No output schema declared.

No examples provided.

get_component_contract ~212

Call this BEFORE editing a component — its full contract in one call: props (from the TypeScript type when resolvable, destructuring otherwise), state variables, hooks + contexts read, contexts provided, direct children, who imports it (workspace-wide blast radius with scope disclosed), per-component complexity, and re-render risk count. Resolves by COMPONENT NAME across the workspace (component names, not file basenames — index.tsx exports resolve correctly); pass a file path instead to skip resolution. The notCovered field lists what this deliberately omits (nav edges, per-prop flow, runtime values) so absence is never misread as none. Replaces the find → details → used_by → hook_deps chain.

NameTypeReqDescription
componentstringyesComponent NAME (e.g. "UserCard") to resolve workspace-wide, or an absolute file path to skip resolution
searchDirstring–Narrow both name resolution and the used-by scan to this directory. Default: workspace root (complete answer).

No output schema declared.

No examples provided.

get_component_details ~59

Get detailed info about a single React component file: type (functional/class), state variables, imports, and direct children. Use after get_component_tree to drill into a specific component.

NameTypeReqDescription
filePathstringyesAbsolute path to the component file

No output schema declared.

No examples provided.

get_component_tree ~161

Start here for structure. Parses the STATIC IMPORT GRAPH from one entry file and returns the component tree: names, types (functional/class), state variables, parent-child edges. Scope: only components reachable from entryFile via static imports — lazy()/dynamic imports and other entry points are not in the tree, so absence from the tree does not mean absence from the app. Prefer analyze_codebase when you want tree + complexity + context in one call.

NameTypeReqDescription
entryFilestringyesAbsolute path to the entry React component file (e.g., /path/to/App.jsx)
maxDepthnumber–Maximum depth to traverse. Default: unlimited. Large responses are bounded previews with explicit omissions; use a displayed absolutePath as entryFile to expand a branch.

No output schema declared.

No examples provided.

get_context_map ~116

Map React Context providers to their consumers: createContext(), Provider usage, useContext(), custom context hooks. Pass the project source root — the scan covers rootPath to depth 5 (node_modules excluded) and zero contexts outside that scope will be missed (the response note says what was scanned). NOT covered: Zustand/Redux/Jotai and other state libraries. Visualize afterwards with visualize_trace_flow (flowType: "context").

NameTypeReqDescription
rootPathstringyesPath to the root file or directory to scan for Context patterns

No output schema declared.

No examples provided.

get_context_pack ~177

Whole-repo orientation in one dense CTX-PACK/0.1 text block (~200-400 tokens): directory rollups with lines-of-code and 6-month commit heat, the largest and hottest files, cross-directory import edges, and entry-point candidates. The header declares the row schema (D dir, F file, E edge, X entry), so the block is self-describing. Call this FIRST in a new repo — it replaces several exploratory listings with one read. Git unavailable degrades honestly (heat columns 0, noted in a comment).

NameTypeReqDescription
rootPathstring–Directory to pack (e.g. the project's src/). Default: the workspace root.
topFilesnumber–How many largest files get F rows (default 10). Files with 3+ recent commits are always included.

No output schema declared.

No examples provided.

get_hook_deps ~77

Analyze React hook dependencies in a component file. Returns details about useEffect, useMemo, useCallback, and other hooks including their dependency arrays, classified by source (prop, state, context, ref). Identifies potential issues like missing dependency arrays.

NameTypeReqDescription
filePathstringyesAbsolute path to the React component file to analyze

No output schema declared.

No examples provided.

get_live_navigation ~72

Get live navigation state — which screens are mounted (active) vs defined but not visible. Cross-references runtime tree with static React Navigation analysis. Works without runtime too (static-only mode).

NameTypeReqDescription
rootPathstringyesPath to the root navigation file or directory containing navigation files (same as get_navigation_structure)

No output schema declared.

No examples provided.

get_live_tree ~100

Get the live component tree from a connected React Native app. Call get_runtime_status first to verify connection. Returns the full hierarchy as currently rendered, including component types and parent-child relationships.

NameTypeReqDescription
includeNativeboolean–Include native/host components like View, Text. Default: true
maxDepthnumber–Maximum depth to return. Default: unlimited
rootComponentstring–Filter to a specific root component by display name

No output schema declared.

No examples provided.

get_modified_components ~203

What changed, as components: every file changed vs a git ref (default HEAD — uncommitted work; pass base:"main" for PR scope) with the components each declares. Call this FIRST when reviewing or testing recent work, then get_component_contract on each result for blast radius — that pair is the "what did I just touch and what depends on it" loop. Changed files with no components still appear (empty components list); deleted files are excluded. Honest errors: not_a_git_repo, bad_ref (unknown or unsafe refs are rejected, never silently swapped for HEAD), and a clean tree says so in the note.

NameTypeReqDescription
basestring–Git ref to compare against (e.g. "main" for PR scope, a SHA, "HEAD~3"). Default: HEAD — shows uncommitted work (staged + unstaged + untracked).
workspaceRootstring–Project root to diff. Default: the workspace root.

No output schema declared.

No examples provided.

get_navigation_structure ~139

Parse the declaratively-defined routing structure. Auto-detects: React Navigation, Expo Router, Next.js App Router, Next.js Pages Router, React Router v6/v7, Remix. Returns navigators + screens + a formatted tree, and names which framework was detected when nothing parses. KNOWN LIMIT: models route DEFINITIONS only — transitions made imperatively (navigate(), router.push()) are not edges, so the graph can under-report reachability (a warning flags this when detected). Pass the PROJECT ROOT directory, not a component file.

NameTypeReqDescription
rootPathstringyesPath to the root navigation/routing file or directory containing the project

No output schema declared.

No examples provided.

get_prop_flow ~150

Trace how a prop flows from a source component down through its children, tracking renames and pass-through HOCs. An empty flow means the prop is missing, never forwarded, or forwarded through a pattern the tracer cannot follow (spreads into unknown components, render props, context) — the response note disambiguates; it does NOT prove the prop is unused. Visualize afterwards with visualize_trace_flow (flowType: "prop").

NameTypeReqDescription
maxDepthnumber–Maximum depth to trace. Default: 10
propNamestringyesName of the prop to trace through the component tree
sourceFilestringyesAbsolute path to the source component file where the prop originates

No output schema declared.

No examples provided.

get_rerender_risks ~166

Detect React re-render anti-patterns: inline objects/arrays/functions in JSX props, missing useCallback/useMemo. Returns risks by file with severity, line, and fix suggestions. Modern-React aware: when the project uses React Compiler, memoization findings are auto-downgraded to low (the compiler handles them — do NOT add manual memoization there); "use server" files are skipped (server code never re-renders); <form action> handlers are not flagged (React 19 idiom). Read the warnings field — it states every adjustment made.

NameTypeReqDescription
minSeveritystring–Minimum severity to include. Default: all severities
rootPathstringyesPath to scan — a single file or directory of React components

No output schema declared.

No examples provided.

get_runtime_state ~85

Find a component in the live runtime tree by name. Call get_runtime_status first to verify connection. Returns source file path, parent, children, and position in the live tree.

NameTypeReqDescription
componentNamestringyesDisplay name of the component to find (case-insensitive, partial match)
includeChildrenboolean–Include direct children in the response. Default: true

No output schema declared.

No examples provided.

get_runtime_status ~47

Check runtime connection status. MUST call this first before get_live_tree, get_runtime_state, or any live introspection tools. Returns connection status, component count, and setup instructions if disconnected.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_screen_components ~148

Map which screens use which components in a React Native codebase. Identifies screens from navigation configuration, screens/ folder, or *Screen suffix. For each screen, traces component imports and builds a usage tree showing all components used. Use maxDepth to limit tree depth for large codebases.

NameTypeReqDescription
maxDepthnumber–Maximum depth to traverse component imports (default: 6, range: 1-12). Lower values produce smaller output for large codebases.
rootPathstringyesPath to the root file or directory to scan for screens and components
screenNamestring–Optional: filter to a specific screen by name (case-insensitive, partial match)

No output schema declared.

No examples provided.

get_usage_guide ~60

Get recommended workflows, tool categories, sequencing rules, and tips for using Dendro MCP effectively. Call this once at the start of a session to learn how to use the 36 available tools. Returns structured JSON with workflow recipes and best practices.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_usage_stats ~47

Show local tool usage statistics. Returns invocation counts, first/last used timestamps for each tool. Data is stored locally in ~/.dendro/telemetry.json and never leaves the machine.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_used_by ~164

Find every component that imports the given component — its dependents / reverse dependency graph. Call this BEFORE modifying or renaming a component to measure blast radius; follow with get_prop_flow on affected edges. Scans the workspace root by default (depth ≤ 8, node_modules excluded) and the response reports the exact scope searched. An empty usedBy with workspace-root scope means genuinely unimported (a removal candidate); with a narrower searchDir it is inconclusive — widen and retry.

NameTypeReqDescription
componentPathstringyesAbsolute path to the component file to find usages of
searchDirstring–Directory to scan. Default: the workspace root (complete answer). Pass a subdirectory only to deliberately narrow the search — importers outside it will be missed.

No output schema declared.

No examples provided.

inspect_live_component ~158

Deep inspect a running component's props, state, hooks, and context values. Call get_runtime_status first to verify connection. Returns real runtime values. Use before modify_runtime_state. Pass diffFromPrevious:true on a SECOND call to get what changed since the last inspection of the same component (props/state/hooks/context deltas) instead of the full snapshot.

NameTypeReqDescription
componentNamestringyesDisplay name of the component to inspect (case-insensitive, partial match). Must be a user-defined component, not a host element like "View" or "Text".
diffFromPreviousboolean–Compare against the previous inspection of this component and return only the deltas. Requires a prior call without this flag (that call is the baseline).

No output schema declared.

No examples provided.

manage_snapshots ~227

Analysis snapshots for historical tracking, one tool, three actions: "save" (run analyses and store under .dendro/snapshots/ — requires entryFile), "list" (metadata for every saved snapshot), "compare" (diff two snapshots or a snapshot vs "current" live analysis — requires base and target; entryFile required when either side is "current"). Typical loop: save before a refactor, compare base:"<id>" target:"current" after.

NameTypeReqDescription
actionstringyesWhat to do
analysesarray–save: which analyses to include. Default: ["tree", "complexity", "context"]
basestring–compare: snapshot ID or "current"
entryFilestring–save: entry file to analyze (required). compare: required when base or target is "current".
labelstring–save: human-readable label (defaults to filename)
targetstring–compare: snapshot ID or "current"
workspaceRootstringyesAbsolute path to the workspace root directory

No output schema declared.

No examples provided.

modify_runtime_state ~166

Modify a component's props/state/hooks/context at runtime. Call inspect_live_component first to see current values and identify the right paths. For a simple single-value state change, targetType "state" with the hook index from inspect_live_component is the usual path.

NameTypeReqDescription
componentNamestringyesDisplay name of the component to modify (case-insensitive, partial match)
hookIDnumber–Hook ID for hook state overrides (from inspect_live_component hooks array)
patharrayyesPath within the value to modify (e.g., ["user", "name"] for state.user.name). Empty array [] to replace the whole value.
typestringyesWhich part of the component to modify
value–yesNew value to set at the path

No output schema declared.

No examples provided.

open_visualizer ~105

Open the Dendro visualizer webview in VS Code. Call this ONCE before visualize_batch or visualize_analysis (they can also auto-open by passing an entryFile param). The response reports the parsed tree size — a 1-2 node tree means the entry file is likely a wrapper/layout; pick a higher-fan-out entry instead.

NameTypeReqDescription
entryFilestringyesAbsolute path to the entry React component file (e.g., /path/to/App.tsx)

No output schema declared.

No examples provided.

quick_audit ~198

Quick health check for a React codebase. Returns top 5 most complex components, circular dependencies, prop-drilling candidates (5+ props), heavy context providers, effect-hygiene review signals (resources without detected effect cleanup, informational setter-only effects, possible fetch races), unused files nothing imports (dead code — verify before deleting), and an overall health grade (A-F). Baseline support: baseline:"update" records current issues as known; subsequent audits then report NEW issues separately (gate CI on those, not the backlog).

NameTypeReqDescription
baselinestring–Known-issues baseline at <rootPath>/.dendro/audit-baseline.json. "compare" (default): if a baseline exists, split findings into known vs NEW. "update": write the current findings as the new baseline.…
rootPathstringyesRoot directory to audit (e.g., /path/to/src/)

No output schema declared.

No examples provided.

run_workflow ~134

Guided persona-driven analysis playbooks. Returns step-by-step instructions to follow IN ORDER (do not parallelize the tool calls it prescribes). Personas: audit (deep technical audit for React developers), sprint_check (under-200-word health check for engineering managers), ceo_briefing (jargon-free architecture briefing), investor_scorecard (6-category technical due diligence), dev_onboarding (progressive walkthrough for developers joining the project).

NameTypeReqDescription
entryFilestringyesAbsolute path to the entry React component file (e.g., /path/to/App.tsx)
personastringyesWhich playbook to run

No output schema declared.

No examples provided.

submit_feedback ~439

Send a feedback debrief about Dendro to its maker. REQUIRES EXPLICIT USER CONSENT — this is the only Dendro tool that sends anything off-machine, so ask first, every time. Make the invitation warm, not clinical, e.g.: "Want me to send a quick feedback note to Dendro's maker? It's a short debrief of what worked and what fumbled this session — it directly shapes what gets fixed. Nothing is sent unless you say yes, and it never includes your code or file paths." Offer it when tools errored or the user voices an opinion about Dendro; never call it on your own initiative. What is sent: exactly the fields you pass, plus server version, platform, and per-tool call/error counts (tool names only — no error text, no file paths, no code). Write the debrief the way you would for a colleague: honest fumbles AND honest hooks.

NameTypeReqDescription
contactstring–Optional contact handle IF the user wants a reply (never fill this without the user providing it)
fumblesarray–Retries, wrong guesses, confusing responses, dead ends — most valuable field
hooksarray–Moments the tooling genuinely helped or impressed
summarystringyes2-5 sentence honest overall assessment of using Dendro this session
unansweredQuestionsarray–THE HIGHEST-VALUE FIELD: React/React Native questions you WANTED answered about this codebase but Dendro could not answer — where you fell back to reading files, grepping, or guessing. Absence is inv…
userConsentedbooleanyesMUST be true, and only after the user explicitly agreed in this conversation. Passing true without asking the user is a violation of their trust.
wouldReuseUnpromptedboolean–Would you reach for Dendro again for a future task in this repo without being told to?

No output schema declared.

No examples provided.

trace_live_prop ~118

Trace live prop changes through the component tree and animate in the visualizer. Call get_runtime_status first. Call once for baseline, then again after a prop change to see animated flow paths.

NameTypeReqDescription
componentNamestringyesDisplay name of the component to trace prop flows from (case-insensitive, partial match)
entryFilestringyesAbsolute path to the entry React component file (needed for static analysis)
propNamestring–Specific prop name to trace. If omitted, auto-detects changed props via diff.

No output schema declared.

No examples provided.

trigger_projection ~120

Diff runtime snapshots and project downstream effects. Call get_runtime_status first. Call once for baseline, then again after a re-render to see what changed and how data flows. Set verify=true to also run Verified Projection.

NameTypeReqDescription
componentNamestring–Filter to a specific component by name (case-insensitive, partial match)
entryFilestringyesAbsolute path to the entry React component file (e.g., /path/to/App.tsx)
verifyboolean–If true, also run Verified Projection on changed components to annotate verification status

No output schema declared.

No examples provided.

verify_state_flows ~241

Verified Projection in one call: generate testable state-flow hypotheses from static analysis, write Jest tests for them, run the tests, and annotate the visualizer tree (green=verified, red=failed, amber=inconclusive). Use stopAfter to run only part of the chain and inspect intermediates: "hypotheses" (static analysis only, no files written), "tests" (also writes Jest files to __dendro__/tests/), "run" (also executes them). Default runs everything including annotation.

NameTypeReqDescription
clearPreviousboolean–annotate: clear existing annotations first. Default: true
entryFilestringyesAbsolute path to the entry React component file
flowTypesarray–Which flow types to analyze. Default: all three
maxHypothesesnumber–Maximum hypotheses to generate. Default: 20
stopAfterstring–How far to run the chain. Default: annotate (full pipeline)
timeoutnumber–Jest execution timeout in ms. Default: 60000
workspaceRootstringyesAbsolute path to the workspace root directory

No output schema declared.

No examples provided.

visualize_analysis ~136

Open the visualizer and auto-highlight based on analysis focus. Combines open_visualizer + analysis + highlight + annotate + zoom into one call. Focus options: "complexity" (red/orange highlights with scores), "deps" (circular dependency cycles in red with pulse), "context" (providers in purple), "performance" (re-render risks in orange), "all" (everything). Requires VS Code extension.

NameTypeReqDescription
entryFilestringyesAbsolute path to the entry React component file (e.g., /path/to/App.tsx)
focusstring–Analysis focus to visualize. Default: "all"

No output schema declared.

No examples provided.

visualize_batch ~328

Execute visualization commands sequentially and return correlated node-match/render acknowledgments. success:true means the entire batch was confirmed rendered with no missing targets. Manual walkthroughs return waiting_for_user after the first applied step; later steps have not run. Check progress using action:"status" with the returned requestId. Timeouts, partial matches, skipped/superseded batches and delivery failures are explicit. Always use this instead of parallel individual visual commands. Include labels; waitForUser:true gives users Back/Next/Skip pacing.

NameTypeReqDescription
actionstring–Default: execute. status reads a previous request without dispatching commands.
commandsarray–Required for execute: 1–100 commands to execute sequentially
delaynumber–Auto-play delay between commands in ms (only used when waitForUser is false). Default: 800.
entryFilestring–Entry file path — if provided and no visualizer is open, auto-opens one
requestIdstring–Required for action:status; use the ID returned by execute.
sessionIdstring–Target specific visualizer session
timeoutMsinteger–Bounded acknowledgment wait, default 10000 ms. After timeout use action:status; commands may still finish.
waitForResultboolean–Default true: wait for completion or a manual pause. false returns queued, which does not establish matching or rendering.
waitForUserboolean–Show a "Next" button between commands so user controls pacing. Recommended: true for presentations and audits.

No output schema declared.

No examples provided.

Install

How do I install the Dendro React MCP server?

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

npm · dendro-react-mcp

# add to Claude Code
claude mcp add rooneytech-dendro-react -- npx -y dendro-react-mcp
Common questions

What is the Dendro React MCP server?

Dendro React is an MCP server listed in the public MCP registry as io.github.RooneyTech/dendro-react. React codebase semantics for AI agents, with a VS Code visualizer you both share. Free, local. This page covers its npm package (dendro-react-mcp).

Is the Dendro React MCP server safe to use?

Dendro React scores 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. 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 Dendro React MCP server expose?

Dendro React exposes 36 tools: get_component_tree, get_component_details, get_component_contract, get_modified_components, detect_circular_deps, and 31 more. Their descriptions and schemas cost roughly 5,342 tokens of context every time the server is loaded.

Is the Dendro React MCP server still maintained?

Dendro React is still listed as active in the MCP registry. We last reached this channel on 5 November 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 Dendro React MCP server under?

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