mcpField
L
Lenspr

Lenspr

本地服务
github.com/kyrylopr开发工具036 周前更新

关于 Lenspr

Lenspr 为编码 Agent 构建本地代码依赖图,帮助其在编辑前检查关联并评估变更。支持 Python 和 TypeScript/JavaScript,并提供影响分析、代码健康度和架构检查工具。

主要功能

  1. 01跨语言依赖图
  2. 02变更影响分析与验证
  3. 03集中查看源码、调用方、被调用方和测试
  4. 04死代码与健康度检查
  5. 05架构规则执行
  6. 06保存文件时自动更新依赖图

适用场景

  1. 01评估修改函数的下游影响
  2. 02追踪前端 API 调用到后端路由
  3. 03查找死代码并检查代码库健康度
  4. 04编辑代码时检查架构规则

MCP 相关

向 MCP 客户端(包括 Claude Code 和 Cursor)提供 60 多种代码智能工具。依赖图在本地运行,并从源码重建。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"lenspr": {
"command": "uvx",
"args": [
"lenspr"
]
}
}
}
启动命令uvx lenspr

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypilenspr0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

LensPR

为 AI 编码 Agent 提供代码智能。在做出更改前,让 AI 了解依赖关系。

Alpha(0.1.x)——可用于真实项目,作者每天都在使用。仍有一些不完善之处。

AI 助手一次只编辑一个文件。它们看不到依赖关系,只能搜索、阅读、猜测——然后破坏几层文件之外的内容。

LensPR 会为你的代码库构建依赖关系图,让 AI 在进行任何更改前了解代码结构。

快速入门

需要 Python 3.11+、macOS 或 Linux。对于 TypeScript/JS 项目,还需要 Node.js 18+。

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

重启 IDE 即可。完成。现在,你的 AI 可以使用 lens_* 工具。

将 .lens/ 添加到 .gitignore 中——依赖关系图保存在本地,并根据源代码重新构建。


功能介绍

“哪些内容依赖这个函数?”

一次调用即可返回源代码、调用该函数的代码、它调用的内容以及相关测试:

> 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

不使用 LensPR 时,你的 AI 需要进行 5-7 次搜索/读取操作,仍会遗漏内容。使用 LensPR——一次调用,全面了解。

“如果我更改它,哪些内容会出问题?”

进行任何修改前,AI 都能看到影响范围:

> lens_check_impact("models.User")

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

AI 会向你发出警告、调整方案或请求确认。不再盲目编辑。

“这个代码库的健康状况如何?”
> 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

跟踪代码库是在持续改进,还是逐渐退化。

跨语言可视化

LensPR 将前端和后端连接成一张统一的关系图:

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

还会跟踪:数据库表、Docker 服务、环境变量、CI/CD 工作流、SQL 迁移。


兼容工具

IDE设置方式
Claude Codelenspr setup . — 自动设置
Cursor将 .mcp.json 复制到 .cursor/mcp.json
任意 MCP 客户端lenspr serve <path>

语言: Python(通过 Jedi/Pyright 实现 95% 以上的解析率)和 TypeScript/JavaScript(通过 tree-sitter + TS Compiler API 实现 85-95% 的解析率)。

基础设施: .sql 文件、Dockerfiles、docker-compose.yml、GitHub Actions 工作流、.env 文件——都会被解析并纳入同一张关系图。

所有操作都在本地运行。你的代码永远不会离开你的设备。


核心功能

影响分析在任何更改前评估严重程度(低 → 严重)
一次调用获取上下文在一个请求中获取源代码、调用方、被调用方和测试
跨语言前端 HTTP → 后端路由、数据库表、Docker、环境变量、CI/CD
精准编辑在函数内定向查找并替换 — 无需重写整个文件
死代码查找无法到达的函数(Django、FastAPI、Celery 入口点)
架构规则强制执行分层边界 — 应用更改前发出违规警告
按函数查看 Git 信息在函数级别查看 Blame、历史记录和提交范围
会话记忆即使上下文重置,AI 也能从上次中断处继续
自动同步文件监视器在每次保存时更新图
健康评分从 6 个维度给出 0-100 分 — 随时间跟踪质量

60 多个工具分为 12 组 — 使用 lenspr tools 仅启用所需工具。

按类别查看所有工具

导航与搜索(8): lens_context、lens_get_node、lens_search、lens_grep、lens_find_usages、lens_get_structure、lens_list_nodes、lens_get_connections

修改(6): lens_update_node、lens_patch_node、lens_add_node、lens_delete_node、lens_rename、lens_batch

分析(6): lens_check_impact、lens_validate_change、lens_health、lens_dead_code、lens_dependencies、lens_diff

质量(7): lens_vibecheck、lens_nfr_check、lens_test_coverage、lens_security_scan、lens_dep_audit、lens_fix_plan、lens_generate_test_skeleton

架构(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

基础设施(5): lens_api_map、lens_db_map、lens_env_map、lens_ffi_map、lens_infra_map

测试与追踪(3): lens_run_tests、lens_trace、lens_trace_stats

注释(5): lens_annotate、lens_save_annotation、lens_batch_save_annotations、lens_annotate_batch、lens_annotation_stats

会话(4): lens_session_write、lens_session_read、lens_session_handoff、lens_resume

时序(2): lens_hotspots、lens_node_timeline

说明(1): lens_explain


已知限制

  • Windows — 不支持。仅支持 macOS 和 Linux。
  • self.method() 调用 — 静态解析器无法完全解析实例方法分派。解决方法:lens_trace(Python 3.12+)可在运行时解析这些调用。
  • Go、Rust、Java — 尚未支持。解析器接口已准备就绪,欢迎贡献。
  • 动态代码 — getattr、eval 和动态导入无法通过静态方式追踪。

参与贡献

试试看。如果出现问题,请告诉我。

  • 错误报告 — 即使只是“这个不能用”也很有帮助
  • 语言解析器 — Go、Rust、Java(BaseParser 接口已准备就绪)
  • 想法 — 提出问题

许可证

MIT


因为 AI 总是弄坏我的代码,所以我构建了这个工具。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。