code-lens
Enables web search with Google Search Grounding for up-to-date information retrieval.
Provides code analysis, review, documentation, and logic verification using Google Gemini models.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@code-lensreview the diff in my PR for breaking changes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Code Lens MCP Server
Gemini-powered MCP server for automated code review, analysis, and documentation.
Overview
Code Lens is a Model Context Protocol server that uses Google Gemini to analyze diffs, review pull requests, detect code smells, generate documentation, and verify logic. It exposes 13 tools, 7 resources, and 5 prompts over stdio transport.
Related MCP server: Gemini Code Assist MCP
Key Features
PR review pipeline — generate diffs, assess impact, detect breaking API changes, and produce review summaries with merge recommendations
File analysis — load any source file for refactoring suggestions, code smell detection, documentation generation, and natural-language Q&A
Logic verification — verify algorithms using Gemini's code execution sandbox
Structured outputs — all tools return validated JSON via Zod v4 output schemas
Web search — Google Search with Grounding for up-to-date information retrieval
Task lifecycle support — every tool except
load_filecan run via MCP tasks with polling, cancellation, and progress updates
Requirements
Node.js >= 24
A Gemini API key (
GEMINI_API_KEYorGOOGLE_API_KEY)
Quick Start
{
"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-lensOr with Docker Compose:
GEMINI_API_KEY=your-api-key docker compose upClient Configuration
Add to .vscode/mcp.json:
{
"servers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}Or install via CLI:
code --add-mcp '{"name":"code-lens","command":"npx","args":["-y","@j0hanz/code-lens-mcp@latest"]}'For more info, see VS Code MCP docs.
Add to .vscode/mcp.json:
{
"servers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}Or install via CLI:
code-insiders --add-mcp '{"name":"code-lens","command":"npx","args":["-y","@j0hanz/code-lens-mcp@latest"]}'For more info, see VS Code Insiders MCP docs.
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Cursor MCP docs.
Add to mcp.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Visual Studio MCP docs.
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Goose MCP docs.
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see LM Studio MCP docs.
Add to claude_desktop_config.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Claude Desktop MCP docs.
claude mcp add code-lens -- npx -y @j0hanz/code-lens-mcp@latestOr add to config:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Claude Code MCP docs.
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Windsurf MCP docs.
amp mcp add code-lens -- npx -y @j0hanz/code-lens-mcp@latestOr add to config:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Amp MCP docs.
Add to cline_mcp_settings.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Cline MCP docs.
Add to ~/.codex/config.yaml:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Codex CLI MCP docs.
Add to .vscode/mcp.json:
{
"servers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see GitHub Copilot MCP docs.
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Warp MCP docs.
Add to .kiro/settings/mcp.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Kiro MCP docs.
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Gemini CLI MCP docs.
Add to ~/.config/zed/settings.json:
{
"context_servers": {
"code-lens": {
"settings": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"]
}
}
}
}For more info, see Zed MCP docs.
Add to your VS Code settings.json under augment.advanced:
{
"augment.advanced": {
"mcpServers": [
{
"id": "code-lens",
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
]
}
}For more info, see Augment MCP docs.
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Roo Code MCP docs.
{
"mcpServers": {
"code-lens": {
"command": "npx",
"args": ["-y", "@j0hanz/code-lens-mcp@latest"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}For more info, see Kilo Code MCP docs.
Use Cases
PR Review Pipeline
Call
generate_diffto capture unstaged or staged changesRun
analyze_pr_impactto assess severity and breaking changesRun
generate_review_summaryfor a risk rating and merge recommendationRun
detect_api_breaking_changesto check for public API breakageRun
generate_test_planto produce prioritized test cases
Single-File Analysis
Call
load_fileto cache a source fileRun
refactor_codefor structural improvement suggestionsRun
detect_code_smellsfor Fowler-taxonomy anti-patternsRun
generate_documentationto generate JSDoc/TSDoc stubsUse
ask_about_codefor natural-language Q&A about the fileUse
verify_logicto verify algorithms with code execution
Performance Audit
Call
generate_diffon a performance-sensitive changeRun
analyze_time_space_complexityto detect Big-O degradation
Research
Use
web_searchfor up-to-date documentation or API references via Google Search with Grounding
Architecture
[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, notificationsRequest Lifecycle
[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]Task Lifecycle
generate_diffandload_fileare sync-only. All other tools advertisetaskSupport: optional.Requestors may supply a task TTL. The server uses that value up to
MAX_TASK_TTL_MS, or falls back toTASK_TTL_MSwhen omitted.Cancelled tasks remain terminal as
cancelled, andtasks/resultreturns a cancellation-shaped tool result.
MCP Surface
Tools
Tool | Description | Prerequisite | Model |
| Capture git diff (unstaged/staged) and cache server-side | — | Sync |
| Assess severity, categories, breaking changes, rollback complexity |
| Flash |
| PR summary, risk rating, merge recommendation |
| Flash |
| Prioritized test cases and coverage guidance |
| Flash |
| Big-O complexity analysis and degradation detection |
| Flash |
| Detect breaking API/interface changes |
| Flash |
| Cache a source file for analysis tools | — | Sync |
| Complexity, duplication, naming, grouping suggestions |
| Flash |
| Structural code smells (Fowler taxonomy) |
| Flash |
| JSDoc/TSDoc/docstring stubs for public exports |
| Flash |
| Natural-language Q&A about a cached file |
| Flash |
| Verify algorithms via Gemini code execution sandbox |
| Flash |
| Google Search with Grounding | — | Flash |
Resources
URI | Description | MIME |
| Complete server usage instructions |
|
| Tool reference: models, params, outputs, data flow |
|
| Recommended workflows and tool sequences |
|
| Runtime configuration and limits |
|
| Per-tool details (parameterized) |
|
| Most recently generated diff |
|
| Most recently loaded source file |
|
Prompts
Prompt | Description |
| Full server instructions: capabilities, tools, resources, constraints |
| Workflow guide for a specific tool and focus area |
| Recommended tool pipeline based on change type |
| Goal-based tool pipeline for single-file analysis |
| Full prerequisite chain for a given tool |
MCP Capabilities
Tool Annotations
All tools expose MCP tool annotations:
Annotation | Used |
| Yes |
| Yes |
| Yes |
| Yes |
Structured Output
All Gemini-powered tools return validated structuredContent alongside text content, using Zod v4 output schemas.
Configuration
Variable | Default | Description |
| — | Required. Gemini API key. Falls back to |
|
| Override the default Gemini model for all tools. |
|
| Maximum diff size in characters. |
|
| Maximum concurrent Gemini API calls. |
|
| Maximum concurrent batch Gemini calls. |
|
| Wait timeout for concurrency semaphore. |
|
| Default task result retention in milliseconds when the request does not specify |
|
| Upper bound for request-provided task TTL. Set to |
|
| Enable Gemini batch mode. |
|
| Safety filter threshold ( |
|
| Enable Gemini context caching for large diffs. |
|
| Cache TTL in seconds (when caching is enabled). |
CLI Flags
npx @j0hanz/code-lens-mcp@latest --model gemini-2.5-flash --max-diff-chars 200000Flag | Env Equivalent |
|
|
|
|
Security
Control | Status |
Input validation | Zod v4 schema validation on all tool inputs |
Path safety |
|
Stdout safety | Logs to stderr; stdout reserved for MCP protocol |
Non-root container | Docker runs as dedicated |
Development
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 detectionBuild and Release
CI:
.github/workflows/release.ymlDocker: Multi-stage build (
Dockerfile) withnode:24-alpineDocker Compose:
docker-compose.ymlnpm: Published as
@j0hanz/code-lens-mcp
Troubleshooting
Missing API key: Set
GEMINI_API_KEYorGOOGLE_API_KEYin your environment or client configenvblock."E_NO_DIFF" errors: Call
generate_diffbefore running any diff-based review tool."E_NO_FILE" errors: Call
load_filebefore running any file analysis tool.Large diffs truncated: Increase
MAX_DIFF_CHARS(default: 120,000 characters).Stdout noise: Ensure no other processes write to stdout; the server uses stdio transport.
Credits
Google Gemini — LLM backend (
@google/genai)Model Context Protocol SDK — MCP framework (
@modelcontextprotocol/sdk)Zod — Schema validation (
zodv4)parse-diff — Diff parsing
Contributing and License
MIT License. See LICENSE for details.
Contributions welcome via pull requests.
Available Tools
13 toolsanalyze_pr_impactAnalyze PR ImpactARead-onlyIdempotent
Assess impact and risk from cached diff. Prerequisite: generate_diff. Auto-infer repo/language.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Primary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate safe read operations; description adds that it uses cached diff and auto-infers repo/language, providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose and data source, second covers prerequisite and auto-inference. Efficient with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a tool with output schema and clear annotations. Could elaborate on what the assessment includes, but not necessary given output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter description; description adds 'Auto-infer repo/language', reinforcing the concept but not significantly new information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Assess impact and risk from cached diff', specifying verb and resource. Distinguishes from siblings like 'generate_diff' (prerequisite) and other analysis tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies prerequisite 'generate_diff', guiding the agent on required prior steps. Lacks explicit when-not-to-use or comparison with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_time_space_complexityAnalyze Time & Space ComplexityARead-onlyIdempotent
Analyze Big-O complexity. Prerequisite: generate_diff. Auto-infer language.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Primary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds valuable behavioral context: prerequisite and auto-infer language, which are not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. Every sentence adds value: purpose and usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, return info not needed. Covers prerequisite and language handling. Could mention analysis scope (e.g., worst-case) but acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; description repeats auto-infer language already in schema. No additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Analyze Big-O complexity', a specific verb and resource. Distinct from sibling tools like detect_code_smells or analyze_pr_impact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions prerequisite: generate_diff, giving clear context for when to use. Does not explicitly list alternatives, but the prerequisite guides usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_about_codeAsk About CodeARead-onlyIdempotent
Answer questions about a cached file. Prerequisite: load_file. Auto-infer language.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | Question about the loaded file. | |
| language | No | Primary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so risk profile is clear. The description adds valuable behavioral context: a prerequisite (load_file) and auto-inference of language. However, caching scope could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: a single sentence and a note. Every element (prerequisite, auto-inference) has purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and comprehensive annotations, the description is mostly complete. It covers prerequisite and auto-inference, but could mention that questions are answerable only after file loading. Still, it meets the bar for a focused tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already describes both parameters adequately. The description adds 'Auto-infer language' which reinforces schema but does not significantly expand on it. With high schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Answer questions about a cached file' with a specific verb and resource. It distinguishes from sibling tools (e.g., analyze_pr_impact, generate_documentation) by focusing on Q&A over a pre-loaded file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions 'Prerequisite: load_file' implying when to use, but does not explicitly state when not to use it or contrast with alternatives. The usage context is implied rather than fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_api_breaking_changesDetect API Breaking ChangesARead-onlyIdempotent
Detect breaking API changes. Prerequisite: generate_diff. Auto-infer language.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Primary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds 'Auto-infer language' and a prerequisite, which are useful but not extensive behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, and zero wasted words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and annotations, the description covers the prerequisite and auto-infer behavior. It is adequate for a simple tool but could mention what the output contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description echoes the auto-infer language behavior already in the schema's description, adding no new parameter-specific meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Detect breaking API changes', which is a specific verb and resource. However, it does not differentiate from sibling tools like analyze_pr_impact, which may also involve breaking change detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Prerequisite: generate_diff', providing some usage context. However, it lacks explicit when-not-to-use guidance or alternatives, relying on implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_code_smellsDetect Code SmellsARead-onlyIdempotent
Detect structural code smells in a cached file. Prerequisite: load_file. Auto-infer language.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Primary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent behavior. The description adds valuable context: the tool operates on a cached file, requires a prerequisite, and auto-infers language, which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, rich annotations, and output schema, the description covers prerequisite, auto-inference, and purpose. No gaps for an agent to misuse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a good description for the 'language' parameter. The tool description adds the auto-infer hint, reinforcing that the parameter is optional. This adds value over the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool detects structural code smells in a cached file, with a specific verb and resource. It distinguishes from siblings like analyze_pr_impact or detect_api_breaking_changes by focusing on code smells.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisite (load_file) and mentions auto-infer language, giving clear context for when to use. Does not explicitly state when not to use, but purpose is distinct enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_diffGenerate DiffARead-onlyIdempotent
Generate a diff of the current branch working changes and cache it for all review tools. You MUST call this tool before calling any other review tool. Use "unstaged" for working-tree changes not yet staged, or "staged" for changes already added with git add.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "unstaged": working-tree changes not yet staged. "staged": changes added to the index with git add. Default: unstaged. | unstaged |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description discloses caching behavior and the prerequisite ordering, which are critical for correct use. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. First sentence covers purpose and caching. Second sentence covers prerequisite and parameter usage. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, high schema coverage, and existing output schema, the description is complete. It covers purpose, usage constraints, caching side-effect, and parameter options.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already explains the mode parameter in full. The description only reiterates the same information, adding no new meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it generates a diff of current branch working changes and caches it for review tools. Verb is specific ('generate diff'), resource is clear ('current branch working changes'), and it distinguishes itself from siblings as a prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'You MUST call this tool before calling any other review tool', providing clear when-to-use guidance. Also explains the two mode options with their contexts ('unstaged' vs 'staged'), giving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_documentationGenerate DocumentationARead-onlyIdempotent
Generate documentation stubs for all public exports in a cached file. Prerequisite: load_file. Auto-infer language.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Primary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-destructive, idempotent, read-only behavior. The description adds 'Auto-infer language' and 'Prerequisite: load_file', which are beyond the annotations and useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines purpose, second adds prerequisite and auto-infer detail. No wasted words, front-loaded with core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one optional parameter, clear annotations, and an output schema present, the description fully covers what the tool does, its prerequisite, and parameter behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with parameter 'language' already well-described. The description adds 'Auto-infer from files' context, enhancing agent understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Generate documentation stubs') and the resource ('all public exports in a cached file'), distinguishing it from siblings like 'generate_diff' and 'generate_review_summary'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisite ('load_file'), providing clear context for when to use. Lacks explicit 'when not to use' or alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_review_summaryGenerate Review SummaryARead-onlyIdempotent
Summarize diff and risk level. Prerequisite: generate_diff. Auto-infer repo/language.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Primary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint; description adds auto-inference behavior and prerequisite, but does not clarify risk level generation or potential side effects beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key action, prerequisite, and auto-inference; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single optional parameter and presence of output schema, the description covers prerequisite and auto-inference adequately; no gaps for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter 'language' has full schema description coverage; description redundantly mentions auto-inference, offering no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool summarizes a diff and risk level, with a prerequisite of generate_diff, distinguishing it from sibling tools like analyze_pr_impact which may have a broader scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisite (generate_diff), but does not provide guidance on when not to use it or differentiate from alternatives like analyze_pr_impact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_test_planGenerate Test PlanARead-onlyIdempotent
Generate test cases. Prerequisite: generate_diff. Auto-infer repo/language/framework.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Primary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files. | |
| testFramework | No | Test framework (jest, pytest, etc). Auto-infer. | |
| maxTestCases | No | Max test cases (1-30). Default: 15. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description says 'Generate test cases' implying creation, but annotations declare readOnlyHint: true. This is a direct contradiction. Other behavioral traits are not disclosed beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no extraneous words. Efficiently communicates core purpose and prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has output schema, so return values are covered. Description mentions prerequisite and auto-inference but lacks detail on how inference works or what assumptions are made. Contradiction reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; description adds 'Auto-infer' which is already in schema descriptions. No additional meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'generate' and resource 'test cases'. Prerequisite and auto-inference differentiate from siblings like generate_diff.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisite generate_diff, implying a sequence. Does not mention when to avoid or alternative tools, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_fileLoad FileARead-onlyIdempotent
Cache a single file for analysis tools (refactor_code, ask_about_code, verify_logic). Overwrites previous cache. Path is relative to server working directory (e.g. src/index.ts) or absolute (e.g. /home/user/project/src/index.ts).
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | File path relative to workspace root (e.g. src/index.ts) or absolute. Must be within workspace. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by disclosing that it overwrites previous cache and explaining path format. Annotations already indicate idempotency and read-only behavior, and the description aligns with these while providing additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences pack all essential information: purpose, target tools, cache behavior, and path format. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple caching tool with one parameter and an output schema, the description is fully adequate. It covers usage context, path constraints (relative/absolute, workspace), and cache override behavior. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description in the schema is already detailed. The tool description merely repeats the path format examples, adding minimal new information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it caches a file for analysis tools, distinguishing it as a preparatory step. Names specific sibling tools that consume the cache, which helps an agent understand its role in a workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the tool is for caching files before using refactor_code, ask_about_code, and verify_logic. This gives clear context for when to invoke it, though it does not explicitly list when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refactor_codeRefactor CodeARead-onlyIdempotent
Analyze cached file for complexity, duplication, naming, and grouping improvements. Prerequisite: load_file. Set maxSuggestions to cap output (default 10).
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Primary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files. | |
| maxSuggestions | No | Max suggestions (1-15). Default: 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds that it analyzes a cached file and caps suggestions, providing extra context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first states purpose, second provides guidelines. Every word earns its place – no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of output schema and annotations, the description covers purpose, prerequisite, and parameter control. It could briefly mention the output nature (suggestions list), but overall is sufficiently complete for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds a small extra detail about maxSuggestions default, but does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it analyzes a cached file for specific improvements (complexity, duplication, naming, grouping). The verb 'Analyze' and resource 'cached file' are precise, and it distinguishes from siblings like 'generate_documentation' or 'detect_code_smells' by requiring a loaded file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly mentions the prerequisite 'load_file' and how to control output via 'maxSuggestions'. It provides clear context for when to use this tool, though it does not mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_logicVerify LogicARead-onlyIdempotent
Verify algorithms and logic in a cached file using Gemini code execution sandbox. Prerequisite: load_file. Auto-infer language.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | What to verify in the loaded file (e.g. algorithm correctness, edge cases). | |
| language | No | Primary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, which tell the agent it's a safe, read-only operation. The description adds valuable context: it uses a 'Gemini code execution sandbox' (explaining the mechanism) and 'Auto-infer language' (an important behavioral detail). This combination of annotations and description provides good transparency without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences totaling 15 words. It front-loads the primary action ('Verify algorithms and logic') and efficiently adds the prerequisite and auto-inference. Every word contributes meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (not shown but indicated), the description does not need to detail return values. The description covers the core purpose, prerequisite, and auto-inference. However, for a tool that uses a code execution sandbox, it might be helpful to mention any security considerations or that the file is executed in a sandbox. But overall, it provides sufficient context for a simple verification tool with good annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (question, language) are already described in the schema. The description adds meaning beyond schema: it connects 'question' to the loaded file ('What to verify in the loaded file') and explains 'language' auto-inference ('Auto-infer from files'). This helps the agent understand the parameter context better, though it doesn't add syntax or format details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Verify algorithms and logic in a cached file using Gemini code execution sandbox'. It mentions a prerequisite (load_file) and auto-inference of language, making the purpose specific and actionable. However, it does not explicitly differentiate from sibling tools like analyze_time_space_complexity or detect_code_smells, which are similar analysis tools, so it misses a small opportunity for distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies a prerequisite ('Prerequisite: load_file'), which guides the agent to use load_file first. It also mentions 'Auto-infer language' as an optional behavior. However, it does not provide explicit guidance on when to use this tool versus alternatives (e.g., when to use analyze_time_space_complexity instead) or when not to use it. The absence of exclusions or alternative recommendations limits its utility for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchWeb SearchARead-onlyIdempotent
Google Search with Grounding. Set topic to scope results; responseStyle controls output length.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. | |
| topic | No | Domain focus (e.g. "TypeScript", "Docker"). Set to avoid irrelevant results. | |
| responseStyle | No | concise: 2-4 sentences. detailed: full explanation. bullets: list. code_focused: code snippets. | concise |
| maxChars | No | Truncate response text to this many characters. Default: no truncation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Whether the tool completed successfully. |
| result | No | Successful result payload. |
| error | No | Error payload when ok is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the description adds minimal behavioral insight beyond the grounding mention. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no fluff. Every phrase is meaningful, making it efficient for an AI to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema and output schema existence, the description adequately conveys the tool's purpose and key features. Missing details like grounding explanation are minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds useful context: 'Set topic to scope results' and 'responseStyle controls output length', which clarifies usage beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Google Search with Grounding' clearly identifies the tool as a web search engine, and the sibling tools are code-oriented, so it distinguishes well. However, 'Grounding' is not explained, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives basic guidance on using topic and responseStyle, but does not specify when to use this search tool versus any alternative (though no other search tool exists among siblings). Lacks explicit context for when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
13 tool updates
v0.12.0- First observed
analyze_pr_impact - First observed
analyze_time_space_complexity - First observed
ask_about_code - First observed
detect_api_breaking_changes - First observed
detect_code_smells - First observed
generate_diff - First observed
generate_documentation - First observed
generate_review_summary - First observed
generate_test_plan - First observed
load_file - First observed
refactor_code - First observed
verify_logic - First observed
web_search
TDQS
All tools have distinct purposes, clearly separated into diff-based and file-based categories. No overlapping functionality.
All tools follow a consistent verb_noun pattern in snake_case, making it easy to predict tool names.
13 tools is well-scoped for a code analysis server, covering both diff review and file analysis without being excessive.
Covers major code review aspects (diff, smells, complexity, breaking changes, test plan, docs, refactoring, verification). Could include linting or style checks but overall comprehensive.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
An MCP server that gives your AI access to the source code and docs of all public github repos
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that gives your IDE or agent access to Google Gemini with autonomous codebase exploration, enabling deep code analysis, architectural reviews, and bug hunting.2010MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that integrates Google Gemini CLI with Claude Code for AI-powered development assistance, enabling code review, bug analysis, feature planning, and code explanation without requiring an API key.8MIT
- AlicenseNot gradedqualityDmaintenanceMCP server providing Gemini API documentation lookup and ready-to-use code snippets.GPL 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server that enables Claude Code to interact with Google's Gemini API for code analysis, chat, and summarization tasks.70MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/j0hanz/code-lens'
If you have feedback or need assistance with the MCP directory API, please join our Discord server