omni-rag-mcp
Enables embedding via Ollama for semantic search, requiring a running Ollama instance with a pulled model.
Provides local embedding using ONNX runtime with auto-downloaded all-MiniLM-L6-v2 model for zero-config semantic search.
Enables embedding via OpenAI API using text-embedding-3-small for semantic search, requiring an API key.
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., "@omni-rag-mcpsearch for the user login flow"
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.
omni-rag-mcp
A general-purpose RAG MCP plugin for token-efficient semantic search over any directory of files. Auto-ingests the current working directory on first search and provides hybrid search (BM25 + semantic), directory overview, structural analysis, and dependency graphs.
Zero-config by default: local Qdrant storage, ONNX embeddings, no external services required. Supports code, markdown, PDFs, CSVs, and more via pluggable extractors.
Quick Start
pip install omni-rag-mcp
omni-rag-setupThat's it. Restart Claude Code and the plugin auto-indexes your working directory on first search.
Related MCP server: Codebase Contextifier 9000
How It Works
Your Files -> Extractors -> Chunking -> Embedding -> Qdrant (local)
|
Claude Code -> MCP Tool Call -> Hybrid Search -> Relevant SnippetsFirst search auto-ingests your working directory (extracts content, chunks, generates embeddings, stores in local Qdrant)
Subsequent searches are fast hybrid lookups (BM25 + semantic) -- no re-ingestion needed
Incremental updates detect git changes and only re-embed modified files
MCP Tools
Tool | Purpose |
| Hybrid search over indexed files (auto-ingests if needed) |
| Search filtered by file path pattern |
| Compressed directory overview (languages, structure, dependencies) |
| Function/class signatures without reading every file |
| Internal import/dependency graph |
| Index size and configuration |
| Manual re-index (incremental by default, |
| Is the index current? Any uncommitted changes? |
Embedding Providers
Zero-config by default. Choose your provider:
Provider | Config | Notes |
ONNX (default) | None needed | Auto-downloads all-MiniLM-L6-v2 (23MB, 384-dim) |
Ollama |
| Requires Ollama running with model pulled |
OpenAI |
| text-embedding-3-small |
Voyage |
| voyage-code-3 (optimized for code) |
Optional Extras
pip install omni-rag-mcp[pdf] # PDF extraction (PyMuPDF)
pip install omni-rag-mcp[docx] # Word document extraction
pip install omni-rag-mcp[image] # Image/OCR extraction (Tesseract + Pillow)
pip install omni-rag-mcp[all] # All optional extractorsStorage
By default, uses Qdrant in local/on-disk mode -- no Docker needed. Data stored in .omni-rag/ under your project directory.
For remote Qdrant:
OMNI_RAG_QDRANT_MODE=remote
OMNI_RAG_QDRANT_HOST=your-host
OMNI_RAG_QDRANT_PORT=6333Configuration
All settings via environment variables with OMNI_RAG_ prefix. See config/.env.example for the full reference.
Legacy RAG_ prefix variables are still supported with deprecation warnings.
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
python -m pytest tests/ -v
# Health check
python scripts/health_check.pyManual MCP Registration
If omni-rag-setup doesn't work, add this to your Claude Code MCP config:
{
"mcpServers": {
"omni-rag": {
"command": "omni-rag"
}
}
}Available Tools
14 toolscheck_index_statusA
[Deprecated: use 'check_status'] Check index freshness.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only says 'Check index freshness.' It lacks details on what freshness means, side effects, or output behavior beyond the output schema.
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 with a single sentence plus deprecation warning, 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 zero parameters and an output schema, the description is minimally adequate but does not explain 'freshness' or output details beyond what schema provides.
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?
No parameters, so schema coverage is 100%. The description adds minimal value but is not required to for zero parameters.
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 checks index freshness, and the deprecation note adds clarity. However, it does not fully differentiate from siblings beyond the deprecation.
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 marks as deprecated and directs to use 'check_status', providing strong guidance on when to avoid and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_statusA
Check whether the index for the current directory is up to date.
Call this FIRST if you're unsure whether to use semantic search or fall back to file-by-file reading. Returns whether the directory is indexed and whether there are local changes that might make the index stale.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It effectively states the return values (whether indexed and whether stale) and implies a read-only operation. It does not mention potential errors or performance, but for a simple check tool this is adequate.
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 three sentences long: first states purpose, second gives usage guidance, third explains return values. It is front-loaded with the key action and contains no 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 no parameters and the presence of an output schema, the description fully explains what the tool does and how to use it. It provides essential context for a simple check 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?
The input schema has no parameters, so schema description coverage is 100%. The description adds no parameter info because none exist, which is appropriate. Baseline score of 4 is justified.
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 checks if the directory index is up-to-date and gives a specific use case (deciding between semantic search and file-by-file reading). However, it does not explicitly distinguish itself from the sibling 'check_index_status', which may have a similar purpose.
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 explicitly advises to call this tool FIRST when unsure about the search method, providing clear when-to-use guidance and implicitly suggesting when not to use (when indexing status is known). This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_statsA
[Deprecated: use 'stats'] Get index statistics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must stand alone. It only states the basic operation without disclosing behavior like side effects, permissions, or error states. The deprecation warning adds some behavioral context, but overall disclosure is minimal.
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: one short sentence with a deprecation warning. No unnecessary words, and the key information is front-loaded.
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 deprecated, parameterless tool with an output schema, the description is sufficient but lacks explanation of what 'index statistics' entails. The agent might need to rely on the output schema for full understanding.
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?
There are no parameters, and schema coverage is trivially 100%. The description adds no additional semantics, but none are needed. Baseline score of 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 states 'Get index statistics' and deprecates itself in favor of 'stats'. It clearly communicates the resource and action, and distinguishes from the sibling tool 'stats'.
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 recommends using 'stats' instead, providing clear guidance on when to avoid this tool. However, it lacks details on any specific contexts where using this deprecated tool might still be necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_codebase_contextA
[Deprecated: use 'get_context'] Get directory overview.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Get directory overview', which implies a read operation but does not confirm safety, side effects, or any behavioral details. A 2 is appropriate as it adds minimal transparency beyond the basic purpose.
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 very concise, with no wasted words. However, it could be slightly more descriptive about what 'directory overview' entails. Still, it is appropriately brief for a deprecated tool.
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 no parameters, an output schema (which handles return value documentation), and deprecation status, the description is complete. It provides the essential fact of deprecation and points to the correct replacement.
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?
The tool has zero parameters, so the description is not required to add parameter-level meaning beyond the schema. The baseline score for 0 parameters is 4, and the description does not detract from that.
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 states it is deprecated and directs to use 'get_context', while still clearly indicating its purpose: 'Get directory overview.' The verb 'get' and resource 'directory overview' are specific, and the deprecation distinguishes it from the recommended sibling.
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 explicitly mentions deprecation and tells the agent to use 'get_context' instead, providing clear when-not-to-use guidance and a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contextA
Get a compressed overview of the indexed directory structure.
Returns language breakdown, directory structure, key files, and dependency information. Use this FIRST when starting work on an unfamiliar directory to understand its layout before searching for specific content.
Much cheaper than reading files individually — gives you the big picture in one call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the output is a 'compressed overview' and indicates the tool is inexpensive (cost hint), but doesn't detail any edge cases or behavior beyond that. However, for a read-only informational tool, this is sufficient.
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 three sentences, front-loading the main purpose, then providing usage guidance, and ending with a cost-benefit note. Every sentence is valuable and concise, with no extraneous content.
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 simplicity of the tool (no parameters, no complex behavior) and the existence of an output schema, the description adequately covers what the tool returns and when to use it. It provides a complete, standalone understanding for an agent.
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?
The tool has zero parameters, so the description cannot add parameter-level meaning. Schema coverage is 100% trivially. Baseline for 0 parameters is 4, and the description does not need to elaborate further.
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 returns a compressed overview of the indexed directory structure, listing specific elements like language breakdown, directory structure, key files, and dependency information. It uses a specific verb ('Get') and resource ('compressed overview'), and distinguishes itself from sibling tools that search for specific content.
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 explicitly advises to 'Use this FIRST when starting work on an unfamiliar directory to understand its layout before searching for specific content.' It also notes it's 'Much cheaper than reading files individually,' giving clear guidance on when to prefer this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dependency_graphA
Get the import/dependency graph for the codebase.
Shows which files import from which other files within the project. Use this to understand module boundaries and find the right place to make changes.
Args: file_pattern: Optional substring to filter files (case-insensitive). Empty string analyzes the entire project.
| Name | Required | Description | Default |
|---|---|---|---|
| file_pattern | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It implies read-only operation by stating it 'shows' dependencies, but does not explicitly confirm safety, mention performance impact, or describe the output format beyond 'graph'. The presence of an output schema helps but is not leveraged in the description.
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 concise, with only two sentences of purpose and a structured 'Args' section. No redundant information, and the core action is front-loaded. Every sentence contributes value.
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 (one optional parameter, output schema present), the description covers the main functionality and parameter usage. It does not mention limitations or performance, but these are not critical for a basic read-only tool. Some cross-reference with sibling search tools could improve context.
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?
With 0% schema description coverage, the description compensates by explaining the 'file_pattern' parameter: 'Optional substring to filter files (case-insensitive). Empty string analyzes the entire project.' This adds semantic meaning beyond the schema's type and default.
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 that the tool retrieves the import/dependency graph of the codebase, using specific verb 'get' and resource 'dependency graph'. It distinguishes from sibling tools that handle search, ingestion, and status checks, as none of them produce a dependency graph.
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 provides a clear use case: 'Use this to understand module boundaries and find the right place to make changes.' However, it does not explicitly state when not to use it (e.g., for detailed code inspection) or mention alternative tools like search for finding specific imports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_signaturesA
Get function and class signatures from files matching a path.
Use this to understand the API surface of a module without reading every file. Returns function names, parameters, return types, and class hierarchies.
More structured than semantic search — gives you the exact interface of code modules.
Args: file_path: Substring to match in file paths (case-insensitive). E.g. "models", "api/routes", ".py", "utils". Empty string matches all files.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that it returns function names, parameters, return types, and class hierarchies, and that the path matching is case-insensitive. However, it does not mention behavioral traits like permission requirements, rate limits, or potential side effects. The description adds value beyond the schema but lacks depth for a fully transparent disclosure.
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 concise, with about 4 sentences and a bullet for the argument. It is well-structured with front-loaded purpose, usage context, and a clear parameter definition. Every sentence adds value.
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 simplicity (one optional parameter) and the presence of an output schema, the description is complete. It explains what it does, when to use it, how the parameter works with examples, and the nature of results. It adequately covers the necessary context for an agent.
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?
The schema has 0% description coverage, but the description adds extensive meaning to the file_path parameter: it explains it is a substring match, case-insensitive, provides examples ('models', 'api/routes', '.py', 'utils'), and clarifies that empty string matches all files. This fully compensates for the lack of schema 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 clearly states the tool retrieves function and class signatures from files matching a path. It specifies the resource (file signatures) and action (get). It distinguishes itself from sibling tools like search_codebase by noting it provides more structured information (exact interface) than semantic search.
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 explicitly says 'Use this to understand the API surface of a module without reading every file' and contrasts it with semantic search ('More structured than semantic search'). This provides clear context for when to use. However, it does not explicitly exclude other sibling tools or provide when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingestA
Manually trigger indexing of the current working directory.
Auto-indexes on first search, so you rarely need this. By default, does incremental indexing (only changed files). Use force=True to do a full re-index from scratch.
Args: force: If True, full re-index. If False, incremental update. include_extensions: Optional list of file extensions to include (e.g. [".py", ".ts", "js"]). When provided, ONLY files with these extensions are indexed; the default TEXT_EXTENSIONS allowlist is replaced. Leading dots are optional. exclude_extensions: Optional list of file extensions to exclude (e.g. [".txt", ".md"]). Files with these extensions are skipped even if they would otherwise be indexed. Leading dots are optional.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| include_extensions | No | ||
| exclude_extensions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses default incremental indexing, the option for full re-index via force, and extension filtering. It does not mention side effects like blocking or locking, but is transparent enough.
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 well-structured: a one-liner purpose, a usage note, then concise bullet-like parameter explanations. Every sentence adds value without fluff.
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 there is an output schema (not shown), description need not explain returns. It covers when to use, parameter nuances, and default behavior. The context of working directory and auto-indexing is clearly provided.
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 0%, but the description adds thorough explanations for all three parameters, including default behavior, effect of include_extensions replacing defaults, and note about leading dots. This greatly exceeds the schema's content.
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 'manually trigger indexing of the current working directory', providing a specific verb and resource. It distinguishes from sibling tools like 'search' and 'check_index_status' by focusing on triggering indexing.
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 tells users they 'rarely need this' due to auto-indexing, and explains when to use force or extensions. However, it does not explicitly contrast with the nearly identical sibling 'ingest_current_directory'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_current_directoryB
[Deprecated: use 'ingest'] Manually trigger indexing.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| include_extensions | No | ||
| exclude_extensions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'Manually trigger indexing.' It does not disclose any behavioral traits such as whether the operation is destructive, requires authentication, or has rate limits. The description carries little beyond the action.
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 very short (six words plus deprecation note) but lacks essential details. While not verbose, the brevity results in under-specification, making it less useful despite its concise form.
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, the description does not need to explain return values. However, it fails to explain the tool's effect, parameter usage, or any side effects. For a tool with three parameters and no annotation support, the description is incomplete.
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?
With 0% schema description coverage, the description adds no meaning to the three parameters (force, include_extensions, exclude_extensions). An agent has no guidance on their purpose or valid values beyond what the types imply.
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 triggers indexing manually, and the deprecation note adds context. However, it does not distinguish its scope (current directory) from the replacement 'ingest' tool, which is acceptable for a deprecated tool.
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 explicitly says '[Deprecated: use 'ingest']', which is a direct instruction to avoid this tool and use a specific alternative. This is excellent guidance for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchC
Search indexed files using semantic or hybrid search.
Args: query: Natural language query. n_results: Optional number of results to return (default: 10).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| n_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only states it uses 'semantic or hybrid search' without explaining behavioral implications like whether results are ranked, if it supports exact matches, or any side effects. Minimal transparency.
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 with two sentences and a parameter list. It front-loads the purpose, and every sentence is meaningful, with no redundant information.
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 number of sibling search tools and lack of annotations, the description is incomplete. It does not explain the output schema, the meaning of semantic/hybrid search, or how results differ from other search tools. The agent lacks sufficient context to use it optimally.
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 0%, so the description adds meaning by describing 'query' as a natural language query and noting n_results defaults to 10. This adds value beyond schema types, but the explanation is brief and does not cover any optional constraints.
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 searches indexed files with semantic or hybrid search, providing a specific verb and resource. However, it does not differentiate from sibling tools like search_codebase or search_by_file, which also search files, so it lacks sibling differentiation.
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?
No guidance on when to use this tool versus alternatives. The description does not mention when semantic/hybrid search is appropriate or when to use other search tools, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_fileA
Search indexed files, restricting results to paths matching a pattern.
Args: query: Natural language query. file_pattern: Glob-style pattern or substring for file paths (e.g. '.py', 'models/'). n_results: Optional number of results to return (default: 10).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| file_pattern | Yes | ||
| n_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It describes a search operation but does not state whether it is read-only, whether it requires authentication, or any rate limits or side effects. The mention of 'indexed files' implies reliance on a pre-built index, but this is not explicitly explained.
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 concise with a single introductory sentence followed by a clear list of parameters in standard docstring format. It is front-loaded with the main verb and purpose, and every sentence adds value 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?
The description covers the core functionality and parameter semantics adequately. Since an output schema exists (as per context signals), return values need not be described. However, it could mention that the tool searches only over already-indexed files, and specify the scope (e.g., all files or a particular repository). Overall, it is sufficient for most use cases.
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?
With 0% schema description coverage, the description adds meaningful explanations for all parameters: 'query' is a natural language query, 'file_pattern' supports glob patterns or substrings, and 'n_results' defaults to 10. These details go beyond the schema's type information and help the agent understand expected input formats.
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 'Search indexed files, restricting results to paths matching a pattern,' which is a specific verb+resource+constraint. This distinguishes it from sibling tools like 'search' (which likely does full-text search without file restriction) and 'search_codebase_by_file' (which may be synonymous but the naming suggests similar functionality). The purpose is explicit and unambiguous.
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 lacks any guidance on when to use this tool versus alternatives, especially 'search_codebase_by_file' which appears in the sibling list. There is no mention of prerequisites, exclusions, or comparison to other search tools. The agent is left to infer usage context from the name and description, which may lead to confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codebaseB
[Deprecated: use 'search'] Semantic search over indexed files.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| n_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'semantic search', implying read-only behavior, but does not disclose any other behavioral traits (e.g., permissions, rate limits). Minimal transparency.
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 a single sentence, which is concise but omits parameter details. It includes the critical deprecation notice. While not verbose, it sacrifices completeness for brevity.
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 simplicity of the tool and presence of output schema, the description is still incomplete. It does not explain parameters or search behavior beyond 'semantic'. For a deprecated tool, it is minimally 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 description coverage is 0%, and the description does not explain the parameters (query, n_results) beyond stating 'semantic search'. No additional meaning is added to the input 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 'Semantic search over indexed files', specifying both the action and resource. It also distinguishes itself from siblings by noting deprecation and directing to 'search'.
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 '[Deprecated: use 'search']', informing the agent not to use this tool and to use the alternative 'search' instead. This provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codebase_by_fileB
[Deprecated: use 'search_by_file'] Search filtered by file pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| file_pattern | Yes | ||
| n_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It only says 'Search filtered by file pattern,' which is minimal and does not disclose side effects, authentication needs, or any behavioral characteristics beyond the basic operation.
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: a single sentence with a deprecation note. It is front-loaded and efficient, though it could be more informative.
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 has 3 parameters, no annotations, and an output schema, the description fails to adequately explain the tool's behavior, parameter roles, or return value. The deprecation note reduces the need for completeness, but for any agent considering invoking it, the description is incomplete.
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 0%, so the description should explain parameters. It only mentions 'file pattern,' leaving 'query' and 'n_results' unexplained. This provides little semantic value for parameter 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 states the tool is deprecated and redirects to 'search_by_file', while also indicating it performs a search filtered by file pattern. This makes the purpose clear despite the brevity.
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 explicitly tells the agent to use 'search_by_file' instead, providing clear guidance not to invoke this tool. This is a strong usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statsA
Get statistics about the current index.
Returns chunk count, collection name, storage mode, and embedding provider. Use this to verify the index is loaded and check its size.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It states it returns data but does not describe error handling, idempotency, or prerequisites (e.g., index must be loaded). The behavior is simple and mostly implied.
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 concise with two sentences. The purpose is front-loaded, followed by return fields and use case. No redundant or unnecessary information.
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 simplicity (no params, output schema exists), the description is reasonably complete. It lists key return fields and a use case. It could mention error states or what happens if the index isn't loaded, but overall sufficient.
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?
There are no parameters, and schema coverage is 100%. Per the guidelines, baseline is 4 for zero parameters. The description adds no parameter semantics, which is acceptable.
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 retrieves statistics about the current index and lists specific return fields (chunk count, collection name, storage mode, embedding provider). However, it does not explicitly distinguish itself from similar sibling tools like 'collection_stats' or 'check_index_status'.
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 provides a use case: 'Use this to verify the index is loaded and check its size.' It does not, however, mention when not to use it or suggest alternative tools for different purposes, leaving some ambiguity.
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.
14 tool updates
v3.0.1- First observed
check_index_status - First observed
check_status - First observed
collection_stats - First observed
get_codebase_context - First observed
get_context - First observed
get_dependency_graph - First observed
get_file_signatures - First observed
ingest - First observed
ingest_current_directory - First observed
search - First observed
search_by_file - First observed
search_codebase - First observed
search_codebase_by_file - First observed
stats
TDQS
Several tools are exact duplicates of others, with one marked deprecated and one current (e.g., check_index_status vs check_status). This creates ambiguity as an agent cannot easily distinguish which to use, leading to potential misselection.
Naming is somewhat consistent with a verb_noun pattern (e.g., search, search_by_file, ingest, stats), but deprecated tools use inconsistent forms like check_index_status and get_codebase_context, breaking the pattern.
With 14 tools, the count is reasonable for a RAG server. However, 6 of them are deprecated, reducing the effective set to 8 well-scoped tools, which is appropriate for the domain.
The toolset covers key operations: index status, context overview, search (including file-filtered), statistics, ingestion, dependency graph, and file signatures. Missing explicit index deletion or update, but core workflows are covered.
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
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Shared memory for coding agents. Stop re-explaining your codebase every session.
Give your AI agent a persistent map of your project's structure, dependencies, and bugs.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables semantic code search across multiple repositories using natural language queries. Provides intelligent code discovery, symbol lookups, and cross-repo dependency analysis for AI coding agents.MIT
- AlicenseNot gradedqualityDmaintenanceEnables semantic code search across multiple repositories using AST-aware chunking and relationship tracking. Supports local LLM embeddings, real-time indexing, and cross-codebase dependency analysis through vector and graph databases.3MIT
- AlicenseNot gradedqualityDmaintenanceProvides LLM-optimized tools for advanced code analysis, repository complexity evaluation, and call graph generation. It enables users to visualize directory structures, detect code patterns, and build semantic context with significant token savings.18MIT
- AlicenseNot gradedqualityBmaintenanceProvides AI coding assistants with deep, semantic understanding of local codebases via AST-aware chunking, cross-repo symbol graphs, and architectural memory, enabling context-aware code search and dependency tracing.10MIT
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/Suyash2013/codebase-rag-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server