🚀 🔍 項目資源管理器MCP服務器
項目資源管理器MCP服務器是一款強大的模型上下文協議(MCP)服務器,具備高級搜索功能,可用於探索、分析和管理項目文件。它能幫助開發者更高效地導航和分析項目,提供了全面的項目結構分析、代碼搜索、依賴管理和文件操作工具。
🚀 快速開始
將以下配置添加到您的MCP設置中:
{
"mcpServers": {
"project-explorer": {
"command": "npx",
"args": ["-y", "@team-jd/mcp-project-explorer", "/your/project/path"]
}
}
}

✨ 主要特性
- 提供全面的項目結構分析、代碼搜索、依賴管理和文件操作工具。
- 具備高級搜索功能,支持正則表達式、文件類型過濾等。
- 能檢測過時的npm包,並提供詳細的分析。
- 提供安全的文件刪除和重命名功能,內置保護機制。
📦 安裝指南
🚀 面向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 |
字符串 |
".*" |
搜索模式(文本或正則表達式) |
searchPath |
字符串 |
第一個允許的目錄 |
搜索目錄 |
extensions |
字符串數組 |
所有 |
僅包含這些文件類型 |
excludeExtensions |
字符串數組 |
[] |
排除這些文件類型 |
excludePatterns |
字符串數組 |
[] |
排除文件名模式 |
regexMode |
布爾值 |
false |
將模式視為正則表達式 |
caseSensitive |
布爾值 |
false |
區分大小寫搜索 |
wordBoundary |
布爾值 |
false |
僅匹配整個單詞 |
multiline |
布爾值 |
false |
多行正則表達式匹配 |
maxDepth |
數字 |
無限制 |
目錄遞歸深度 |
followSymlinks |
布爾值 |
false |
跟隨符號鏈接 |
includeBinary |
布爾值 |
false |
在二進制文件中搜索 |
minSize |
數字 |
無 |
最小文件大小(字節) |
maxSize |
數字 |
無 |
最大文件大小(字節) |
modifiedAfter |
字符串 |
無 |
文件修改日期之後 |
modifiedBefore |
字符串 |
無 |
文件修改日期之前 |
snippetLength |
數字 |
50 |
匹配周圍的文本片段長度 |
maxResults |
數字 |
100 |
最大結果數量 |
sortBy |
字符串 |
"relevance" |
排序方法:相關性、文件、行號、修改日期、大小 |
groupByFile |
布爾值 |
true |
按文件分組結果 |
excludeComments |
布爾值 |
false |
跳過註釋 |
excludeStrings |
布爾值 |
false |
跳過字符串字面量 |
outputFormat |
字符串 |
"text" |
輸出格式:文本、JSON、結構化 |
🎯 使用場景:
- 🔍 查找所有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過時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文件。
編碼愉快! 🎉
使用TypeScript和模型上下文協議精心打造 ❤️