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.

DevLens

NPM · @DEVLENSIO/CLI · SCANNED SEP 21

Query a precomputed code graph (nodes, edges, summaries) of TS/JS/React/Next.js/Node repos via MCP.

Available components

0 this week 90 Trust /100
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 Security93
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs a script at install time (postinstall) that we could not recognise. It may be perfectly ordinary, but we do not read the published tarball, so we cannot say what it does. View diagnostics → Partial
  • 27 of 98 dependencies flagged as unhealthy (1 deprecated). View diagnostics → Partial
Provenance & Transparency84
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to devlensio/devlensOSS). View diagnostics → Pass
  • License check failed: no license is declared. See how to fix → Fail
  • Actively maintained (last published 29 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability81
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3342 tokens (~151/item across 22 items; 21 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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage83
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 49% 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 21 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 23 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
Install

How do I install the DevLens MCP server?

DevLens runs locally as an npm package, launched with npx -y @devlensio/cli. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @devlensio/cli

# add to Claude Code
claude mcp add devlensio-devlens -- npx -y @devlensio/cli
// .cursor/mcp.json
{
  "mcpServers": {
    "devlensio-devlens": {
      "command": "npx",
      "args": [
        "-y",
        "@devlensio/cli"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "devlensio-devlens": {
      "command": "npx",
      "args": [
        "-y",
        "@devlensio/cli"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add devlensio-devlens -- npx -y @devlensio/cli
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "devlensio-devlens": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@devlensio/cli"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add devlensio-devlens --command npx --arg -y --arg @devlensio/cli
# ~/.hermes/config.yaml
mcp_servers:
  devlensio-devlens:
    command: "npx"
    args: ["-y", "@devlensio/cli"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "devlensio-devlens": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@devlensio/cli"
      ]
    }
  }
}
# add to Vellum
assistant mcp add devlensio-devlens -t stdio -c npx -a -y @devlensio/cli
// mcp.json
{
  "mcpServers": {
    "devlensio-devlens": {
      "command": "npx",
      "args": [
        "-y",
        "@devlensio/cli"
      ]
    }
  }
}
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.

  • 20 Sept 26 0
    • Stability: 0.97 → pass security
  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 −2
    • Stability: pass → 0.87 functional
  • 15 Sept 26 0
    • Stability: 0.97 → pass security
  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 −1
    • Security disclosure: unverified → fail functional
    • Stability: pass → 0.90 functional
  • 11 Sept 26 0
    • Stability: 0.97 → pass security
    • Security disclosure: fail → unverified 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 21 Sept 2026 · Analysed npm/@devlensio/cli@0.5.5

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 devlensio/devlensOSS
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/devlensio/devlensOSS/.github/workflows/release.yml@refs/tags/v0.5.5
Rekor log index 2564690738
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:e06c66bd2a4bfc3d261a473610ef445cc78d7999066a66b6c782b1b683639be4d4fa3943bac2472a1bdd51d866a14f6c4caa0f2393228566b345c1701

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
postinstall unreviewed node scripts/postinstall.mjs

Background: Why install scripts are a supply-chain risk →

Dependencies 98 packages
Packages resolved 98
Deprecated 1
Stale 25
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 21 exposed · ~2,501 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 ~83

Analyze a repository at a local path (or GitHub URL) into a DevLens graph and persist it. Returns the graphId, commit, and compact stats — NOT the node dump. Run this once before using the query tools on a new repo.

NameTypeReqDescription
isGithubRepobooleanDefault false
pathstringyesLocal repo path or GitHub URL

No output schema declared.

No examples provided.

analyze_changes ~107

Compare two analyzed commits and report what changed (added/removed/code-changed/score-changed nodes). For added and code-changed nodes it also computes the upstream blast radius so you can see the impact of the change set. Both commits must already be analyzed.

NameTypeReqDescription
fromstringyesOlder commit hash
graphIdstringyes
radiusnumberBlast-radius hops for changed nodes. Default 1.
tostringyesNewer commit hash

No output schema declared.

No examples provided.

architecture_brief ~186

One-call repo architecture brief: modules, routes, stores, hooks, key flows, connections, and health (cycles + security). Replaces the 7-step orchestration of overview+subgraph+find_nodes+khop+blast_radius+get_summaries+cycles — one call instead of 7-12. The architectural backbone (modules/routes/stores/hooks/flows) is enumerated fully and never truncated; only the long-tail core-node inventory is capped to protect budget. Read-only.

NameTypeReqDescription
commitHashstring
graphIdstringyes
maxModulesnumberCentral nodes to cluster into modules. Default 5.
maxRoutesTracednumberRoutes to trace call paths for. Default 8.
tokenBudgetnumberOutput token budget (caps the core-node inventory). Default 8000.

No output schema declared.

No examples provided.

check_freshness ~91

Check if the analyzed graph is stale vs the current HEAD of the repo. Reports whether the working tree is dirty, whether HEAD is ahead of the last analyzed commit, and summary coverage. Also called internally by workflow tools — call this before relying on architecture_brief / security_brief / review_pr to decide whether to re-analyze. One call; read-only.

NameTypeReqDescription
graphIdstringyes

No output schema declared.

No examples provided.

find_nodes ~187

Search/filter nodes in a graph. Returns COMPACT refs (id, name, type, path, score, 1-line summary) — not source. Combine filters (AND). Use nodeIds for an exact batch fetch. Results are score-ranked and capped by `limit` (default 25).

NameTypeReqDescription
commitHashstring
dirstringNodes under this folder (prefix)
filePathstringNodes in exactly this file
graphIdstringyes
limitnumberDefault 25
minScorenumber
namestringSubstring match on node name
nodeIdsarrayExact ids to resolve; ignores other filters
nodeTypesarraye.g. COMPONENT, HOOK, FUNCTION, ROUTE
severitystringMin security severity

No output schema declared.

No examples provided.

get_blast_radius ~161

Impact analysis: the UPSTREAM nodes that depend on the target (who calls/uses it). Answers 'if I change this node, what could break'. Each result carries its hop distance. `radius` defaults to 2; when omitted and the direct (hop-1) fanout is >=100, it returns hop-1 only and sets truncated=true — re-call with an explicit `radius` to traverse deeper, uncapped.

NameTypeReqDescription
commitHashstring
edgeTypesarrayRestrict traversal to these edge types
graphIdstringyes
nodeIdstringyes
radiusnumberHops to traverse. Default 2 (capped); explicit value is uncapped.

No output schema declared.

No examples provided.

get_context ~296

One-call token-budgeted context packet: keyword-seeded retrieval (no embeddings — OSS limitation; cloud adds embeddings), intent-aware traverse, and budget-capped assembly. Replaces find_nodes -> get_node -> blast_radius -> get_summaries fan-out (5-8 calls). Keyword scoring: +3 for name match, +2 for path match, +1 for business-summary match — blended 60/40 with PageRank. Falls back to central nodes on keyword miss. Pass seedNodeIds to bypass keyword search when you already have target node ids. For intent='impact' you must pass focus or seedNodeIds (else the tool errors with IMPACT_REQUIRES_FOCUS and points to review_pr). Read-only.

NameTypeReqDescription
commitHashstring
focusstringOptional nodeId or filePath to force as a seed (prepended to keyword seeds). Required for intent='impact'.
graphIdstringyes
hopsTraversal radius. Default 1; pass 2 for deeper context.
intentstringControls seed count, edge types, and direction. Default generic.
querystringyesKeyword query for seeding retrieval (name/path/business-summary substring match).
seedNodeIdsarraySkip keyword seeding — use these node ids directly as seeds.
tokenBudgetnumberOutput token budget. Default 8000.

No output schema declared.

No examples provided.

get_coverage ~83

Graph health report: how many nodes are summarized vs structure-only, by type, plus the model and prompt version used. Use to surface 'the graph is only 60% summarized' so you can warn the user instead of silently operating on a partial graph. One call; read-only.

NameTypeReqDescription
commitHashstring
graphIdstringyes

No output schema declared.

No examples provided.

get_khop ~130

Dependency expansion: the DOWNSTREAM nodes the target calls/uses, out to `radius` hops. Answers 'what does this node depend on'. Same radius/cap behavior as get_blast_radius (default 2, capped at hop-1 fanout >=100 unless radius is explicit).

NameTypeReqDescription
commitHashstring
edgeTypesarrayRestrict traversal to these edge types
graphIdstringyes
nodeIdstringyes
radiusnumberHops to traverse. Default 2 (capped); explicit value is uncapped.

No output schema declared.

No examples provided.

get_node ~133

Full detail for ONE node: metadata, callers (who depends on it), callees (what it calls), and its technical/business/security summaries. Returns precomputed summaries (~50 tokens) instead of source — use this before opening a file. `include` selects which sections; default = everything. `edgeTypes` filters callers/callees by edge kind.

NameTypeReqDescription
commitHashstring
edgeTypesarrayRestrict callers/callees to these edge types
graphIdstringyes
includearrayDefault: all sections
nodeIdstringyes

No output schema declared.

No examples provided.

get_node_code ~68

Raw source code for a node. EXPENSIVE in tokens — only call when the summary from get_node is not enough. Returns the exact line range from the analyzed commit.

NameTypeReqDescription
commitHashstring
graphIdstringyes
nodeIdstringyes

No output schema declared.

No examples provided.

get_nodes_in_path ~99

List all nodes in a specific FILE or FOLDER. Pass a file path for one file's nodes, or a folder path for everything beneath it (recursive). Great for orienting in an unfamiliar area of the codebase.

NameTypeReqDescription
commitHashstring
graphIdstringyes
nodeTypesarray
pathstringyesA file (src/api/users.ts) or folder (src/api)

No output schema declared.

No examples provided.

get_repo_overview ~75

High-level orientation for one repo: framework/language fingerprint, route count, and the highest-scoring (most central) nodes. Use this instead of reading package.json or scanning directories.

NameTypeReqDescription
commitHashstringDefaults to latest commit
graphIdstringyesGraph id from list_analyzed_repos

No output schema declared.

No examples provided.

get_security_issues ~87

List nodes flagged with a security concern at or above `minSeverity` (default 'low'), ranked by severity then score. Each entry includes the security summary. Use for security review without scanning the whole codebase.

NameTypeReqDescription
commitHashstring
graphIdstringyes
limitnumberDefault 50
minSeveritystring

No output schema declared.

No examples provided.

get_subgraph ~75

Return the cohesive cluster (feature/module) that the seed node belongs to: its sibling nodes plus the edges internal to that cluster. Use to understand the bounded context around a node without pulling the whole graph.

NameTypeReqDescription
commitHashstring
graphIdstringyes
seedNodeIdstringyes

No output schema declared.

No examples provided.

get_summaries ~90

Batch-fetch summaries for many nodes at once. Pass the nodeIds (e.g. from a blast-radius result) and get their technical/business/security summaries in one call — far cheaper than reading each file. `include` defaults to all three.

NameTypeReqDescription
commitHashstring
graphIdstringyes
includearray
nodeIdsarrayyes

No output schema declared.

No examples provided.

list_analyzed_repos ~61

List repositories DevLens has already analyzed. Returns each graphId, repo path, framework, and commit count. Call this first to discover what graphs exist — every other tool needs a graphId. (Also exposed as the devlens://repos resource.)

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_cycles ~56

List groups of nodes that form cyclic dependencies (circular imports/calls). Useful for spotting refactor hotspots and tangled modules. Each group lists the participating nodes.

NameTypeReqDescription
commitHashstring
graphIdstringyes

No output schema declared.

No examples provided.

onboarding_tour ~165

One-call onboarding skeleton: modules, entry points (routes), state (stores/hooks), key flows, a reading path, a domain glossary (from business summaries), and gotchas (cycles, high-severity security, load-bearing nodes). The graph-derived half of onboarding. The skill then reads package.json / .env.example / README from disk for setup facts and merges. Replaces the graph half of the 5-step onboard recipe. Read-only.

NameTypeReqDescription
commitHashstring
graphIdstringyes
maxFlowsnumberRoutes to trace call paths for. Default 4.
maxModulesnumberCentral nodes to cluster. Default 8.
tokenBudgetnumberOutput token budget. Default 8000.

No output schema declared.

No examples provided.

review_pr ~159

One-call PR review packet: diff summary, per-changed-node impact (blast radius), test coverage (incoming TESTS edges — the agent previously could not produce this at all), and security delta (new vs resolved findings). Includes a reviewer checklist. Replaces 6-10 calls with one. Requires both commits already analyzed. Read-only.

NameTypeReqDescription
commitHashstringDefaults to 'to'.
fromstringyesOlder commit hash (base of PR).
graphIdstringyes
radiusnumberBlast-radius hops for changed nodes. Default 1.
tostringyesNewer commit hash (head of PR).
tokenBudgetnumberOutput token budget. Default 10000.

No output schema declared.

No examples provided.

security_brief ~109

One-call prioritized security report: all findings at or above minSeverity, enriched with blast radius for high-severity issues, plus a ranked 'fixTheseFirst' list. Replaces the 3-step security-analysis recipe. Never truncates high-severity findings. Read-only.

NameTypeReqDescription
commitHashstring
graphIdstringyes
minSeveritystringMinimum severity. Default low.
tokenBudgetnumberOutput token budget. Default 8000.

No output schema declared.

No examples provided.

Common questions

What is the DevLens MCP server?

DevLens is an MCP server listed in the public MCP registry as io.github.devlensio/devlens. Query a precomputed code graph (nodes, edges, summaries) of TS/JS/React/Next.js/Node repos via MCP. This page covers its npm package (@devlensio/cli).

Is the DevLens MCP server safe to use?

DevLens scores 90 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. 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 DevLens MCP server expose?

DevLens exposes 21 tools: list_analyzed_repos, get_repo_overview, find_nodes, get_nodes_in_path, get_node, and 16 more. Their descriptions and schemas cost roughly 2,501 tokens of context every time the server is loaded.

Is the DevLens MCP server still maintained?

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