Filescopemcp(模型上下文协议)服务器
分析您的代碼庫,根據依賴關係識別重要文件。生成圖表和每個文件的重要性分數,幫助 AI 助手理解代碼庫。自動解析流行的編程語言,如 Python、C、C++、Rust、Zig、Lua。
概覽
什麼是 FileScopeMCP?
FileScopeMCP 是一個強大的工具,旨在通過識別基於依賴關係的重要文件來分析代碼庫。它生成有洞察力的圖表和每個文件的重要性分數,幫助 AI 助手更有效地理解代碼庫。該工具支持自動解析流行的編程語言,如 Python、C、C++、Rust、Zig 和 Lua,使其在各種開發環境中都具有多功能性。
FileScopeMCP 的特點
- 依賴分析:自動分析代碼庫,以識別基於相互依賴的關鍵文件。
- 視覺圖表:生成圖表,直觀地表示文件之間的關係,增強理解。
- 重要性評分:為文件分配重要性分數,幫助開發人員優先關注關鍵組件。
- 多語言支持:兼容多種編程語言,包括 Python、C、C++、Rust、Zig 和 Lua。
- 用戶友好界面:設計考慮易用性,允許開發人員快速導航並利用其功能。
如何使用 FileScopeMCP
- 安裝:首先從其存儲庫下載並安裝 FileScopeMCP。
- 代碼庫輸入:將您的代碼庫加載到工具中。FileScopeMCP 將自動解析文件。
- 運行分析:啟動分析過程,讓工具評估依賴關係並生成結果。
- 審查結果:檢查生成的圖表和重要性分數,以了解代碼庫的結構和關鍵組件。
- 整合見解:利用獲得的見解來優化您的開發過程,專注於最重要的文件和關係。
常見問題解答
FileScopeMCP 支持哪些編程語言?
FileScopeMCP 支持多種編程語言,包括 Python、C、C++、Rust、Zig 和 Lua。
FileScopeMCP 如何確定文件的重要性?
該工具分析文件之間的依賴關係,並根據它們在代碼庫中的連接性和相關性分配分數。
我可以在大型項目中使用 FileScopeMCP 嗎?
是的,FileScopeMCP 設計用於高效處理大型代碼庫,無論項目大小,都能提供有價值的見解。
FileScopeMCP 是開源的嗎?
是的,FileScopeMCP 作為一個開源項目提供,允許開發人員根據自己的需求進行貢獻和自定義。
我如何能為 FileScopeMCP 做出貢獻?
您可以通過分叉存儲庫、進行改進並向主項目提交拉取請求來貢獻。
詳細
FileScopeMCP (Model Context Protocol) Server
✨ Instantly understand and visualize your codebase structure & dependencies! ✨
<!-- Add Badges Here (e.g., License, Version, Build Status) --> <!-- Add other badges -->A TypeScript-based tool for ranking files in your codebase by importance, tracking dependencies, and providing summaries to help understand code structure.
Overview
This MCP server analyzes your codebase to identify the most important files based on dependency relationships. It generates importance scores (0-10) for each file, tracks bidirectional dependencies, and allows you to add custom summaries for files. All this information is made available to AI tools through Cursor's Model Context Protocol.
Features
🚀 Supercharge your Code Understanding! FileScopeMCP provides insights directly to your AI assistant:
-
🎯 File Importance Analysis
- Rank files on a 0-10 scale based on their role in the codebase.
- Calculate importance using incoming/outgoing dependencies.
- Instantly pinpoint the most critical files in your project.
- Smart calculation considers file type, location, and name significance.
-
🔗 Dependency Tracking
- Map bidirectional dependency relationships between files.
- Identify which files import a given file (dependents).
- See which files are imported by a given file (dependencies).
- Distinguish between local and package dependencies.
- Multi-language support: Python, JavaScript, TypeScript, C/C++, Rust, Lua, Zig, C#, Java.
-
📊 Visualization
- Generate Mermaid diagrams to visualize file relationships.
- Color-coded visualization based on importance scores.
- Support for dependency graphs, directory trees, or hybrid views.
- HTML output with embedded rendering including theme toggle and responsive design.
- Customize diagram depth, filter by importance, and adjust layout options.
-
📝 File Summaries
- Add human or AI-generated summaries to any file.
- Retrieve stored summaries to quickly grasp file purpose.
- Summaries persist across server restarts.
-
📚 Multiple Project Support
- Create and manage multiple file trees for different project areas.
- Configure separate trees with distinct base directories.
- Switch between different file trees effortlessly.
- Cached trees for faster subsequent operations.
-
💾 Persistent Storage
- All data automatically saved to disk in JSON format.
- Load existing file trees without rescanning the filesystem.
- Track when file trees were last updated.
Installation
-
Clone this repository
-
Build the project:
The build script will install all node dependencies and generate mcp.json for you.
Windows:
build.bat
Copy the generated mcp.json configuration to your project's
.cursor
directory:{ "mcpServers": { "FileScopeMCP": { "command": "node", "args": ["<build script sets this>/mcp-server.js","--base-dir=C:/Users/admica/my/project/base"], "transport": "stdio", "disabled": false, "alwaysAllow": [] } } }
Linux: (Cursor in Windows, but your project is in Linux WSL, then put the MCP in Linux and build)
build.sh
{ "mcpServers": { "FileScopeMCP": { "command": "wsl", "args": ["-d", "Ubuntu-24.04", "/home/admica/FileScopeMCP/run.sh"], "transport": "stdio", "disabled": false, "alwaysAllow": [] } } }
-
Update the arg path --base-dir to your project's base path.
How It Works
Dependency Detection
The tool scans source code for import statements and other language-specific patterns:
- Python:
import
andfrom ... import
statements - JavaScript/TypeScript:
import
statements andrequire()
calls - C/C++:
#include
directives - Rust:
use
andmod
statements - Lua:
require
statements - Zig:
@import
directives - C#:
using
directives - Java:
import
statements
Importance Calculation
Files are assigned importance scores (0-10) based on a weighted formula that considers:
- Number of files that import this file (dependents)
- Number of files this file imports (dependencies)
- File type and extension (with TypeScript/JavaScript files getting higher base scores)
- Location in the project structure (files in
src/
are weighted higher) - File naming (files like 'index', 'main', 'server', etc. get additional points)
A file that is central to the codebase (imported by many files) will have a higher score.
Diagram Generation
The system uses a three-phase approach to generate valid Mermaid syntax:
- Collection Phase: Register all nodes and relationships
- Node Definition Phase: Generate definitions for all nodes before any references
- Edge Generation Phase: Create edges between defined nodes
This ensures all diagrams have valid syntax and render correctly. HTML output includes:
- Responsive design that works on any device
- Light/dark theme toggle with system preference detection
- Client-side Mermaid rendering for optimal performance
- Timestamp of generation
Path Normalization
The system handles various path formats to ensure consistent file identification:
- Windows and Unix path formats
- Absolute and relative paths
- URL-encoded paths
- Cross-platform compatibility
File Storage
All file tree data is stored in JSON files with the following structure:
- Configuration metadata (filename, base directory, last updated timestamp)
- Complete file tree with dependencies, dependents, importance scores, and summaries
Technical Details
- TypeScript/Node.js: Built with TypeScript for type safety and modern JavaScript features
- Model Context Protocol: Implements the MCP specification for integration with Cursor
- Mermaid.js: Uses Mermaid syntax for diagram generation
- JSON Storage: Uses simple JSON files for persistence
- Path Normalization: Cross-platform path handling to support Windows and Unix
- Caching: Implements caching for faster repeated operations
Available Tools
The MCP server exposes the following tools:
File Tree Management
- list_saved_trees: List all saved file trees
- create_file_tree: Create a new file tree configuration for a specific directory
- select_file_tree: Select an existing file tree to work with
- delete_file_tree: Delete a file tree configuration
File Analysis
- list_files: List all files in the project with their importance rankings
- get_file_importance: Get detailed information about a specific file, including dependencies and dependents
- find_important_files: Find the most important files in the project based on configurable criteria
- read_file_content: Read the content of a specific file
- recalculate_importance: Recalculate importance values for all files based on dependencies
File Summaries
- get_file_summary: Get the stored summary of a specific file
- set_file_summary: Set or update the summary of a specific file
File Watching
- toggle_file_watching: Toggle file watching on/off
- get_file_watching_status: Get the current status of file watching
- update_file_watching_config: Update file watching configuration
Diagram Generation
- generate_diagram: Create Mermaid diagrams with customizable options
- Output formats: Mermaid text (
.mmd
) or HTML with embedded rendering - Diagram styles: default, dependency, directory, or hybrid views
- Filter options: max depth, minimum importance threshold
- Layout options: direction (TB, BT, LR, RL), node spacing, rank spacing
- Output formats: Mermaid text (
Usage Examples
The easiest way to get started is to enable this mcp in cursor and tell cursor to figure it out and use it. As soon as the mcp starts, it builds an initial json tree. Tell an LLM to make summaries of all your important files and use the mcp's set_file_summary to add them.
Analyzing a Project
-
Create a file tree for your project:
create_file_tree(filename: "my-project.json", baseDirectory: "/path/to/project")
-
Find the most important files:
find_important_files(limit: 5, minImportance: 5)
-
Get detailed information about a specific file:
get_file_importance(filepath: "/path/to/project/src/main.ts")
Working with Summaries
-
Read a file's content to understand it:
read_file_content(filepath: "/path/to/project/src/main.ts")
-
Add a summary to the file:
set_file_summary(filepath: "/path/to/project/src/main.ts", summary: "Main entry point that initializes the application, sets up routing, and starts the server.")
-
Retrieve the summary later:
get_file_summary(filepath: "/path/to/project/src/main.ts")
Generating Diagrams
-
Create a basic project structure diagram:
generate_diagram(style: "directory", maxDepth: 3, outputPath: "diagrams/project-structure", outputFormat: "mmd")
-
Generate an HTML diagram with dependency relationships:
generate_diagram(style: "hybrid", maxDepth: 2, minImportance: 5, showDependencies: true, outputPath: "diagrams/important-files", outputFormat: "html")
-
Customize the diagram layout:
generate_diagram(style: "dependency", layout: { direction: "LR", nodeSpacing: 50, rankSpacing: 70 }, outputPath: "diagrams/dependencies", outputFormat: "html")
Using File Watching
-
Enable file watching for your project:
toggle_file_watching()
-
Check the current file watching status:
get_file_watching_status()
-
Update file watching configuration:
update_file_watching_config(config: { debounceMs: 500, autoRebuildTree: true, watchForNewFiles: true, watchForDeleted: true, watchForChanged: true })
Testing
A testing framework (Vitest) is now included. Initial unit tests cover path normalization, glob-to-regexp conversion, and platform-specific path handling.
To run tests and check coverage:
npm test
npm run coverage
Recent Improvements
- Improved exclusions logic, ignoring hidden virtual environments (e.g.,
.venv
) and other common unwanted directories. This helps keep dependency graphs clean and relevant. - Testing framework
- Added more programming languages
Future Improvements
- Add more sophisticated importance calculation algorithms
- Enhance diagram customization options
- Support for exporting diagrams to additional formats
License
This project is licensed under the GNU General Public License v3 (GPL-3.0). See the LICENSE file for the full license text.
伺服器配置
{
"mcpServers": {
"file-scope-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/metorial/mcp-container--admica--filescopemcp--file-scope-mcp",
"npm run start --base-dir base-dir"
],
"env": {}
}
}
}