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
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
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
claude mcp add devlensio-devlens -- npx -y @devlensio/cli
{
"mcpServers": {
"devlensio-devlens": {
"command": "npx",
"args": [
"-y",
"@devlensio/cli"
]
}
}
} {
"servers": {
"devlensio-devlens": {
"command": "npx",
"args": [
"-y",
"@devlensio/cli"
]
}
}
} codex mcp add devlensio-devlens -- npx -y @devlensio/cli
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"devlensio-devlens": {
"type": "local",
"command": [
"npx",
"-y",
"@devlensio/cli"
],
"enabled": true
}
}
} openclaw mcp add devlensio-devlens --command npx --arg -y --arg @devlensio/cli
mcp_servers:
devlensio-devlens:
command: "npx"
args: ["-y", "@devlensio/cli"] {
"McpServers": {
"devlensio-devlens": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@devlensio/cli"
]
}
}
} assistant mcp add devlensio-devlens -t stdio -c npx -a -y @devlensio/cli
{
"mcpServers": {
"devlensio-devlens": {
"command": "npx",
"args": [
"-y",
"@devlensio/cli"
]
}
}
} 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
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 →
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| isGithubRepo | boolean | – | Default false |
| path | string | yes | Local 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.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | Older commit hash |
| graphId | string | yes | – |
| radius | number | – | Blast-radius hops for changed nodes. Default 1. |
| to | string | yes | Newer 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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| graphId | string | yes | – |
| maxModules | number | – | Central nodes to cluster into modules. Default 5. |
| maxRoutesTraced | number | – | Routes to trace call paths for. Default 8. |
| tokenBudget | number | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| graphId | string | yes | – |
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).
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| dir | string | – | Nodes under this folder (prefix) |
| filePath | string | – | Nodes in exactly this file |
| graphId | string | yes | – |
| limit | number | – | Default 25 |
| minScore | number | – | – |
| name | string | – | Substring match on node name |
| nodeIds | array | – | Exact ids to resolve; ignores other filters |
| nodeTypes | array | – | e.g. COMPONENT, HOOK, FUNCTION, ROUTE |
| severity | string | – | Min 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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| edgeTypes | array | – | Restrict traversal to these edge types |
| graphId | string | yes | – |
| nodeId | string | yes | – |
| radius | number | – | Hops 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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| focus | string | – | Optional nodeId or filePath to force as a seed (prepended to keyword seeds). Required for intent='impact'. |
| graphId | string | yes | – |
| hops | – | – | Traversal radius. Default 1; pass 2 for deeper context. |
| intent | string | – | Controls seed count, edge types, and direction. Default generic. |
| query | string | yes | Keyword query for seeding retrieval (name/path/business-summary substring match). |
| seedNodeIds | array | – | Skip keyword seeding — use these node ids directly as seeds. |
| tokenBudget | number | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| graphId | string | yes | – |
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).
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| edgeTypes | array | – | Restrict traversal to these edge types |
| graphId | string | yes | – |
| nodeId | string | yes | – |
| radius | number | – | Hops 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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| edgeTypes | array | – | Restrict callers/callees to these edge types |
| graphId | string | yes | – |
| include | array | – | Default: all sections |
| nodeId | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| graphId | string | yes | – |
| nodeId | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| graphId | string | yes | – |
| nodeTypes | array | – | – |
| path | string | yes | A 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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | Defaults to latest commit |
| graphId | string | yes | Graph 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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| graphId | string | yes | – |
| limit | number | – | Default 50 |
| minSeverity | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| graphId | string | yes | – |
| seedNodeId | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| graphId | string | yes | – |
| include | array | – | – |
| nodeIds | array | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| graphId | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| graphId | string | yes | – |
| maxFlows | number | – | Routes to trace call paths for. Default 4. |
| maxModules | number | – | Central nodes to cluster. Default 8. |
| tokenBudget | number | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | Defaults to 'to'. |
| from | string | yes | Older commit hash (base of PR). |
| graphId | string | yes | – |
| radius | number | – | Blast-radius hops for changed nodes. Default 1. |
| to | string | yes | Newer commit hash (head of PR). |
| tokenBudget | number | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| commitHash | string | – | – |
| graphId | string | yes | – |
| minSeverity | string | – | Minimum severity. Default low. |
| tokenBudget | number | – | Output token budget. Default 8000. |
No output schema declared.
No examples provided.
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.