Code Index MCP
Supports indexing and analysis of Astro projects, including component structure and syntax-aware search.
Supports indexing and analysis of C/C++ code, including classes, functions, includes, and preprocessor directives.
Supports indexing and analysis of CSS files, including selectors, classes, and styling structure.
Supports indexing and analysis of EJS templates, including embedded JavaScript and includes.
Supports indexing and analysis of Flyway migration files, including SQL and Java-based migrations.
Supports indexing and analysis of JavaScript code, including ES modules, classes, and functions.
Supports indexing and analysis of Kotlin code, including classes, functions, and extensions.
Supports indexing and analysis of Less stylesheets, including variables, mixins, and imports.
Supports indexing and analysis of Liquibase migration files, including change sets and preconditions.
Supports indexing and analysis of Lua code, including tables, functions, and modules.
Supports indexing and analysis of Markdown documentation, including headings, code blocks, and links.
Supports indexing and analysis of MDX files, combining Markdown with JSX components.
Supports indexing and analysis of MySQL SQL files, including queries, stored procedures, and migrations.
Supports indexing and analysis of Perl code, including packages, subroutines, and regex patterns.
Supports indexing and analysis of PHP code, including classes, functions, and namespaces.
Supports indexing and analysis of PostgreSQL SQL files, including queries, functions, and migrations.
Supports indexing and analysis of Pug templates, including mixins, includes, and interpolation.
Supports indexing and analysis of Python code, including imports, classes, functions, and complexity metrics.
Supports indexing and analysis of React projects, including JSX/TSX components, hooks, and imports.
Supports indexing and analysis of Ruby code, including modules, classes, methods, and gems.
Supports indexing and analysis of Rust code, including modules, structs, and functions.
Supports indexing and analysis of Sass/SCSS stylesheets, including variables, mixins, and inheritance.
Supports indexing and analysis of Scala code, including objects, classes, and traits.
Supports indexing and analysis of shell scripts (Bash, Zsh), including functions and command structure.
Supports indexing and analysis of SQLite SQL files, including queries, clauses, and database objects.
Supports indexing and analysis of Stylus stylesheets, including functions and imports.
Supports indexing and analysis of Svelte projects, including component structure and syntax-aware search.
Supports indexing and analysis of Swift code, including structs, classes, functions, and protocols.
Supports indexing and analysis of TypeScript code, including types, interfaces, and generics.
Supports indexing and analysis of XML files, including elements, attributes, and schemas.
Supports indexing and analysis of YAML configuration and data files.
Supports indexing and analysis of Zig code, including structs, enums, and functions.
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 Index MCPfind all classes that implement the Observer pattern"
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 Index MCP
Intelligent code indexing and analysis for Large Language Models
Transform how AI understands your codebase with advanced search, analysis, and navigation capabilities.
Overview
Code Index MCP is a Model Context Protocol server that bridges the gap between AI models and complex codebases. It provides intelligent indexing, advanced search capabilities, and detailed code analysis to help AI assistants understand and navigate your projects effectively.
Perfect for: Code review, refactoring, documentation generation, debugging assistance, and architectural analysis.
Related MCP server: Portable MCP Toolkit
Key Features
🔍 Intelligent Search & Analysis
Advanced Search: Auto-detects and uses the best available tool (ugrep, ripgrep, ag, or grep)
Regex Support: Full regex pattern matching with ReDoS attack prevention
Fuzzy Search: True fuzzy matching with edit distance (ugrep) or word boundary patterns
File Analysis: Deep insights into structure, imports, classes, methods, and complexity metrics
🗂️ Multi-Language Support
Mainstream Languages: Java, Python, JavaScript/TypeScript, C/C++, Go, Rust, C#
Mobile Development: Swift, Kotlin, Objective-C/C++, React Native
Web Frontend: Vue, React, Svelte, Astro, HTML, CSS, SCSS
Database: SQL (MySQL, PostgreSQL, SQLite), NoSQL, stored procedures, migrations
Scripting: Ruby, PHP, Shell, PowerShell, Bash
Systems: C/C++, Rust, Go, Zig
JVM Ecosystem: Java, Kotlin, Scala, Groovy
Others: Lua, Perl, R, MATLAB, configuration files
50+ File Types Total - View complete list
⚡ Real-time Monitoring & Auto-refresh
File Watcher: Automatic index updates when files change
Cross-platform: Native OS file system monitoring (inotify, FSEvents, ReadDirectoryChangesW)
Smart Debouncing: Batches rapid changes to prevent excessive rebuilds (default: 6 seconds)
Thread-safe: Non-blocking background operations with ThreadPoolExecutor
⚡ Performance & Efficiency
Smart Indexing: Recursively scans with intelligent filtering of build directories
Persistent Caching: Stores indexes for lightning-fast subsequent access
Lazy Loading: Tools detected only when needed for optimal startup
Memory Efficient: Intelligent caching strategies for large codebases
Supported File Types
System & Low-Level:
C/C++ (
.c,.cpp,.h,.hpp)Rust (
.rs)Zig (
.zig)Go (
.go)
Object-Oriented:
Java (
.java)C# (
.cs)Kotlin (
.kt)Scala (
.scala)Objective-C/C++ (
.m,.mm)Swift (
.swift)
Scripting & Dynamic:
Python (
.py)JavaScript/TypeScript (
.js,.ts,.jsx,.tsx,.mjs,.cjs)Ruby (
.rb)PHP (
.php)Shell (
.sh,.bash)
Frameworks & Libraries:
Vue (
.vue)Svelte (
.svelte)Astro (
.astro)
Styling:
CSS (
.css,.scss,.less,.sass,.stylus,.styl)HTML (
.html)
Templates:
Handlebars (
.hbs,.handlebars)EJS (
.ejs)Pug (
.pug)
SQL Variants:
Standard SQL (
.sql,.ddl,.dml)Database-specific (
.mysql,.postgresql,.psql,.sqlite,.mssql,.oracle,.ora,.db2)
Database Objects:
Procedures & Functions (
.proc,.procedure,.func,.function)Views & Triggers (
.view,.trigger,.index)
Migration & Tools:
Migration files (
.migration,.seed,.fixture,.schema)Tool-specific (
.liquibase,.flyway)
NoSQL & Modern:
Graph & Query (
.cql,.cypher,.sparql,.gql)
Markdown (
.md,.mdx)Configuration (
.json,.xml,.yml,.yaml)
Quick Start
🚀 Recommended Setup (Most Users)
The easiest way to get started with any MCP-compatible application:
Prerequisites: Python 3.10+ and uv
Add to your MCP configuration (e.g.,
claude_desktop_config.jsonor~/.claude.json):{ "mcpServers": { "code-index": { "command": "uvx", "args": ["code-index-mcp"] } } }Restart your application –
uvxautomatically handles installation and execution
🛠️ Development Setup
For contributing or local development:
Clone and install:
git clone https://github.com/johnhuang316/code-index-mcp.git cd code-index-mcp uv syncConfigure for local development:
{ "mcpServers": { "code-index": { "command": "uv", "args": ["run", "code-index-mcp"] } } }Debug with MCP Inspector:
npx @modelcontextprotocol/inspector uv run code-index-mcp
If you prefer traditional pip management:
pip install code-index-mcpThen configure:
{
"mcpServers": {
"code-index": {
"command": "code-index-mcp",
"args": []
}
}
}Available Tools
🏗️ Project Management
Tool | Description |
| Initialize indexing for a project directory |
| Rebuild the project index after file changes |
| View current project configuration and status |
🔍 Search & Discovery
Tool | Description |
| Smart search with regex, fuzzy matching, and file filtering |
| Locate files using glob patterns (e.g., |
| Analyze file structure, functions, imports, and complexity |
🔄 Monitoring & Auto-refresh
Tool | Description |
| Check file watcher status and configuration |
| Enable/disable auto-refresh and configure settings |
🛠️ System & Maintenance
Tool | Description |
| Set up storage directory for index data |
| Verify index storage location and permissions |
| Reset all cached data and configurations |
| Re-detect available search tools (ugrep, ripgrep, etc.) |
Usage Examples
🎯 Quick Start Workflow
1. Initialize Your Project
Set the project path to /Users/dev/my-react-appAutomatically indexes your codebase and creates searchable cache
2. Explore Project Structure
Find all TypeScript component files in src/componentsUses: find_files with pattern src/components/**/*.tsx
3. Analyze Key Files
Give me a summary of src/api/userService.tsUses: get_file_summary to show functions, imports, and complexity
🔍 Advanced Search Examples
Search for all function calls matching "get.*Data" using regexFinds: getData(), getUserData(), getFormData(), etc.
Find authentication-related functions with fuzzy search for 'authUser'Matches: authenticateUser, authUserToken, userAuthCheck, etc.
Search for "API_ENDPOINT" only in Python filesUses: search_code_advanced with file_pattern: "*.py"
Configure automatic index updates when files changeUses: configure_file_watcher to enable/disable monitoring and set debounce timing
I added new components, please refresh the project indexUses: refresh_index to update the searchable cache
Troubleshooting
🔄 Auto-refresh Not Working
If automatic index updates aren't working when files change, try:
pip install watchdog(may resolve environment isolation issues)Use manual refresh: Call the
refresh_indextool after making file changesCheck file watcher status: Use
get_file_watcher_statusto verify monitoring is active
Development & Contributing
🔧 Building from Source
git clone https://github.com/johnhuang316/code-index-mcp.git
cd code-index-mcp
uv sync
uv run code-index-mcp🐛 Debugging
npx @modelcontextprotocol/inspector uvx code-index-mcp🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📜 License
🌐 Translations
Available Tools
12 toolscheck_temp_directoryA
Check the temporary directory used for storing index data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must convey behavioral traits. 'Check' is vague; it doesn't specify whether the tool returns a status, contents, or modifies anything. Read-only behavior is implied but not confirmed.
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 with no unnecessary words. It is 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 zero-parameter tool with no output schema, the description is minimal. It explains the purpose but lacks details on what the check returns or how to interpret results, leaving some incompleteness.
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 exist, and schema coverage is 100%. The description adds value by specifying the context of the temporary directory (used for storing index data), which goes beyond the empty 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 checks the temporary directory for index data. The verb 'check' and resource 'temporary directory' are specific, and it distinguishes from sibling 'create_temp_directory'.
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 like 'create_temp_directory'. There is no indication of prerequisites or conditions under which checking is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_settingsB
Clear all settings and cached data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It mentions 'Clear all settings and cached data', implying a destructive operation, but does not specify irreversible effects, required permissions, or what exactly is cleared (application-level, project-level?). This is insufficient for a potentially impactful tool.
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 with no extraneous words. It's as concise as possible while conveying the core purpose.
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 no parameters, no output schema, and no annotations, the description must compensate but fails to provide sufficient context. It does not explain the scope of 'all settings', potential side effects, or how it interacts with other tools. For a potentially destructive action, this 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?
There are no parameters, and schema coverage is 100%. The description does not need to add parameter-level details. The baseline of 4 is appropriate since the zero-param case is inherently simple and clear.
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 verb 'Clear' and the resource 'all settings and cached data', making the action obvious. However, it doesn't differentiate from sibling tools that also deal with settings (e.g., get_settings_info), though the sibling list includes distinctly different operations. A bit more specificity about which settings could improve 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?
No guidance is provided on when to use this tool versus alternatives. The description simply states what it does without any context about prerequisites, consequences, or scenarios where it is appropriate. This leaves the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_file_watcherC
Configure file watcher service settings.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | No | ||
| debounce_seconds | No | ||
| additional_exclude_patterns | No |
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. However, it only states 'Configure settings' without mentioning side effects, permissions, persistence, or what changes take effect. This is insufficient.
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, so it is concise. However, it is overly minimal and lacks necessary structure or detail, making it less than ideal.
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 three optional parameters and no output schema, the description is incomplete. It does not explain return values, side effects, or prerequisites for usage.
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 adds no meaning to the parameters (enabled, debounce_seconds, additional_exclude_patterns). It does not explain what each parameter does or how they affect the file watcher.
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: 'Configure file watcher service settings.' It uses a specific verb (configure) and resource (file watcher service settings), which distinguishes it from sibling tools like get_file_watcher_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 offers no guidance on when to use this tool versus alternatives, such as when to configure vs check status. No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_temp_directoryA
Create the temporary directory used for storing index data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a write operation ('Create'), but with no annotations, the burden is high. It fails to disclose critical behavior: is it idempotent? What happens if the directory already exists? Are there any side effects or permissions required? This lack of detail hampers safe invocation.
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, front-loaded sentence that conveys the core action without any wasted words. It is appropriately concise for a tool with no parameters.
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 output schema), the description is minimally complete. However, it lacks context about its role in the workflow (e.g., used before indexing) and error conditions. For a tool with no annotations, this is a viable but incomplete description.
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, so per the guidelines the baseline is 4. The description does not need to add parameter information, and it is clear that the tool requires no input.
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 action (create) and the resource (temporary directory for storing index data), which distinguishes it from sibling tools like check_temp_directory (which checks existence) and clear_settings (which clears settings). It is specific and actionable.
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 is provided on when to use this tool versus alternatives, such as prerequisites (e.g., should be called before refresh_index) or conditions (e.g., only once). The agent receives no contextual hints about typical usage flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_filesA
Find files matching a glob pattern using efficient directory tree traversal.
Use when:
- Looking for files by pattern (e.g., "*.py", "test_*.js", "src/**/*.ts")
- Searching by filename only (e.g., "README.md" finds all README files)
- Checking if specific files exist in the project
- Getting file lists for further analysis
Pattern matching:
- Supports both full path and filename-only matching
- Uses forward slashes consistently across all platforms
- Efficient directory tree traversal for better performance
Args:
pattern: Glob pattern to match files (e.g., "*.py", "test_*.js", "README.md")
Returns:
Dictionary with files list and status information
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions 'efficient directory tree traversal' and cross-platform slash handling but omits details like search scope (e.g., whether hidden files are included) and whether the traversal is recursive by default.
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 with sections for primary function, use cases, pattern notes, args, and returns. It is concise yet informative, though the 'Use when' list could be slightly more compact.
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 (one parameter, no output schema), the description covers purpose and usage adequately. However, it does not specify the search scope (e.g., project root) or behavior regarding hidden files, leaving some gaps for the 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?
Schema coverage is 0%, but the description compensates with examples (e.g., '*.py', 'README.md') and explains that the pattern supports full path and filename-only matching. This adds meaning beyond the raw schema definition, though more detail on glob syntax would improve it.
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: finding files matching a glob pattern using efficient directory tree traversal. The verb 'Find' and resource 'files matching a glob pattern' are specific and distinguish it from sibling tools like search_code_advanced which searches code 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 'Use when' section provides clear scenarios for using the tool, such as looking by pattern or checking existence. However, it lacks guidance on when not to use it or explicit differentiation from sibling tools, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_summaryA
Get a summary of a specific file, including:
- Line count
- Function/class definitions (for supported languages)
- Import statements
- Basic complexity metrics
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | 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 mentions 'for supported languages' but does not disclose behavior for unsupported languages, error handling, or performance implications. The read-only nature is implied but not 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?
Description is brief and uses a bullet list for clarity. Every sentence adds value, though it could be more concise by combining some elements.
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 parameter, no output schema), the description provides a reasonable outline of the summary contents. However, it lacks details on supported languages, error cases, or whether it works on directories.
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 description should compensate. It describes the tool's output but does not elaborate on the 'file_path' parameter beyond the schema. No details on path format, allowed locations, or restrictions.
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?
Description clearly states the tool retrieves a summary of a specific file, listing specific data points like line count and function definitions. It distinguishes itself from sibling tools like find_files and search_code_advanced by focusing on summary extraction.
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?
Description implies use when a file summary is needed, but does not provide explicit guidance on when to use versus alternatives like search_code_advanced. No conditions or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_watcher_statusA
Get file watcher service status and statistics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 states 'Get' which implies read-only, but does not explicitly confirm it is non-destructive or disclose any other behaviors like authentication needs or rate limits.
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 with no waste; it is front-loaded and appropriately sized for the tool's simplicity.
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 tool is simple with no parameters or output schema, but the description could be more complete by explaining what 'statistics' entails or how to interpret the status. Given the sibling tools, it provides adequate but not rich 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?
There are no parameters, so schema coverage is 100%. The description does not need to add parameter details; baseline for zero parameters is 4.
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 uses a specific verb 'Get' and clear resource 'file watcher service status and statistics', and it distinguishes from sibling tools like 'configure_file_watcher' which implies configuration rather than retrieval.
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 implies usage for retrieving status, but does not provide explicit guidance on when to use this tool over alternatives or when not to use it. No exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_settings_infoB
Get information about the project settings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavior. It only implies a read operation but lacks details on side effects, permissions, or return behavior.
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 concise sentence with no superfluous information, earning full marks for efficiency.
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 output schema and a simple tool, the description is minimally adequate but lacks detail on what constitutes 'project settings' or the return values.
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 the schema coverage is 100%. The description adds no extra meaning beyond the schema, which is acceptable under baseline scoring rules.
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 project settings information, with a specific verb and resource. However, it does not explicitly differentiate from sibling tools like 'check_temp_directory' or 'clear_settings'.
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 is provided on when to use this tool versus alternatives. The description does not mention prerequisites or context for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_indexA
Manually refresh the project index when files have been added/removed/moved.
Use when:
- File watcher is disabled or unavailable
- After large-scale operations (git checkout, merge, pull) that change many files
- When you want immediate index rebuild without waiting for file watcher debounce
- When find_files results seem incomplete or outdated
- For troubleshooting suspected index synchronization issues
Important notes for LLMs:
- Always available as backup when file watcher is not working
- Performs full project re-indexing for complete accuracy
- Use when you suspect the index is stale after file system changes
- **Call this after programmatic file modifications if file watcher seems unresponsive**
- Complements the automatic file watcher system
Returns:
Success message with total file count
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It discloses that the tool performs full re-indexing for accuracy, returns success with file count, and is a backup for file watcher. Could mention whether the operation is synchronous or has performance implications, but current detail 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?
Description is well-structured with a clear header, bullet list for usage, important notes, and return information. Every sentence adds value, no redundancy. Front-loaded with purpose.
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 no parameters and no output schema, the description covers all necessary aspects: purpose, when to use, behavioral notes, and return value. It is complete for an agent to decide and invoke correctly.
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?
Input schema has zero parameters, so no param info needed. Baseline for 0 params is 4. Description adds value by explaining behavior, but no parameter semantics required.
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?
Description clearly states the tool refreshes the project index when files change, with a specific verb 'refresh' and resource 'project index'. It distinguishes from sibling tools like find_files and get_file_watcher_status by positioning itself as a manual complement to the automatic file watcher.
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?
Provides explicit when-to-use scenarios: file watcher disabled, after large operations, when find_files outdated, and for troubleshooting. Also notes when not to rely on it (when file watcher works) and gives actionable guidance for LLMs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_search_toolsA
Manually re-detect the available command-line search tools on the system. This is useful if you have installed a new tool (like ripgrep) after starting the server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It clearly states the action (re-detect) and the benefit (making new tools available). No hidden behaviors are implied, but it could mention that it scans PATH or specific directories.
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. The first sentence states the purpose, the second provides usage guidance. Perfectly 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 tool with no parameters and a simple action, the description is complete. It tells what, when, and why. No output schema is needed.
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. The description adds value by explaining the purpose and context, which is sufficient. A more detailed explanation of what 're-detect' entails could push it higher.
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 uses a specific verb 're-detect' and a clear resource 'available command-line search tools'. It distinguishes from sibling tools like find_files and search_code_advanced, which perform actual searches.
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 concrete use case: after installing a new tool like ripgrep. It implies this is not needed during normal operation, but does not explicitly list 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.
search_code_advancedA
Search for a code pattern in the project using an advanced, fast tool.
This tool automatically selects the best available command-line search tool
(like ugrep, ripgrep, ag, or grep) for maximum performance.
Args:
pattern: The search pattern. Can be literal text or regex (see regex parameter).
case_sensitive: Whether the search should be case-sensitive.
context_lines: Number of lines to show before and after the match.
file_pattern: A glob pattern to filter files to search in
(e.g., "*.py", "*.js", "test_*.py").
All search tools now handle glob patterns consistently:
- ugrep: Uses glob patterns (*.py, *.{js,ts})
- ripgrep: Uses glob patterns (*.py, *.{js,ts})
- ag (Silver Searcher): Automatically converts globs to regex patterns
- grep: Basic glob pattern matching
All common glob patterns like "*.py", "test_*.js", "src/*.ts" are supported.
fuzzy: If True, enables fuzzy/partial matching behavior varies by search tool:
- ugrep: Native fuzzy search with --fuzzy flag (true edit-distance fuzzy search)
- ripgrep, ag, grep, basic: Word boundary pattern matching (not true fuzzy search)
IMPORTANT: Only ugrep provides true fuzzy search. Other tools use word boundary
matching which allows partial matches at word boundaries.
For exact literal matches, set fuzzy=False (default and recommended).
regex: Controls regex pattern matching behavior:
- If True, enables regex pattern matching
- If False, forces literal string search
- If None (default), automatically detects regex patterns and enables regex for patterns like "ERROR|WARN"
The pattern will always be validated for safety to prevent ReDoS attacks.
Returns:
A dictionary containing the search results or an error message.| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | ||
| case_sensitive | No | ||
| context_lines | No | ||
| file_pattern | No | ||
| fuzzy | No | ||
| regex | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: automatic selection among ugrep, ripgrep, ag, grep; tool-specific behavior for fuzzy and regex patterns; safety validation to prevent ReDoS; and how file_pattern globs are handled consistently. This goes beyond what schema provides.
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: first line states purpose, then bullet-like parameter explanations. However, parameter descriptions are verbose, especially file_pattern and fuzzy, which could be more concise. The essential info is front-loaded, but overall length could be trimmed without losing clarity.
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 6 parameters (1 required), no output schema, and no annotations, the description thoroughly covers all aspects: parameter meanings, automatic tool selection, edge cases (fuzzy tool differences, regex auto-detection, safety validation), and return type (dictionary with results or error). It is fully sufficient for an AI agent to use the tool correctly.
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 has 0% coverage, so description must carry full weight. It adds detailed semantics for each parameter: pattern (literal/regex), case_sensitive, context_lines, file_pattern (glob handling per tool), fuzzy (tool differences), regex (auto-detection). While thorough, some repetition (e.g., file_pattern details repeated) prevents a perfect score.
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: 'Search for a code pattern in the project using an advanced, fast tool.' It specifies the verb 'search' and resource 'code pattern', and distinguishes from sibling tools like 'find_files' (which likely searches by file name) by emphasizing 'advanced' and 'fast' and automatic tool selection.
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 indicates when to use this tool (searching code patterns, automatic selection of best command-line tool) but does not explicitly state when not to use it or contrast with alternatives. However, it implicitly differentiates from siblings by describing its advanced nature, so nearly comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_project_pathC
Set the base project path for indexing.
| Name | Required | Description | Default |
|---|---|---|---|
| path | 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 fails to disclose important behaviors such as whether the path must exist, if it overwrites previous settings, or side effects on indexing. This is insufficient for a mutation 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 a single sentence, which is concise, but it sacrifices necessary detail. It could be longer to include parameter guidance while remaining 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?
Given the tool's simplicity (1 param, no output schema, no annotations), the description should still cover path validity and behavioral impact. It lacks these details, leaving the agent underinformed.
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%, requiring the description to detail the 'path' parameter. The description only repeats the parameter name without adding format, constraints (e.g., absolute/relative), or validation rules.
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 verb 'Set' and the resource 'base project path for indexing'. It specifies the tool's core function and distinguishes it from siblings like 'check_temp_directory' or 'clear_settings'.
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 no guidance on when to use this tool versus alternatives, nor does it specify conditions or prerequisites. An AI agent would lack context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: checking vs creating temp directory, configuring vs getting watcher status, clearing vs getting settings, finding files vs searching code vs getting file summary, refreshing index vs refreshing search tools. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern with lowercase and underscores, e.g., check_temp_directory, get_file_summary, set_project_path. The verbs are diverse but each clearly indicates the action.
With 12 tools covering directory management, settings, file watching, file finding, code search, and index refresh, the count is well-scoped for the server's purpose. No tool feels redundant or missing.
The tool set covers key operations: setting project path, finding files, searching code, getting file summaries, refreshing index, and managing settings/watcher. Minor gaps exist, such as no explicit tool to list indexed files or get index status, but the core workflows are supported.
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 LLMs. Analyze, search, and retrieve code from any public git repository.
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.
Related MCP Servers
- AlicenseAqualityFmaintenanceProvides code repository indexing and semantic search capabilities, allowing natural language queries to find relevant code snippets with automatic incremental indexing and multi-language support.119360ISC
- AlicenseNot gradedqualityCmaintenanceProvides AI-powered code intelligence for any codebase using local LLMs and vector search, enabling semantic code search, pattern analysis, and context-optimized code generation with 90% token savings.2MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first code indexer that provides deep code understanding for Claude and other LLMs with symbol/text search across 48+ languages, semantic search capabilities, and real-time index updates through the Model Context Protocol.57MIT
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to perform high-performance code search and analysis across multiple languages using symbol indexing, regex text search, and structural AST pattern matching. It also provides tools for technology stack detection and dependency analysis with persistent caching for optimized performance.7
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/marksolly/code-scope-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server