Skip to main content
Glama
MausRundung

Project Explorer MCP Server

by MausRundung

A powerful Model Context Protocol server for exploring, analyzing, and managing project files with advanced search capabilities

šŸ“¦ Available on npm: @team-jd/mcp-project-explorer

npm version npm downloads Node.js TypeScript GitHub

ā–¶ Watch the demo

⚔ Quick Start

{
  "mcpServers": {
    "project-explorer": {
      "command": "npx",
      "args": ["-y", "@team-jd/mcp-project-explorer", "/your/project/path"]
    }
  }
}

With disabled tools:

{
  "mcpServers": {
    "project-explorer": {
      "command": "npx",
      "args": [
        "-y",
        "@team-jd/mcp-project-explorer",
        "/your/project/path",
        "--disable-tool=delete_file"
      ]
    }
  }
}

Related MCP server: Codebase MCP Server

šŸŽ¬ Demo

ā–¶ Watch the full demo on YouTube


šŸ’ø Stop Wasting Tokens

Every line of raw file content your agent reads is context it never gets back. Project Explorer is built to answer structural questions without dumping files into the conversation:

  • 🧠 explore_project returns a compact file listing plus an import/export dependency graph — no need to open files to understand a codebase

  • šŸŽÆ search_files trims output with snippetLength, maxResults, extensions, excludePatterns, excludeComments and excludeStrings, so you get only the lines that matter

  • 🚫 Build and vendor noise (node_modules, dist, .git, .next, …) is always skipped

  • āœ‚ļø --disable-tool removes tools you don't use from the tool list entirely, shrinking the schema payload sent with every request


šŸš€ Overview

The Project Explorer MCP Server provides comprehensive tools for analyzing project structures, searching through codebases, managing dependencies, and performing file operations. Perfect for developers who need intelligent project navigation and analysis capabilities.

šŸ“¦ Installation & Setup

Add this server to your MCP settings configuration:

{
  "mcpServers": {
    "project-explorer": {
      "command": "npx",
      "args": [
        "-y",
        "@team-jd/mcp-project-explorer",
        "/path/to/your/project"
      ]
    }
  }
}

šŸ“ Multiple Directory Access:

{
  "mcpServers": {
    "project-explorer": {
      "command": "npx",
      "args": [
        "-y",
        "@team-jd/mcp-project-explorer",
        "/path/to/project1",
        "/path/to/project2",
        "/path/to/project3"
      ]
    }
  }
}

🚫 Disabling Specific Tools: Use --disable-tool=tool_name or --disable-tool tool_name to disable tools you don't want available. Disabled tools won't appear in the tools list and can't be called.

{
  "mcpServers": {
    "project-explorer": {
      "command": "npx",
      "args": [
        "-y",
        "@team-jd/mcp-project-explorer",
        "/path/to/project",
        "--disable-tool=delete_file",
        "--disable-tool", "rename_file"
      ]
    }
  }
}

šŸ“¦ Available tools you can disable:

  • explore_project

  • list_allowed_directories

  • search_files

  • rename_file

  • delete_file

  • check_outdated

šŸ› ļø For Developers

# Clone and setup for development
git clone https://github.com/MausRundung/mcp-explorer.git
cd mcp-explorer

# Install dependencies
npm install

# Build the project
npm run build

# Run the MCP inspector for testing
npm run inspector

šŸ› ļø Available Commands

šŸ“‚ explore_project

Analyzes project structure with detailed file information and import/export analysis

// Basic usage
explore_project({
  directory: "/path/to/project"
})

// Advanced usage
explore_project({
  directory: "/path/to/project",
  subDirectory: "src",           // Optional: focus on specific subdirectory
  includeHidden: false          // Optional: include hidden files (default: false)
})

✨ Features:

  • šŸ“Š File size analysis with human-readable formatting

  • šŸ” Import/export statement detection for JS/TS and Dart files

  • 🐦 Flutter/Dart dependency graph: resolves package: URIs, implicit-relative imports, and part/part of codegen links via pubspec.yaml (including local path: dependencies in monorepos)

  • šŸ“¦ pubspec.yaml summaries: package name, SDK constraints, dependency counts, path deps, declared assets

  • 🚫 Automatically excludes build directories (node_modules, .git, dist, .vscode, .gradle, .idea, .dart_tool, Pods, ephemeral, etc.)

  • šŸ“ Recursive directory traversal

  • šŸŽÆ Support for subdirectory analysis


šŸ”Ž search_files

Advanced file and code search with comprehensive filtering capabilities

// Simple text search
search_files({
  pattern: "your search term",
  searchPath: "/path/to/search"
})

// Advanced search with filters
search_files({
  pattern: "function.*async",     // Regex pattern
  searchPath: "/path/to/search",
  regexMode: true,               // Enable regex
  caseSensitive: false,          // Case sensitivity
  extensions: [".js", ".ts"],    // File types to include
  excludeExtensions: [".min.js"], // File types to exclude
  excludeComments: true,         // Skip comments
  excludeStrings: true,          // Skip string literals
  maxResults: 50,                // Limit results
  sortBy: "relevance"            // Sort method
})

šŸŽ›ļø Search Options:

Parameter

Type

Default

Description

pattern

string

required

Search pattern (text or regex). No default

searchPath

string

first allowed dir

Directory to search in

extensions

string[]

all

Include only these file types

excludeExtensions

string[]

[]

Exclude these file types

excludePatterns

string[]

[]

Exclude filename patterns

regexMode

boolean

false

Treat pattern as regex

caseSensitive

boolean

false

Case-sensitive search

wordBoundary

boolean

false

Match whole words only

multiline

boolean

false

Multiline regex matching

maxDepth

number

unlimited

Directory recursion depth

followSymlinks

boolean

false

Follow symbolic links

includeBinary

boolean

false

Search in binary files

minSize

number

none

Minimum file size (bytes)

maxSize

number

none

Maximum file size (bytes)

modifiedAfter

string

none

Files modified after date (ISO 8601)

modifiedBefore

string

none

Files modified before date (ISO 8601)

snippetLength

number

50

Text snippet length around matches

maxResults

number

100

Maximum number of results

sortBy

string

"relevance"

Sort by: relevance, file, lineNumber, modified, size

groupByFile

boolean

true

Group results by file

excludeComments

boolean

false

Skip comments (language-aware, incl. Dart)

excludeStrings

boolean

false

Skip string literals

excludeGenerated

boolean

false

Skip generated Dart parts (*.g.dart, *.freezed.dart, *.mocks.dart, …)

outputFormat

string

"text"

Output format: text or json

šŸŽÆ Use Cases:

  • šŸ” Find all TODO comments: pattern: "TODO.*", excludeStrings: true

  • šŸ› Search for potential bugs: pattern: "console\\.log", regexMode: true

  • šŸ“¦ Find import statements: pattern: "import.*from", regexMode: true

  • šŸ”§ Recent changes: modifiedAfter: "2024-01-01", extensions: [".js", ".ts"]


šŸ“Š check_outdated

Checks for outdated npm packages with detailed analysis

// Basic check
check_outdated({
  projectPath: "/path/to/project"
})

// Detailed analysis
check_outdated({
  projectPath: "/path/to/project",
  includeDevDependencies: true,  // Include dev dependencies
  outputFormat: "detailed"       // detailed, summary, or raw
})

šŸ“‹ Output Formats:

  • detailed - Full package info with versions and update commands

  • summary - Count of outdated packages by type

  • raw - Raw npm outdated JSON output

šŸ”§ Requirements:

  • Node.js and npm must be installed

  • Valid package.json in the specified directory


šŸ—‘ļø delete_file

Safely delete files or directories with protection mechanisms

// Delete a file
delete_file({
  path: "/path/to/file.txt"
})

// Delete a directory (requires recursive flag)
delete_file({
  path: "/path/to/directory",
  recursive: true,              // Required for directories
  force: false                  // Force deletion of read-only files
})

āš ļø Safety Features:

  • šŸ”’ Only works within allowed directories

  • šŸ“ Requires recursive: true for non-empty directories

  • šŸ›”ļø Protection against accidental deletions

  • ⚔ Optional force deletion for read-only files


āœļø rename_file

Rename or move files and directories

// Simple rename
rename_file({
  oldPath: "/path/to/old-name.txt",
  newPath: "/path/to/new-name.txt"
})

// Move to different directory
rename_file({
  oldPath: "/path/to/file.txt",
  newPath: "/different/path/file.txt"
})

✨ Features:

  • šŸ“ Works with both files and directories

  • šŸ”„ Can move between directories

  • 🚫 Fails if destination already exists

  • šŸ”’ Both paths must be within allowed directories


šŸ“‹ list_allowed_directories

Shows which directories the server can access

list_allowed_directories()

šŸ”§ Use Cases:

  • šŸ” Check access permissions before operations

  • šŸ›”ļø Security validation

  • šŸ“‚ Directory discovery


šŸŽØ Usage Examples

šŸ“Š Project Analysis Workflow

// 1. Check what directories you can access
list_allowed_directories()

// 2. Explore the project structure
explore_project({
  directory: "/your/project/path",
  includeHidden: false
})

// 3. Search for specific patterns
search_files({
  pattern: "useState",
  searchPath: "/your/project/path",
  extensions: [".jsx", ".tsx"],
  excludeComments: true
})

// 4. Check for outdated dependencies
check_outdated({
  projectPath: "/your/project/path",
  outputFormat: "detailed"
})

šŸ” Advanced Search Scenarios

// Find all async functions
search_files({
  pattern: "async\\s+function",
  regexMode: true,
  extensions: [".js", ".ts"]
})

// Find large files modified recently
search_files({
  pattern: ".*",
  minSize: 1000000,  // 1MB+
  modifiedAfter: "2024-01-01",
  sortBy: "size"
})

// Find TODO comments excluding test files
search_files({
  pattern: "TODO|FIXME|BUG",
  regexMode: true,
  excludePatterns: ["*test*", "*spec*"],
  excludeStrings: true
})

šŸ›”ļø Security & Permissions

The server operates within allowed directories only, providing:

  • šŸ”’ Sandboxed access - Cannot access files outside allowed paths

  • šŸ›”ļø Safe operations - Built-in protections against dangerous operations

  • šŸ“‚ Path validation - All paths are normalized and validated

  • āš ļø Error handling - Clear error messages for permission issues


šŸ”§ Development

šŸ“ Project Structure

src/
ā”œā”€ā”€ index.ts              # Main server entry point
ā”œā”€ā”€ explore-project.ts    # Project analysis tool
ā”œā”€ā”€ search.ts            # Advanced search functionality
ā”œā”€ā”€ check-outdated.ts   # NPM dependency checker
ā”œā”€ā”€ delete-file.ts       # File deletion tool
ā”œā”€ā”€ rename-file.ts       # File rename/move tool
└── list-allowed.ts      # Directory permission checker

šŸ—ļø Build Commands

npm run build     # Compile TypeScript
npm run watch     # Watch mode for development
npm run inspector # Test with MCP inspector

šŸ¤ Contributing

  1. šŸ“ Fork the repository

  2. 🌟 Create a feature branch

  3. šŸ’» Make your changes

  4. āœ… Test thoroughly

  5. šŸš€ Submit a pull request


šŸ“„ License

See LICENSE file for details. šŸ’š Qoder

Available Tools

6 tools
check_outdatedA

Check for outdated npm packages in package.json using 'npm outdated'. Analyzes the current project's dependencies and shows which packages have newer versions available. Requires npm to be installed and accessible from the command line.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoAlias for projectPath
projectPathNoPath to the directory containing package.json. Defaults to the first allowed directory if not specified.
outputFormatNoFormat of the output: detailed (full info), summary (counts only), or raw (npm command output)detailed
includeDevDependenciesNoWhether to include dev dependencies in the check

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It notes the tool uses 'npm outdated' and requires npm, but does not disclose what happens if package.json is missing, if the directory is invalid, or any side effects (e.g., no modifications made). The behavioral impact is not fully detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three clear sentences: purpose, action, and prerequisite. Every sentence adds value without redundancy or fluff. It is well-structured for quick scanning by an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, no output schema), the description provides sufficient high-level context to understand and invoke the tool correctly. It covers the core functionality and requirements, though a bit more detail on return values or error scenarios would push it to 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema itself. The description adds context by linking the tool's operation to the underlying npm command, which helps understand the 'raw' output option. However, it does not elaborate on parameter usage beyond the schema, so a 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks for outdated npm packages using 'npm outdated' and analyzes dependencies for newer versions. It distinguishes itself from sibling tools like explore_project or list_allowed_directories by focusing specifically on npm dependency updates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear when-to-use context: for checking outdated npm packages in a project. It mentions a prerequisite (npm installed and accessible). However, it does not explicitly exclude alternatives when a user might want other dependency checks or provide guidance on when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_fileA

Delete a file or directory. Use with extreme caution as this operation cannot be undone. When deleting directories, all contents will be permanently removed. The recursive option must be explicitly set to true to delete non-empty directories. Only works within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file or directory to delete
forceNoSet to true to force deletion even if file is read-only. Use with caution.
recursiveNoSet to true to delete directories and their contents recursively. Required for non-empty directories.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states the operation cannot be undone, recursive requirement for directories, force option for read-only files. Does not detail return values or error conditions, but covers key behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each informative: purpose, caution, recursive condition, scope. No filler words, efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Does not describe return values (e.g., success confirmation) or error handling (path not found, permission denied). Given no output schema, this gap is notable for a destructive tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Parameter schema coverage is 100% with descriptions. The tool description adds context like 'Use with extreme caution' for the entire action, and clarifies 'recursive must be explicitly set to true' and 'force deletion even if read-only', supplementing the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a file or directory' with the verb 'Delete' and resource 'file or directory'. It distinguishes from siblings like rename_file and search_files by emphasizing irreversibility.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit warnings about caution and irreversibility, explains when recursive is needed, and mentions scope restrictions ('Only works within allowed directories'). Does not explicitly name alternatives but implies checking list_allowed_directories.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explore_projectA

Lists all files in a directory with their sizes. For JS/TS/TSX/JSX and Dart it parses imports/exports/functions and resolves local import edges (including Dart package: URIs and pubspec.yaml path dependencies) to summarize dependency entanglement. Reports Dart/Flutter packages found via pubspec.yaml (name, SDK constraints, deps, assets). Also extracts import/export-like declarations for common languages (Python/Java/Kotlin/Go/Rust/C#). Excludes common build directories like node_modules, .git, dist, .dart_tool, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoAlias for directory
directoryNoThe directory path to analyze
subDirectoryNoOptional subdirectory within the main directory to analyze
includeHiddenNoWhether to include hidden files and directories (starting with .)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits itself. It does so richly: it lists files with sizes, parses imports/exports, resolves dependency edges, reports Dart packages, and declares exclusions for build directories. It does not mention permissions, side effects, or edge cases like symlinks, but the read-only, analytical nature is clearly conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense paragraph. It front-loads the primary function and then adds details about supported languages and exclusions. While every sentence contributes unique content, the structure could be more scannable with bullet points, so it earns a 4 rather than 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (language parsing, dependency resolution, package reporting), the description covers the major behaviors and inputs. There is no output schema and no annotations, so the description partially compensates by describing what is reported, but it does not detail the exact output structure or error handling, leaving some gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema descriptions already cover all four parameters (100% coverage), so the description is not required to explain them. The description adds little beyond the schema: it mentions directories generically but does not elaborate on path, subDirectory, or includeHidden semantics. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear action and resource: 'Lists all files in a directory with their sizes.' It then enumerates additional analyses, making the tool's purpose concrete. It does not explicitly differentiate from siblings like search_files, but the core listing/analyzing behavior is clearly distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a thorough explanation of what the tool does, which implies when it should be used (e.g., to get an overview of a project and its dependencies). However, it does not explicitly state when to prefer this tool over alternatives or mention any exclusions/alternatives, so guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_allowed_directoriesA

Returns the list of directories that this MCP server is allowed to access. If empty, the server is running without an allow-list (unrestricted filesystem access).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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 transparently discloses the return value (list of allowed directories) and the interpretation of an empty result. The tool has no side effects or destructive behavior, and the description covers the essential behavioral trait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, very concise, and front-loaded with the primary action. Every sentence earns its place with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema, no annotations), the description is complete. It clearly states what is returned and the meaning of the empty list, covering all necessary information for an 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the input schema has 100% coverage (empty). The description adds no parameter information because none is needed. Per the rubric, zero parameters earns a baseline of 4, and the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Returns' and the resource 'list of directories that this MCP server is allowed to access.' It is specific and distinguishes from sibling tools (explore_project, search_files, etc.) which perform different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the meaning of an empty list (unrestricted access) but does not explicitly state when to use this tool versus alternatives. While the context makes it self-evident, there is no direct guidance on prerequisites or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_fileA

Rename or move a file or directory. Can move files between directories and rename them in a single operation. If the destination exists, the operation will fail. Works across different directories and can be used for simple renaming within the same directory. Both source and destination must be within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
newPathYesNew path for the file or directory
oldPathYesCurrent path of the file or directory to rename

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It discloses that the operation fails if destination exists, works across directories, and requires paths within allowed directories, providing good behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is 5 sentences, front-loads the main action, and every sentence contributes value. No redundant or extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, constraints, and behavior. Lacks mention of return values (no output schema) but sufficient for a file rename tool. Sibling tools provide context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. The description adds context such as the constraint 'Both source and destination must be within allowed directories' and failure condition, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool renames/moves files or directories, specifying it can move between directories and rename in one operation. It distinguishes from siblings like delete_file and search_files by focusing on renaming/moving.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for renaming or moving files/directories and mentions failure if destination exists and path constraints, but does not explicitly state when not to use or suggest alternative tools among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_filesA

Advanced file and code search tool with comprehensive filtering and matching capabilities. Searches files within allowed directories for a required literal or regex pattern, with file type filtering, size constraints, date filtering, and comment/string-aware match suppression (search always runs against the original, unmodified file content). Results can be formatted as text or JSON with configurable sorting and grouping. maxResults caps the total number of returned matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoAlias for searchPath
sortByNoHow to sort the resultsrelevance
maxSizeNoMaximum file size in bytes
minSizeNoMinimum file size in bytes
patternYesSearch pattern - literal text or regex depending on regexMode. Required.
maxDepthNoMaximum directory recursion depth. Unlimited if not specified
multilineNoWhether to enable multiline regex matching
regexModeNoWhether to treat pattern as a regular expression
extensionsNoArray of file extensions to include (e.g., ['.js', '.ts', '.py']). Include the dot prefix
maxResultsNoMaximum total number of matches to return (across all files)
searchPathNoDirectory path to search in. Must be within allowed directories. Defaults to first allowed directory if not specified
groupByFileNoWhether to group results by file
outputFormatNoOutput format for resultstext
wordBoundaryNoWhether to match whole words only
caseSensitiveNoWhether search should be case sensitive
includeBinaryNoWhether to search in binary files
modifiedAfterNoOnly include files modified after this date (ISO 8601 format)
snippetLengthNoLength of text snippet around matches
excludeStringsNoWhether to exclude string literals from search
followSymlinksNoWhether to follow symbolic links
modifiedBeforeNoOnly include files modified before this date (ISO 8601 format)
excludeCommentsNoWhether to exclude comments from search (language-aware)
excludePatternsNoArray of filename patterns to exclude (supports simple wildcards)
excludeGeneratedNoWhether to skip code-generated Dart part files (*.g.dart, *.freezed.dart, *.mocks.dart, *.gr.dart, *.i18n.dart)
excludeExtensionsNoArray of file extensions to exclude

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It reveals a nuanced behavior—searching against original unmodified content, plus comment/string-aware suppression, result caps, and formatting options—which goes well beyond a generic read-only statement. It could be more explicit about non-mutating guarantees or permission requirements, but for a search tool this is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with the core purpose first, then matching behavior, then output options. It is slightly promotional with 'Advanced' and 'comprehensive' but every sentence carries real information, and it remains compact given the tool's 25 parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and lack of annotations or output schema, the description covers the essential behavioral and output context well. It does not explain the JSON result shape or how to discover allowed directories, but for a search tool the high-level completeness is adequate for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds cross-parameter semantics by grouping capabilities (file type filtering, size constraints, date filtering), clarifying that maxResults caps total matches, and indicating that output can be formatted as text or JSON. This helps an agent understand how parameters interact beyond individual schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly identifies a specific verb ('searches'), a resource ('files within allowed directories'), and key capabilities (literal/regex, filtering, output formatting). It distinguishes from siblings like explore_project and rename_file because it is framed as a search, not a browse or mutate operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: use this when you need to find file/code matches. It states the search operates within allowed directories, but does not explicitly name alternatives or when not to use this tool, such as when exploring project structure (explore_project) or listing directories (list_allowed_directories).

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.

  1. 1 tool updatev0.1.9
    • Changedsearch_files1 field changed
      • addedInput schema / properties / excludeGenerated
        Added value: +{
        +  "default": false,
        +  "description": "Whether to skip code-generated Dart part files (*.g.dart, *.freezed.dart, *.mocks.dart, *.gr.dart, *.i18n.dart)",
        +  "type": "boolean"
        +}
  2. 1 tool updatev0.1.8
    • Changedsearch_files5 fields changed
      • changedInput schema / properties / maxResults / description
        Previous value: -"Maximum number of match results to return"New value: +"Maximum total number of matches to return (across all files)"
      • changedInput schema / properties / outputFormat / enum
        Previous value: -[
        -  "text",
        -  "json",
        -  "structured"
        -]New value: +[
        +  "text",
        +  "json"
        +]
      • removedInput schema / properties / pattern / default
        Removed value: -".*"
      • changedInput schema / properties / pattern / description
        Previous value: -"Search pattern - can be literal text or regex depending on regexMode. Defaults to searching for common file types if not specified"New value: +"Search pattern - literal text or regex depending on regexMode. Required."
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "pattern"
        +]
  3. 3 tool updatesv0.1.2
    • Changedcheck_outdated1 field changed
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "Alias for projectPath",
        +  "type": "string"
        +}
    • Changedexplore_project2 fields changed
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "Alias for directory",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "directory"
        -]New value: +[]
    • Changedsearch_files1 field changed
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "Alias for searchPath",
        +  "type": "string"
        +}
  4. 6 tool updates
    • First observedcheck_outdated
    • First observeddelete_file
    • First observedexplore_project
    • First observedlist_allowed_directories
    • First observedrename_file
    • First observedsearch_files

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation5/5

Each tool serves a distinct purpose: listing allowed dirs, renaming/moving, project exploration with dependency analysis, content search, npm outdated check, and deletion. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., list_allowed_directories, rename_file, explore_project). The naming is uniform and predictable.

Tool Count5/5

With 6 tools, the server is well-scoped for a project exploration and file management utility. The count is within the ideal range and each tool contributes to the core functionality.

Completeness3/5

The tool set covers listing, searching, renaming, deleting, and dependency checks, but lacks basic file operations like creating or reading file content. This is a notable gap for a file-related server, though the exploration focus mitigates it partially.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables comprehensive directory analysis and file management operations including project structure exploration, intelligent file search, full CRUD operations on files and directories, batch operations with rollback capabilities, and Git integration.
    13
    4
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides secure and efficient tools for codebase analysis, including file management, metadata retrieval, and dependency tree traversal. It allows LLMs to explore project structures and search for configuration files within a restricted root directory.
    3 npm
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides essential developer tools for workspace management, including advanced file searching, project structure analysis, and batch code editing. It enables users to efficiently navigate, analyze, and modify source code within their development environment.
    7
    36 npm
    MIT