Skip to main content
Glama
Project Explorer MCP Server

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.

Inputs: path, projectPath, outputFormat, includeDevDependencies.

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.

Inputs: path (required), force, recursive.

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.

Inputs: path, directory, subDirectory, includeHidden.

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).

Inputs: no named parameters.

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.

Inputs: newPath (required), oldPath (required).

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.

Inputs: pattern (required), path, sortBy, maxSize, +21 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    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

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      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
      MIT
    • A
      license
      Not graded
      quality
      D
      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.
      12 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
      61 npm
      MIT