🚀 🔍 Project Explorer MCP Server
高度な検索機能を備え、プロジェクトファイルの探索、分析、管理を行う強力なModel Context Protocolサーバーです。
📦 npmで利用可能: @team-jd/mcp-project-explorer
🚀 クイックスタート
{
"mcpServers": {
"project-explorer": {
"command": "npx",
"args": ["-y", "@team-jd/mcp-project-explorer", "/your/project/path"]
}
}
}

✨ 主な機能
Project Explorer MCP Serverは、プロジェクト構造の分析、コードベースの検索、依存関係の管理、ファイル操作を行う包括的なツールを提供します。開発者がインテリジェントなプロジェクトのナビゲーションと分析機能を必要とする場合に最適です。
📦 インストール
🚀 MCPユーザー向け (推奨)
このサーバーをMCP設定構成に追加します。
{
"mcpServers": {
"project-explorer": {
"command": "npx",
"args": [
"-y",
"@team-jd/mcp-project-explorer",
"/path/to/your/project"
]
}
}
}
📁 複数ディレクトリへのアクセス:
{
"mcpServers": {
"project-explorer": {
"command": "npx",
"args": [
"-y",
"@team-jd/mcp-project-explorer",
"/path/to/project1",
"/path/to/project2",
"/path/to/project3"
]
}
}
}
🛠️ 開発者向け
git clone https://github.com/MausRundung362/mcp-explorer.git
cd mcp-explorer
npm install
npm run build
npm run inspector
💻 使用例
📊 プロジェクト分析ワークフロー
list_allowed_directories()
explore_project({
directory: "/your/project/path",
includeHidden: false
})
search_files({
pattern: "useState",
searchPath: "/your/project/path",
extensions: [".jsx", ".tsx"],
excludeComments: true
})
check_outdated({
projectPath: "/your/project/path",
outputFormat: "detailed"
})
🔍 高度な検索シナリオ
search_files({
pattern: "async\\s+function",
regexMode: true,
extensions: [".js", ".ts"]
})
search_files({
pattern: ".*",
minSize: 1000000,
modifiedAfter: "2024-01-01",
sortBy: "size"
})
search_files({
pattern: "TODO|FIXME|BUG",
regexMode: true,
excludePatterns: ["*test*", "*spec*"],
excludeStrings: true
})
📚 詳細ドキュメント
🛠️ 利用可能なコマンド
📂 explore_project
詳細なファイル情報とインポート/エクスポート分析を伴うプロジェクト構造の分析
explore_project({
directory: "/path/to/project"
})
explore_project({
directory: "/path/to/project",
subDirectory: "src",
includeHidden: false
})
✨ 特徴:
- 📊 人間が読みやすい形式でのファイルサイズ分析
- 🔍 JS/TSファイルのインポート/エクスポート文の検出
- 🚫 ビルドディレクトリ (
node_modules
, .git
, dist
など) を自動的に除外
- 📁 ディレクトリの再帰的な走査
- 🎯 サブディレクトリ分析のサポート
🔎 search_files
包括的なフィルタリング機能を備えた高度なファイルとコードの検索
search_files({
pattern: "your search term",
searchPath: "/path/to/search"
})
search_files({
pattern: "function.*async",
searchPath: "/path/to/search",
regexMode: true,
caseSensitive: false,
extensions: [".js", ".ts"],
excludeExtensions: [".min.js"],
excludeComments: true,
excludeStrings: true,
maxResults: 50,
sortBy: "relevance"
})
🎛️ 検索オプション:
パラメータ |
タイプ |
デフォルト |
説明 |
pattern |
string |
".*" |
検索パターン (テキストまたは正規表現) |
searchPath |
string |
最初の許可されたディレクトリ |
検索するディレクトリ |
extensions |
string[] |
すべて |
含めるファイルタイプ |
excludeExtensions |
string[] |
[] |
除外するファイルタイプ |
excludePatterns |
string[] |
[] |
除外するファイル名パターン |
regexMode |
boolean |
false |
パターンを正規表現として扱う |
caseSensitive |
boolean |
false |
大文字小文字を区別する |
wordBoundary |
boolean |
false |
単語境界のみを一致させる |
multiline |
boolean |
false |
複数行の正規表現マッチング |
maxDepth |
number |
無制限 |
ディレクトリの再帰深度 |
followSymlinks |
boolean |
false |
シンボリックリンクを追跡する |
includeBinary |
boolean |
false |
バイナリファイルを検索する |
minSize |
number |
なし |
最小ファイルサイズ (バイト) |
maxSize |
number |
なし |
最大ファイルサイズ (バイト) |
modifiedAfter |
string |
なし |
指定日付以降に変更されたファイル |
modifiedBefore |
string |
なし |
指定日付以前に変更されたファイル |
snippetLength |
number |
50 |
マッチング周辺のテキストスニペットの長さ |
maxResults |
number |
100 |
最大結果数 |
sortBy |
string |
"relevance" |
ソート方法: 関連性、ファイル、行番号、変更日、サイズ |
groupByFile |
boolean |
true |
結果をファイルでグループ化する |
excludeComments |
boolean |
false |
コメントをスキップする (言語認識) |
excludeStrings |
boolean |
false |
文字列リテラルをスキップする |
outputFormat |
string |
"text" |
出力形式: text, json, structured |
🎯 使用例:
- 🔍 すべてのTODOコメントを検索:
pattern: "TODO.*", excludeStrings: true
- 🐛 潜在的なバグを検索:
pattern: "console\\.log", regexMode: true
- 📦 インポート文を検索:
pattern: "import.*from", regexMode: true
- 🔧 最近の変更:
modifiedAfter: "2024-01-01", extensions: [".js", ".ts"]
📊 check_outdated
詳細な分析を伴う古いnpmパッケージのチェック
check_outdated({
projectPath: "/path/to/project"
})
check_outdated({
projectPath: "/path/to/project",
includeDevDependencies: true,
outputFormat: "detailed"
})
📋 出力形式:
detailed
- バージョンと更新コマンドを含む完全なパッケージ情報
summary
- タイプ別の古いパッケージの数
raw
- 生のnpm outdated JSON出力
🔧 要件:
- Node.jsとnpmがインストールされている必要があります。
- 指定されたディレクトリに有効な
package.json
が存在する必要があります。
🗑️ delete_file
保護メカニズムを備えた安全なファイルまたはディレクトリの削除
delete_file({
path: "/path/to/file.txt"
})
delete_file({
path: "/path/to/directory",
recursive: true,
force: false
})
⚠️ 安全機能:
- 🔒 許可されたディレクトリ内でのみ動作します。
- 📁 空でないディレクトリの場合は
recursive: true
が必要です。
- 🛡️ 誤削除からの保護
- ⚡ 読み取り専用ファイルのオプションの強制削除
✏️ rename_file
ファイルとディレクトリの名前変更または移動
rename_file({
oldPath: "/path/to/old-name.txt",
newPath: "/path/to/new-name.txt"
})
rename_file({
oldPath: "/path/to/file.txt",
newPath: "/different/path/file.txt"
})
✨ 特徴:
- 📁 ファイルとディレクトリの両方で動作します。
- 🔄 ディレクトリ間で移動できます。
- 🚫 宛先が既に存在する場合は失敗します。
- 🔒 両方のパスは許可されたディレクトリ内にある必要があります。
📋 list_allowed_directories
サーバーがアクセスできるディレクトリを表示
list_allowed_directories()
🔧 使用例:
- 🔍 操作前にアクセス権限を確認する
- 🛡️ セキュリティ検証
- 📂 ディレクトリの探索
🔧 技術詳細
📁 プロジェクト構造
src/
├── index.ts # メインサーバーのエントリーポイント
├── explore-project.ts # プロジェクト分析ツール
├── search.ts # 高度な検索機能
├── check-outdated.ts # NPM依存関係チェッカー
├── delete-file.ts # ファイル削除ツール
├── rename-file.ts # ファイルの名前変更/移動ツール
└── list-allowed.ts # ディレクトリのアクセス許可チェッカー
🏗️ ビルドコマンド
npm run build
npm run watch
npm run inspector
🛡️ セキュリティとアクセス許可
サーバーは 許可されたディレクトリ内でのみ動作 し、以下を提供します。
- 🔒 サンドボックス化されたアクセス - 許可されたパス外のファイルにアクセスできません。
- 🛡️ 安全な操作 - 危険な操作からの組み込み保護
- 📂 パスの検証 - すべてのパスは正規化され、検証されます。
- ⚠️ エラーハンドリング - アクセス許可の問題に対する明確なエラーメッセージ
🤝 コントリビュート方法
- 🍴 リポジトリをフォークします。
- 🌟 機能ブランチを作成します。
- 💻 変更を加えます。
- ✅ 十分にテストします。
- 🚀 プルリクエストを送信します。
📄 ライセンス
詳細については LICENSE ファイルを参照してください。
Happy coding! 🎉
TypeScriptとModel Context Protocolを使用して❤️ で作成されました