FileScopeMCP 文件结构分析器
一种TypeScript工具,它通过重要性对代码库中的文件进行排名,跟踪依赖关系,并提供文件摘要,以帮助通过Cursor的模型上下文协议理解代码结构。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"FileScopeMCP": {
"alwaysAllow": [],
"args": [
"-d",
"Ubuntu-24.04",
"/home/admica/FileScopeMCP/run.sh"
],
"command": "wsl",
"disabled": false,
"transport": "stdio"
}
}
}
可用工具 (14 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
list_saved_trees
List all saved file trees
该工具无需必填参数,直接调用即可
delete_file_tree 1 个参数 需填 1 项
Delete a file tree configuration
必填参数:filename
create_file_tree 2 个参数 需填 2 项
Create or load a file tree configuration
必填参数:filename、baseDirectory
select_file_tree 1 个参数 需填 1 项
Select an existing file tree to work with
必填参数:filename
list_files
List all files in the project with their importance rankings
该工具无需必填参数,直接调用即可
get_file_importance 1 个参数 需填 1 项
Get the importance ranking of a specific file
必填参数:filepath
find_important_files 2 个参数
Find the most important files in the project
该工具无需必填参数,直接调用即可
get_file_summary 1 个参数 需填 1 项
Get the summary of a specific file
必填参数:filepath
set_file_summary 2 个参数 需填 2 项
Set the summary of a specific file
必填参数:filepath、summary
read_file_content 1 个参数 需填 1 项
Read the content of a specific file
必填参数:filepath
set_file_importance 2 个参数 需填 2 项
Manually set the importance ranking of a specific file
必填参数:filepath、importance
recalculate_importance
Recalculate importance values for all files based on dependencies
该工具无需必填参数,直接调用即可
debug_list_all_files
List all file paths in the current file tree
该工具无需必填参数,直接调用即可
generate_diagram 7 个参数 需填 1 项
Generate a Mermaid diagram for the current file tree
必填参数:style
服务介绍
FileScopeMCP (模型上下文协议) 服务器
✨ 立即了解并可视化您的代码库结构和依赖关系!✨
这是一个基于 TypeScript 的工具,用于根据重要性对代码库中的文件进行排名,跟踪依赖关系,并提供摘要以帮助理解代码结构。
概览
此 MCP 服务器分析您的代码库,根据依赖关系识别最重要的文件。它为每个文件生成重要性评分(0-10),跟踪双向依赖关系,并允许您为文件添加自定义摘要。所有这些信息通过 Cursor 的 Model Context Protocol 提供给 AI 工具。
特性
🚀 增强您的代码理解能力! FileScopeMCP 直接向您的 AI 助手提供见解:
-
🎯 文件重要性分析
- 根据文件在代码库中的作用,在 0-10 的范围内对文件进行排名。
- 使用传入/传出依赖关系计算重要性。
- 即时确定项目中最关键的文件。
- 智能计算考虑文件类型、位置和名称的重要性。
-
🔗 依赖关系跟踪
- 映射文件之间的双向依赖关系。
- 识别哪些文件导入了给定文件(依赖者)。
- 查看给定文件导入了哪些文件(依赖项)。
- 区分本地依赖和包依赖。
- 多语言支持:Python、JavaScript、TypeScript、C/C++、Rust、Lua、Zig。
-
📊 可视化
- 生成 Mermaid 图表以可视化文件关系。
- 基于重要性评分的颜色编码可视化。
- 支持依赖图、目录树或混合视图。
- HTML 输出,嵌入渲染包括主题切换和响应式设计。
- 自定义图表深度、按重要性过滤和调整布局选项。
-
📝 文件摘要
- 为任何文件添加人工或 AI 生成的摘要。
- 检索存储的摘要以快速了解文件目的。
- 摘要跨服务器重启持久保存。
-
📚 多项目支持
- 为不同的项目区域创建和管理多个文件树。
- 配置具有不同基础目录的独立文件树。
- 轻松切换不同的文件树。
- 缓存文件树以加快后续操作。
-
💾 持久存储
- 所有数据自动以 JSON 格式保存到磁盘。
- 无需重新扫描文件系统即可加载现有的文件树。
- 跟踪文件树上次更新的时间。
安装
# 安装步骤将在此处继续
-
克隆此仓库
-
构建项目:
构建脚本将为您安装所有 node 依赖并生成 mcp.json。
Windows:
build.bat将生成的 mcp.json 配置复制到您的项目的
.cursor目录中:{ "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 在 Windows 中,但您的项目在 Linux WSL 中,则将 MCP 放在 Linux 中并进行构建)
build.sh{ "mcpServers": { "FileScopeMCP": { "command": "wsl", "args": ["-d", "Ubuntu-24.04", "/home/admica/FileScopeMCP/run.sh"], "transport": "stdio", "disabled": false, "alwaysAllow": [] } } } -
更新 arg 路径 --base-dir 为您的项目的基本路径。
工作原理
依赖检测
工具扫描源代码中的导入语句和其他特定于语言的模式:
- Python:
import和from ... import语句 - JavaScript/TypeScript:
import语句和require()调用 - C/C++:
#include指令 - Rust:
use和mod语句 - Lua:
require语句 - Zig:
@import指令
重要性计算
文件根据加权公式分配重要性分数(0-10),该公式考虑了以下因素:
- 导入此文件的文件数量(依赖项)
- 此文件导入的文件数量(依赖关系)
- 文件类型和扩展名(TypeScript/JavaScript 文件的基础分数更高)
- 项目结构中的位置(
src/中的文件权重更高) - 文件命名(如 'index', 'main', 'server' 等文件会获得额外分数)
作为代码库核心的文件(被许多文件导入)将具有更高的分数。
图表生成
系统使用三阶段方法生成有效的 Mermaid 语法:
- 收集阶段:注册所有节点和关系
- 节点定义阶段:在任何引用之前生成所有节点的定义
- 边缘生成阶段:在已定义的节点之间创建边缘
这确保了所有图表都具有有效语法并正确渲染。HTML 输出包括:
- 响应式设计,适用于任何设备
- 根据系统偏好检测的明暗主题切换
- 客户端 Mermaid 渲染以实现最佳性能
- 生成时间戳
路径规范化
系统处理各种路径格式以确保一致的文件识别:
- Windows 和 Unix 路径格式
- 绝对路径和相对路径
- URL 编码路径
- 跨平台兼容性
文件存储
所有文件树数据存储在具有以下结构的 JSON 文件中:
- 配置元数据(文件名、基本目录、最后更新时间戳)
- 完整的文件树,包括依赖关系、被依赖关系、重要性评分和摘要
技术细节
- TypeScript/Node.js: 使用 TypeScript 构建,以实现类型安全和现代 JavaScript 功能
- 模型上下文协议 (MCP): 实现 MCP 规范,以便与 Cursor 集成
- Mermaid.js: 使用 Mermaid 语法生成图表
- JSON 存储: 使用简单的 JSON 文件进行持久化存储
- 路径规范化: 跨平台路径处理,支持 Windows 和 Unix
- 缓存: 实现缓存以加快重复操作的速度
可用工具
MCP 服务器提供了以下工具:
文件树管理
- list_saved_trees: 列出所有已保存的文件树
- create_file_tree: 为特定目录创建新的文件树配置
- select_file_tree: 选择一个现有的文件树进行工作
- delete_file_tree: 删除文件树配置
文件分析
- list_files: 列出项目中的所有文件及其重要性排名
- get_file_importance: 获取有关特定文件的详细信息,包括依赖关系和被依赖关系
- find_important_files: 根据可配置的标准找到项目中最重要的文件
- read_file_content: 读取特定文件的内容
- recalculate_importance: 根据依赖关系重新计算所有文件的重要性值
文件摘要
- get_file_summary: 获取特定文件的存储摘要
- set_file_summary: 设置或更新特定文件的摘要
文件监视
- toggle_file_watching: 开启或关闭文件监视
- get_file_watching_status: 获取文件监视的当前状态
- update_file_watching_config: 更新文件监视配置
图表生成
- generate_diagram: 创建具有可自定义选项的 Mermaid 图表
- 输出格式:Mermaid 文本(
.mmd)或带有嵌入渲染的 HTML - 图表样式:默认、依赖关系、目录视图或混合视图
- 过滤选项:最大深度、最小重要性阈值
- 布局选项:方向(TB, BT, LR, RL)、节点间距、等级间距
- 输出格式:Mermaid 文本(
使用示例
开始使用的最简单方法是在 cursor 中启用此 mcp,并告诉 cursor 自动使用它。一旦 mcp 启动,它会构建一个初始的 json 树。让 LLM 为您所有的重要文件生成摘要,并使用 mcp 的 set_file_summary 将它们添加进去。
分析项目
-
为您的项目创建一个文件树:
create_file_tree(filename: "my-project.json", baseDirectory: "/path/to/project") -
找到最重要的文件:
find_important_files(limit: 5, minImportance: 5) -
获取有关特定文件的详细信息:
get_file_importance(filepath: "/path/to/project/src/main.ts")
处理摘要
-
读取文件内容以理解它:
read_file_content(filepath: "/path/to/project/src/main.ts") -
为文件添加摘要:
set_file_summary(filepath: "/path/to/project/src/main.ts", summary: "应用程序的主要入口点,初始化应用、设置路由并启动服务器。") -
后续检索该摘要:
get_file_summary(filepath: "/path/to/project/src/main.ts")
生成图表
-
创建基本的项目结构图:
generate_diagram(style: "directory", maxDepth: 3, outputPath: "diagrams/project-structure", outputFormat: "mmd") -
生成带有依赖关系的 HTML 图表:
generate_diagram(style: "hybrid", maxDepth: 2, minImportance: 5, showDependencies: true, outputPath: "diagrams/important-files", outputFormat: "html") -
自定义图表布局:
generate_diagram(style: "dependency", layout: { direction: "LR", nodeSpacing: 50, rankSpacing: 70 }, outputPath: "diagrams/dependencies", outputFormat: "html")
使用文件监控
-
为您的项目启用文件监控:
toggle_file_watching() -
检查当前的文件监控状态:
get_file_watching_status() -
更新文件监控配置:
update_file_watching_config(config: { debounceMs: 500, autoRebuildTree: true, watchForNewFiles: true, watchForDeleted: true, watchForChanged: true })
未来改进
- 增加对更多编程语言的支持
- 添加更复杂的权重计算算法
- 增强图表自定义选项
- 支持导出图表到更多格式
许可证
本项目根据 GNU General Public License v3 (GPL-3.0) 许可发布。请参阅 LICENSE 文件获取完整的许可证文本。