mcpField
L
Lenspr

Lenspr

Local
github.com/kyryloprDeveloper Tools0Updated 36w ago

About Lenspr

Lenspr builds a local code dependency graph for coding agents, helping them inspect relationships and assess changes before editing. It supports Python and TypeScript/JavaScript, with tools for impact analysis, code health, and architecture checks.

Key features

  1. 01Dependency graph with cross-language links
  2. 02Change impact and validation analysis
  3. 03Source, callers, callees, and tests in context
  4. 04Dead code and health checks
  5. 05Architecture rule enforcement
  6. 06Automatic graph updates on file save

Use cases

  1. 01Assess downstream effects before changing a function
  2. 02Trace frontend API calls to backend routes
  3. 03Find dead code and review codebase health
  4. 04Check architecture rules during code edits

MCP support

Exposes more than 60 code-intelligence tools to MCP clients, including Claude Code and Cursor. The graph runs locally and is rebuilt from source.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"lenspr": {
"command": "uvx",
"args": [
"lenspr"
]
}
}
}
Run commanduvx lenspr

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypilenspr0.1.1

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

LensPR

Code intelligence for AI coding agents. Your AI sees dependencies before making changes.

Alpha (0.1.x) — works on real projects, used daily by the author. Expect rough edges.

AI assistants edit your code one file at a time. They don't see dependencies. They grep, read, guess — and break things three files away.

LensPR builds a dependency graph of your codebase and gives your AI structural understanding before it changes anything.

Quick Start

Requires Python 3.11+, macOS or Linux. For TypeScript/JS projects, also Node.js 18+.

pip install 'lenspr[all]'
lenspr init .
lenspr setup .

Restart your IDE. Done. Your AI now has lens_* tools.

Add .lens/ to your .gitignore — the graph is local and rebuilt from source.


What It Does

"What depends on this function?"

One call returns source code, who calls it, what it calls, and related tests:

> lens_context("auth.login_handler")

source: 42 lines
callers: auth_routes.create_routes, test_auth.test_login_success
callees: db.get_user, crypto.verify_password, jwt.create_token
tests: test_login_success, test_login_wrong_password

Without LensPR your AI makes 5-7 grep/read calls and still misses things. With LensPR — one call, full picture.

"What breaks if I change this?"

Before any modification, the AI sees the blast radius:

> lens_check_impact("models.User")

severity: CRITICAL
direct_dependents: 15
indirect_dependents: 23
affected_modules: auth, payments, notifications
tests_covering: 3

The AI warns you, changes its approach, or asks for confirmation. No more blind edits.

"How healthy is this codebase?"
> lens_vibecheck()

score: 86/100 (B)
  test_coverage:    17/25 — 67% functions tested
  dead_code:        20/20 — 0% dead code
  circular_imports: 15/15 — 0 cycles
  architecture:     12/15 — 1 violation
  documentation:     8/10 — 81% documented
  graph_confidence: 14/15 — 94% edges resolved

Track whether the codebase is improving or degrading over time.

Cross-language visibility

LensPR connects frontend and backend into a single graph:

LoginModal.tsx → fetch("/api/auth/login")
                        ↓ CALLS_API
Backend:  @router.post("/login") → login_handler()
            → db.query(User)        [reads: users]
            → verify_password()
            → create_jwt_token()

Also tracks: database tables, Docker services, env vars, CI/CD workflows, SQL migrations.


Works With

IDESetup
Claude Codelenspr setup . — automatic
CursorCopy .mcp.json to .cursor/mcp.json
Any MCP clientlenspr serve <path>

Languages: Python (95%+ resolution via Jedi/Pyright) and TypeScript/JavaScript (85-95% via tree-sitter + TS Compiler API).

Infrastructure: .sql files, Dockerfiles, docker-compose.yml, GitHub Actions workflows, .env files — all parsed into the same graph.

Everything runs locally. Your code never leaves your machine.


Key Features

Impact AnalysisSeverity (LOW → CRITICAL) before any change
One-Call ContextSource + callers + callees + tests in one request
Cross-LanguageFrontend HTTP → backend routes, DB tables, Docker, env vars, CI/CD
Surgical EditsTargeted find/replace within a function — no full file rewrites
Dead CodeFind unreachable functions (Django, FastAPI, Celery entry points)
Architecture RulesEnforce layer boundaries — violations warn before changes apply
Git per FunctionBlame, history, commit scope at function level
Session MemoryAI picks up where it left off across context resets
Auto-SyncFile watcher updates graph on every save
Health Score0-100 score across 6 dimensions — track quality over time

60+ tools organized in 12 groups — enable only what you need with lenspr tools.

All tools by category

Navigation & Search (8): lens_context, lens_get_node, lens_search, lens_grep, lens_find_usages, lens_get_structure, lens_list_nodes, lens_get_connections

Modification (6): lens_update_node, lens_patch_node, lens_add_node, lens_delete_node, lens_rename, lens_batch

Analysis (6): lens_check_impact, lens_validate_change, lens_health, lens_dead_code, lens_dependencies, lens_diff

Quality (7): lens_vibecheck, lens_nfr_check, lens_test_coverage, lens_security_scan, lens_dep_audit, lens_fix_plan, lens_generate_test_skeleton

Architecture (9): lens_arch_rule_add, lens_arch_rule_list, lens_arch_rule_delete, lens_arch_check, lens_class_metrics, lens_project_metrics, lens_largest_classes, lens_compare_classes, lens_components

Git (4): lens_blame, lens_node_history, lens_commit_scope, lens_recent_changes

Infrastructure (5): lens_api_map, lens_db_map, lens_env_map, lens_ffi_map, lens_infra_map

Testing & Tracing (3): lens_run_tests, lens_trace, lens_trace_stats

Annotations (5): lens_annotate, lens_save_annotation, lens_batch_save_annotations, lens_annotate_batch, lens_annotation_stats

Session (4): lens_session_write, lens_session_read, lens_session_handoff, lens_resume

Temporal (2): lens_hotspots, lens_node_timeline

Explanation (1): lens_explain


Known Limitations

  • Windows — not supported. macOS and Linux only.
  • self.method() calls — static parser can't fully resolve instance method dispatch. Workaround: lens_trace (Python 3.12+) resolves these at runtime.
  • Go, Rust, Java — not yet supported. Parser interface is ready for contributors.
  • Dynamic code — getattr, eval, dynamic imports can't be tracked statically.

Contributing

Try it. If it breaks, tell me.

  • Bug reports — even "this doesn't work" is helpful
  • Language parsers — Go, Rust, Java (BaseParser interface is ready)
  • Ideas — open an issue

License

MIT


Built because AI kept breaking my code.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.