关于 Code Lens
Code Lens 是面向开发者的 Gemini 驱动 MCP 服务,提供代码审查与源码分析,涵盖 PR 流程、文件检查、逻辑验证和网络搜索。
主要功能
- 01PR 影响与风险分析
- 02源码重构建议与异味检测
- 03文档生成与代码问答
- 04借助 Gemini 验证算法
- 05经验证的结构化工具输出
- 06Google Search grounding
适用场景
- 01审查差异并制定测试计划
- 02检查源码文件的重构机会
- 03通过代码执行核验算法逻辑
- 04查找最新 API 或文档资料
MCP 相关
通过 stdio 向 MCP 客户端提供 13 个工具、7 个资源和 5 个提示词。除少数工具外,工具支持任务轮询、取消和进度更新。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
13收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mode | enum | 否 | "unstaged":尚未暂存的工作区变更。"staged":通过 git add 添加到索引的变更。默认值:unstaged。unstaged | staged |
详细介绍
Code Lens MCP 服务
由 Gemini 驱动的 MCP 服务,用于自动化代码审查、分析和文档编写。
概述
Code Lens 是一个 Model Context Protocol 服务,使用 Google Gemini 分析差异、审查拉取请求、检测代码异味、生成文档并验证逻辑。它通过 stdio 传输提供 13 个工具、7 个资源和 5 个提示词。
主要功能
- PR 审查流程 — 生成差异、评估影响、检测 API 破坏性变更,并生成包含合并建议的审查摘要
- 文件分析 — 加载任意源文件,获取重构建议、代码异味检测、文档生成以及自然语言问答
- 逻辑验证 — 使用 Gemini 的代码执行沙箱验证算法
- 结构化输出 — 所有工具均通过 Zod v4 输出架构返回经过验证的 JSON
- 网页搜索 — 使用带 Grounding 的 Google Search 获取最新信息
- 任务生命周期支持 — 除
load_file外,每个工具都可通过 MCP 任务运行,并支持轮询、取消和进度更新
要求
- Node.js >= 24
- 一个 Gemini API 密钥(
GEMINI_API_KEY或GOOGLE_API_KEY)
快速开始
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
Docker
docker run -i --rm -e GEMINI_API_KEY="your-api-key" ghcr.io/j0hanz/code-lens
或使用 Docker Compose:
GEMINI_API_KEY=your-api-key docker compose up
客户端配置
在 VS Code 中安装
添加到 .vscode/mcp.json:
{
"servers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
或通过命令行安装:
code --add-mcp '{"name":"code-lens","command":"npx","args":["-y","@j0hanz/code-lens-mcp@latest"]}'
更多信息请参阅 VS Code MCP 文档。
在 VS Code Insiders 中安装
[](https://insiders.vscode.dev/redirect/mcp/install?name=code-lens&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40j0hanz%2Fcode-lens%40latest%22%5D%7D&quality=insiders)添加到 .vscode/mcp.json:
{
"servers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
或者通过 CLI 安装:
code-insiders --add-mcp '{"name":"code-lens","command":"npx","args":["-y","@j0hanz/code-lens-mcp@latest"]}'
更多信息请参阅 VS Code Insiders MCP 文档。
在 Cursor 中安装
添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Cursor MCP 文档。
在 Visual Studio 中安装
添加到 mcp.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Visual Studio MCP 文档。
在 Goose 中安装
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Goose MCP 文档。
在 LM Studio 中安装
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 LM Studio MCP 文档。
在 Claude Desktop 中安装
添加到 claude_desktop_config.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Claude Desktop MCP 文档。
在 Claude Code 中安装
claude mcp add code-lens -- npx -y @j0hanz/code-lens-mcp@latest
或者添加到配置中:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Claude Code MCP 文档。
在 Windsurf 中安装
添加到 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Windsurf MCP 文档。
在 Amp 中安装
amp mcp add code-lens -- npx -y @j0hanz/code-lens-mcp@latest
或者添加到配置中:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Amp MCP 文档。
在 Cline 中安装
添加到 cline_mcp_settings.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Cline MCP 文档。
在 Codex CLI 中安装
添加到 ~/.codex/config.yaml:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Codex CLI MCP 文档。
在 GitHub Copilot 中安装
添加到 .vscode/mcp.json:
{
"servers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 GitHub Copilot MCP 文档。
在 Warp 中安装
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Warp MCP 文档。
在 Kiro 中安装
添加到 .kiro/settings/mcp.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Kiro MCP 文档。
在 Gemini CLI 中安装
添加到 ~/.gemini/settings.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Gemini CLI MCP 文档。
在 Zed 中安装
添加到 ~/.config/zed/settings.json:
{
"context_servers": {
"code-lens": {
"settings": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"]
}
}
}
}
更多信息请参阅 Zed MCP 文档。
在 Augment 中安装
在 VS Code 的 settings.json 中,将以下内容添加到 augment.advanced 下:
{
"augment.advanced": {
"mcpServers": [
{
"id": "code-lens",
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
]
}
}
更多信息请参阅 Augment MCP 文档。
在 Roo Code 中安装
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Roo Code MCP 文档。
在 Kilo Code 中安装
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
更多信息请参阅 Kilo Code MCP 文档。
使用场景
PR 审查流水线
- 调用
generate_diff捕获未暂存或已暂存的更改 - 运行
analyze_pr_impact评估严重程度和破坏性更改 - 运行
generate_review_summary获取风险评级和合并建议 - 运行
detect_api_breaking_changes检查是否破坏公共 API - 运行
generate_test_plan生成按优先级排序的测试用例
单文件分析
- 调用
load_file缓存源文件 - 运行
refactor_code获取结构改进建议 - 运行
detect_code_smells检查 Fowler 分类法中的反模式 - 运行
generate_documentation生成 JSDoc/TSDoc 框架 - 使用
ask_about_code以自然语言询问有关该文件的问题 - 使用
verify_logic通过代码执行验证算法
性能审计
- 对性能敏感的更改调用
generate_diff - 运行
analyze_time_space_complexity检测 Big-O 复杂度退化
研究
- 使用
web_search通过 Google Search with Grounding 查询最新文档或 API 参考资料
架构
[MCP Client]
│
│ Transport: stdio
▼
[MCP Server: code-lens]
│ Entry: src/index.ts → src/server.ts
│
├── initialize / initialized (lifecycle handshake)
│
├── tools/call ──────────────────────────────────────────────
│ │
│ │ Diff-based tools (require generate_diff first):
│ ├── [generate_diff] Sync — capture git diff
│ ├── [analyze_pr_impact] Flash — severity & impact
│ ├── [generate_review_summary] Flash — risk & merge rec
│ ├── [generate_test_plan] Flash — test cases
│ ├── [analyze_time_space_complexity] Flash — Big-O analysis
│ ├── [detect_api_breaking_changes] Flash — API breakage
│ │
│ │ File-based tools (require load_file first):
│ ├── [load_file] Sync — cache source file
│ ├── [refactor_code] Flash — refactoring
│ ├── [detect_code_smells] Flash — smell detection
│ ├── [generate_documentation] Flash — doc stubs
│ ├── [ask_about_code] Flash — Q&A
│ ├── [verify_logic] Flash — code execution
│ │
│ │ Standalone:
│ └── [web_search] Flash — Google Search
│
├── resources/read ──────────────────────────────────────────
│ ├── [internal://instructions] Server usage guide
│ ├── [internal://tool-catalog] Tool reference
│ ├── [internal://workflows] Workflow sequences
│ ├── [internal://server-config] Runtime config
│ ├── [internal://tool-info/{name}] Per-tool details
│ ├── [internal://diff/current] Cached diff (text/x-patch)
│ └── [internal://file/current] Cached source file
│
├── prompts/get ─────────────────────────────────────────────
│ ├── [get-help] Full server instructions
│ ├── [review-guide] Tool + focus area workflow
│ ├── [select-workflow] Pipeline by change type
│ ├── [analyze-file] File analysis pipeline
│ └── [tool-chain] Tool prerequisite chain
│
└── Capabilities: structured output, tool annotations, notifications
请求生命周期
[Client] -- initialize {protocolVersion, capabilities} --> [Server]
[Server] -- {protocolVersion, capabilities, serverInfo} --> [Client]
[Client] -- notifications/initialized --> [Server]
[Client] -- tools/call {name, arguments} --> [Server]
[Server] -- notifications/progress {token, progress, total} --> [Client]
[Server] -- {content, structuredContent, isError?} --> [Client]
任务生命周期
generate_diff和load_file仅支持同步调用。其他所有工具均声明taskSupport: optional。- 请求方可以提供任务 TTL。服务会采用该值,但不会超过
MAX_TASK_TTL_MS;若未提供,则使用TASK_TTL_MS。 - 已取消的任务会保持终态
cancelled,而tasks/result会返回表示取消状态的工具结果。
MCP 接口
工具
| 工具 | 描述 | 前置条件 | 模型 |
|---|---|---|---|
generate_diff | 捕获 git diff(未暂存/已暂存)并在服务端缓存 | — | Sync |
analyze_pr_impact | 评估严重性、类别、破坏性变更和回滚复杂度 | generate_diff | Flash |
generate_review_summary | PR 摘要、风险评级和合并建议 | generate_diff | Flash |
generate_test_plan | 优先级测试用例和覆盖率指南 | generate_diff | Flash |
analyze_time_space_complexity | Big-O 复杂度分析和性能退化检测 | generate_diff | Flash |
detect_api_breaking_changes | 检测 API/接口破坏性变更 | generate_diff | Flash |
load_file | 缓存源文件,供分析工具使用 | — | Sync |
refactor_code | 提供复杂度、重复、命名和分组方面的建议 | load_file | Flash |
detect_code_smells | 检测结构性代码异味(Fowler 分类法) | load_file | Flash |
generate_documentation | 为公开导出项生成 JSDoc/TSDoc/docstring 桩 | load_file | Flash |
ask_about_code | 以自然语言询问缓存文件相关问题 | load_file | Flash |
verify_logic | 通过 Gemini 代码执行沙箱验证算法 | load_file | Flash |
web_search | 使用 Grounding 进行 Google Search | — | Flash |
资源
| URI | 描述 | MIME |
|---|---|---|
internal://instructions | 完整的服务使用说明 | text/markdown |
internal://tool-catalog | 工具参考:模型、参数、输出和数据流 | text/markdown |
internal://workflows | 推荐的工作流和工具调用顺序 | text/markdown |
internal://server-config | 运行时配置和限制 | text/markdown |
internal://tool-info/{toolName} | 各工具的详细信息(参数化) | text/markdown |
internal://diff/current | 最近生成的差异 | text/x-patch |
internal://file/current | 最近加载的源文件 | text/plain |
提示词
| 提示词 | 描述 |
|---|---|
get-help | 完整的服务说明:功能、工具、资源和限制 |
review-guide | 针对特定工具和关注领域的工作流指南 |
select-workflow | 根据变更类型推荐工具链 |
analyze-file | 用于单文件分析的目标导向工具链 |
tool-chain | 指定工具的完整前置条件链 |
MCP 功能
工具注解
所有工具均提供 MCP 工具注解:
| 注解 | 是否使用 |
|---|---|
readOnlyHint | 是 |
destructiveHint | 是 |
idempotentHint | 是 |
openWorldHint | 是 |
结构化输出
所有由 Gemini 提供支持的工具都会返回经过验证的 structuredContent,并附带文本 content,使用 Zod v4 输出架构。
配置
| 变量 | 默认值 | 描述 |
|---|---|---|
GEMINI_API_KEY | — | 必填。 Gemini API 密钥。若未设置,则使用 GOOGLE_API_KEY。 |
GEMINI_MODEL | gemini-3-flash-preview | 覆盖所有工具的默认 Gemini 模型。 |
MAX_DIFF_CHARS | 120000 | diff 的最大字符数。 |
MAX_CONCURRENT_CALLS | 10 | Gemini API 调用的最大并发数。 |
MAX_CONCURRENT_BATCH_CALLS | 2 | Gemini 批量调用的最大并发数。 |
MAX_CONCURRENT_CALLS_WAIT_MS | 2000 | 并发信号量的等待超时时间。 |
TASK_TTL_MS | 300000 | 请求未指定 task.ttl 时,任务结果的默认保留时间(毫秒)。 |
MAX_TASK_TTL_MS | 3600000 | 请求指定的任务 TTL 上限。设为 0 可取消上限。 |
GEMINI_BATCH_MODE | off | 启用 Gemini 批量模式。 |
GEMINI_HARM_BLOCK_THRESHOLD | BLOCK_NONE | 安全过滤阈值(BLOCK_NONE、BLOCK_ONLY_HIGH、BLOCK_MEDIUM_AND_ABOVE、BLOCK_LOW_AND_ABOVE)。 |
GEMINI_DIFF_CACHE_ENABLED | false | 为大型 diff 启用 Gemini 上下文缓存。 |
GEMINI_DIFF_CACHE_TTL_S | 3600 | 缓存 TTL(秒,启用缓存时生效)。 |
CLI 标志
npx @j0hanz/code-lens-mcp@latest --model gemini-2.5-flash --max-diff-chars 200000
| 标志 | 对应环境变量 |
|---|---|
--model、-m | GEMINI_MODEL |
--max-diff-chars | MAX_DIFF_CHARS |
安全
| 控制项 | 状态 |
|---|---|
| 输入验证 | 使用 Zod v4 架构验证所有工具输入 |
| 路径安全 | load_file 将路径限制在工作区根目录内 |
| 标准输出安全 | 日志写入标准错误;标准输出专用于 MCP 协议 |
| 非 root 容器 | Docker 使用专用的 mcp 用户运行 |
开发
npm install # Install dependencies
npm run build # Compile TypeScript
npm run dev # Watch mode
npm run dev:run # Run with --watch and .env
npm run start # Run compiled server
npm run type-check # Type-check src + tests
npm run lint # ESLint
npm run test # Run test suite
npm run format # Prettier
npm run inspector # MCP Inspector
npm run knip # Dead code detection
构建与发布
- CI:
.github/workflows/release.yml - Docker:使用
node:24-alpine的多阶段构建(Dockerfile) - Docker Compose:
docker-compose.yml - npm:以
@j0hanz/code-lens-mcp发布
故障排除
- 缺少 API 密钥:在环境变量或客户端配置的
env块中设置GEMINI_API_KEY或GOOGLE_API_KEY。 - “E_NO_DIFF” 错误:运行任何基于差异的审查工具前,先调用
generate_diff。 - “E_NO_FILE” 错误:运行任何文件分析工具前,先调用
load_file。 - 大型差异被截断:增大
MAX_DIFF_CHARS(默认值:120,000 个字符)。 - 标准输出有杂音:确保没有其他进程写入标准输出;该服务使用 stdio 传输。
致谢
- Google Gemini — 大模型后端(
@google/genai) - Model Context Protocol SDK — MCP 框架(
@modelcontextprotocol/sdk) - Zod — 模式验证(
zodv4) - parse-diff — 差异解析
贡献与许可
MIT 许可证。详情请参阅 LICENSE。
欢迎通过 拉取请求贡献。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。