codelens-mcp
Server Quality Checklist
Latest release: v0.2.0
- Disambiguation4/5
overview and functions both list functions/classes, but overview provides a high-level structural map while functions exhaustively lists all addressable functions; the descriptions clearly differentiate them. map covers directory trees, find locates definitions by name, and function_body returns verbatim source, so each tool has a distinct role with minor potential confusion.
Naming Consistency3/5Most tool names are simple lowercase nouns (overview, functions, comments, map, info), but 'find' is a verb and 'function_body' uses an underscore, breaking a uniform pattern. The naming is still predictable and readable, though not consistently verb_noun or single-style.
Tool Count5/5Seven tools is well-scoped for a code navigation and analysis server. Each tool serves a distinct purpose, and none feel redundant or unnecessary.
Completeness4/5The toolset covers the core navigation lifecycle: directory maps, file overviews, function details, comment exploration, definition lookup, and focused source extraction. Missing are call sites or full-text search, but the stated purpose of locating code is well covered.
Average 4.7/5 across 7 of 7 tools scored.
See the Tool Scores section below for per-tool breakdowns.
This repository is archived. Archived repositories automatically receive an F maintenance tier.
This repository is licensed under AGPL 3.0.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
This repository includes a glama.json configuration file.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels: it discloses skipped directories, per-call file caps (200) and per-file name caps (100), truncated behavior, handling of unparseable files with inline errors, supported languages, and the exact return JSON structure. This is exemplary transparency beyond what any structured metadata could provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Though long, every sentence earns its place. It is front-loaded with purpose, then behavior, limits, language support, and usage guidance. No filler or redundancy; dense but well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description fully outlines the return JSON shape, fields, and error handling. It also contextualizes the tool among siblings (map before overview/functions, then Read) and provides practical caps. This is complete for a directory-walking tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the 'path' parameter is already thoroughly described in the schema (relative path, absolute path, '.' for workspace). The description adds no new parameter-specific semantics beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: 'Per-file structural overview of a whole directory tree in one call' — a specific verb-as-noun 'map' applied to a resource (directory tree). It also distinguishes itself from siblings by positioning as 'the orientation tool' and advising use before overview/functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use it ('Use before overview/functions to decide which files matter') and provides an alternative strategy when truncated ('map subdirectories individually to go deeper'). It also instructs to Read the actual source after locating code. However, it does not explicitly state when not to use the tool versus alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and delivers richly: it discloses the return JSON schema, the meaning of `hasErrors`, list truncation at 500 with a `truncated` field, language support, and the fact that Python exports come from `__all__`. The caution 'A signature is not the body' adds a relevant behavioral expectation. This is a model of transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but densely packed with useful details; the main purpose is front-loaded and subsequent sentences add return-format details, language support, usage guidance, and clarity about truncation and nested functions. No sentence is wasted, though the 'codelens is a navigation map' line slightly rephrases the opening purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is comprehensive for a one-parameter read-only exploration tool. It specifies the return shape precisely, covers edge cases like syntax errors and truncation, lists supported languages, and provides usage context. Even without an output schema, the agent would know exactly what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single `path` parameter, which already explains path resolution, supported extensions, and array handling. The description doesn't add further parameter-level meanings, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb+resource: it provides a structural map of source files listing imports, exports, classes, and top-level functions. It differentiates from the sibling `functions` tool by explicitly noting nested functions are excluded and directing users to that tool. This gives both a clear purpose and a contrast with alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Use this FIRST to orient in an unfamiliar file' and 'use it to LOCATE code, then Read the actual source before judging or modifying it.' The description also points to the `functions` tool for nested functions, establishing when not to use this tool. This exceeds typical usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the JSON return shape, truncation at 600 chars, list cap at 500, marker case-sensitivity to avoid false positives, and supported languages. It also warns against relying on signatures alone, adding valuable 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but every sentence earns its place: it leads with a one-sentence summary, explains output format, limitations, languages, and use cases. The final caution about reading source code is relevant. It is front-loaded and information-dense without being padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool supports array input, returns per-file results with a summary, and has no output schema, so the description must explain return values. It does so thoroughly, covering structure, edge cases (truncation, caps), and usage context. Given the complexity, it is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for parameters, so the baseline is 3. The description adds minimal parameter-specific meaning beyond the schema; it mentions 'markersOnly:true' but repeats the schema's semantics. The description's extra context about output and behavior does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it returns all comments in a file with line ranges, kind, and marker detection. It distinguishes itself from siblings like codelens by positioning itself for surveying docs/debt rather than locating code. The specific output format and options further clarify its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Use for surveying docs/debt without reading whole files.' It contrasts with codelens, which is for locating code, and advises reading the actual source before modifying. This gives clear when-to-use context and differentiates from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It thoroughly discloses the return JSON shape, match kinds, case-insensitive substring default, exact matching option, skipped file handling with reasons, scan/match caps, truncation flag, and supported languages. This is exemplary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but extremely dense, with every sentence earning its place. It is front-loaded with the core purpose, then systematically covers output, matching behavior, skipped files, limits, languages, and follow-up guidance. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, this description remarkably covers all necessary context: the exact return object, handling of unsearchable files, caps and truncation, languages, positional nuance (definitions vs call sites), and even a caution to read actual source. It is fully self-sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The schema already explains 'Substring match unless exact:true' and exact as 'case-insensitive substring'. The description adds little beyond restating these rules and the default path, so it does not significantly increase semantic understanding beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Locate') and resource ('function, method, or class by name across a directory'), immediately clarifying 'where is X defined?'. It also distinguishes itself by stating 'Finds DEFINITIONS only (not call sites — use grep for those)', which separates it from sibling tools like grep or possibly functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use ('where is X defined?') and when not ('not call sites — use grep for those'), giving an alternative. It also provides operational guidance like narrowing the path or using exact:true, and advises reading the actual source after locating — clearly covering when-to-use vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries behavioral disclosure. It reveals failure behavior on ambiguous names ('the call FAILS listing the candidates'), truncation at 20000 chars with a truncated flag, that it 'never guesses', and the ephemeral nature of files ('re-Read before editing'). This is exemplary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core function, then progressively adds return format, naming, failure, truncation, and usage guidance. Despite its length, every sentence provides actionable detail with no redundancy, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description compensates by enumerating the JSON fields, supported languages, size caps, and error behavior. It covers all necessary context for an agent to invoke the tool safely and correctly, leaving no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions, so baseline is 3. The description adds value by explaining that name matches functions/find output (dotted-qualified form, default exports named 'default') and that line is a disambiguator when names collide, exceeding the schema's basic definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Verbatim source of ONE function — the focused read' and clarifies it returns exactly that function's source including signature and decorators. It explicitly contrasts with reading a whole file, and the return JSON structure confirms the tool's specific scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use this tool ('Instead of Reading a whole file to inspect one function') and defines boundaries ('The body IS the territory for this one function... but not about its callers/callees'). It supports disambiguation via functions/find output, but doesn't name a specific alternative for exploring callers/callees, so it just misses a fifth.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does so thoroughly. It discloses exclusions (anonymous callbacks, overload declarations, lambdas), error behavior (hasErrors, items may be missing), the 500-entry cap with truncated.functions flag, supported languages, and how parent/kind/default exports are represented. It even warns 'A signature is not the body' — rich behavioral context beyond what schema or annotations could provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Despite being lengthy, every sentence adds distinct value: purpose, exclusions, return shape, field semantics, edge cases, cap, languages, and usage guidance. It is front-loaded with core functionality, then uses structured labels ('NOT listed', 'Returns', 'kind', 'parent', 'hasErrors', 'Caps') to make scanning easy. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema, the description is remarkably complete. It covers the full return JSON structure, enumerates all field meanings (kind, parent, async, exported), explains error states, caps, language support, and how to use the result. It also contextualizes the relationship with other navigation tools and advises on proper follow-up (Read the actual source). Nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the path parameter is already fully described in the schema (path type, relative/absolute resolution, array behavior, supported extensions). The main description adds no additional parameter-level details. Per the rubric, this is a baseline 3: the schema does the heavy lifting and the description doesn't need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Every addressable function in a file' and immediately enumerates exactly what is included (nested functions, class methods, getters/setters, etc.) and what is NOT listed (anonymous callbacks, TS overload signatures, Python lambdas). This clearly distinguishes it from sibling tools like map or function_body, which likely serve different navigation purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is given: 'Use it to pick the right line range to Read, or to survey an API surface.' It also contrasts with another tool ('codelens is a navigation map: use it to LOCATE code, then Read the actual source before judging or modifying it'), providing an alternative and even a warning about not relying on signatures alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the tool is read-only, has no parameters, returns a JSON object with a specific structure, and includes the critical constraint that the working directory is the sandbox root and all passed paths must be inside it. It does not describe error behavior or rate limits, but for a simple self-description tool, this is quite transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. It packs three sentences of high-value content: what the tool returns, the JSON structure, and when to call it. There is no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no params and no output schema, the description is exceptionally complete. It explains the return format, the critical sandbox-root constraint, and provides a use case. The tool is simple, and the description covers all relevant context without requiring the agent to infer anything.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema confirms this with an empty properties object. The description reinforces 'no parameters' and does not need to explain parameter meaning. Baseline for zero-parameter tools is 4, and the description adds value by stating the returned JSON structure, which is more than the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Server self-description', which is a specific verb+resource phrase that clearly identifies the tool's purpose. It enumerates exactly what information is returned (version, working directory, languages, tools, limits, contract) and distinguishes it from sibling tools like 'functions' or 'map' by focusing on server metadata rather than code navigation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit, actionable usage guidance: 'Call this first if a path is rejected or you need to know what the server can see.' This tells the agent when to invoke the tool and what problem it solves, which is more directive than most descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/segentic-lab/codelens-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server