
Disk Inventory MCP
io.github.LemmaLemming由 GitHub 账号 LemmaLemming 发布v0.1.0更新于 Oct 24, 2026
Read-only macOS disk analysis with bounded scans, size queries, and extension breakdowns.
概览
一个只读的 macOS 磁盘分析工具,让助手扫描已授权目录、找出大文件和大文件夹,并按文件扩展名统计占用。
- 可以做什么
- 列出启动时授权的目录,并启动、查询进度或取消有上限的后台元数据扫描,返回进度、总计和被跳过的路径。对扫描结果排序、筛选、分页或下钻到某个目录,并查看分页的文件扩展名分组。报告扫描不完整、逻辑字节与分配字节、被跳过的文件系统等统计说明。
- 适用场景
- 适合让助手帮忙查明特定 macOS 文件夹的空间占用、比较大文件或子文件夹、了解哪些文件类型占主导,同时不赋予它任何写入或删除能力。
- 运行要求
- 在 macOS 13 或更高版本上作为本地 stdio 进程运行,可通过 Homebrew 安装(需要 Xcode Command Line Tools 及 Swift 5.9 以上),也可使用发布版二进制或 MCP 包。启动时必须至少指定一个明确的绝对根目录;无需账号、API 密钥或网络访问。
安装
在 SourceWeft 中
- 打开 控制台中的 Disk Inventory MCP,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Disk Inventory MCP
A local, read-only disk analyzer for macOS, with a CLI and an MCP server in one native executable. Find large files and folders, inspect file-extension breakdowns, and see exactly where a scan was incomplete.
v0.1.0 is a read-only preview. It has no deletion, Trash, cleanup execution, or content-reading tools. Requires macOS 13 or later. No runtime dependencies beyond macOS frameworks.
Install
Recommended: install from the project's Homebrew tap (builds from source; requires Xcode Command Line Tools with Swift 5.9 or later):
GitHub Releases also provides a universal Intel/Apple Silicon .tar.gz, an MCP bundle (.mcpb), corresponding source, and SHA256SUMS. Downloadable binaries are ad-hoc signed, not Developer ID signed or Apple notarized. Homebrew builds from source. MCP bundle import depends on client support and may be subject to macOS security checks.
CLI
JSON output includes summary, top_children, and file_types. Byte counts are decimal strings to preserve 64-bit precision. Top children are immediate children of the root; directory totals include their descendants. CLI exit codes: 0 complete, 2 invalid invocation, 3 incomplete (JSON remains usable).
MCP setup
Configure any MCP client that launches local stdio servers. Replace the example paths with absolute paths on your computer; use command -v disk-inventory to find the installed executable. The example below uses the usual Apple Silicon Homebrew location:
Add more --root, PATH pairs to grant additional directories. The server refuses to launch without an explicit root and rejects scan paths outside those roots, including symlink escapes. An MCPB-compatible client can instead import the release bundle and prompt for one allowed directory.
Example prompts:
- “Show the largest folders in my Downloads directory and tell me whether the scan missed anything.”
- “Within that scan, find the largest
.zipfiles.” - “Break down the observed files by extension and explain the difference between logical and allocated bytes.”
The server implements newline-delimited JSON-RPC over stdio, initialization, ping, and tools. It negotiates protocol versions 2025-11-25, 2025-06-18, and 2025-03-26. Tool results include both structured JSON and serialized text. Scan jobs are application-level IDs; this release does not advertise the optional MCP Tasks capability. Poll status at sensible intervals (for example once per second).
Accounting and limits
- Default budget: 100,000 entries and 30 seconds. Maximum per scan: 500,000 entries and 300 seconds. Directory traversal depth is capped at 128. Time and cancellation checks occur between filesystem calls; an OS call blocked on a filesystem can delay either.
- One active scan and the two latest finished scans are retained in memory. Starting further scans evicts older finished results. Restarting the process discards all scans. There is no persistent database or scan comparison yet.
- Queries return at most 200 entries per page. The root has ID
0. IDs are meaningful only within their scan.parent_idreturns immediate children; omitting it considers all descendants. Avoid summing directory totals with their children. - Logical bytes count each observed regular-file or symlink path. Allocated bytes use
st_blocks * 512, with device/inode deduplication for hard links. Shared hard-link storage is assigned to the first encountered path, so per-folder attribution can vary with enumeration order. - Directory metadata is excluded. APFS clones and snapshot-retained blocks are not deduplicated; allocated bytes are not reclaimable bytes. Nothing here establishes that a file is safe to delete.
- Descendant symlinks are measured without following them. Other filesystems are skipped and reported. The root path is canonicalized at launch; traversal opens components without following symlinks. Disk Inventory X's special firmlink traversal is not copied into this implementation.
- Permission errors, vanished entries, limits, mount boundaries, and invalid UTF-8 names set
complete=false. Totals then describe only observed data. Up to 100 issue details are returned, with a full issue count. Entries can report zero observed bytes andcomplete=false; that does not mean empty. - Scans are live observations, not atomic filesystem snapshots. Contents and directories may change during traversal. The tool does not request elevated privileges or bypass macOS privacy protections.
- File types are inferred only from filename extensions, not content or application ownership. The scanner makes no file-content reads; browsing cloud-provider directories can still involve provider metadata activity.
Privacy
The executable makes no network requests, contains no telemetry, and writes no scan cache. It returns paths, sizes, and error details to the invoking CLI or MCP client. That client may send tool results to its model provider or retain logs according to its own settings. Treat filenames as untrusted data. Keep granted roots limited to what you intend to analyze.
Development
The integration tests use generated temporary fixtures: regular files, hard links, sparse files, symlink loops/escapes, unreadable directories, hostile filenames, pagination, cancellation, CLI exit codes, and MCP protocol errors. They do not scan personal directories. Optional interoperability tests use the official Python MCP SDK; see tests/sdk_interop.py.
License and provenance
GPL-3.0-or-later; see LICENSE. This is a new Swift implementation informed by the assessment of Tjark Derlien's Disk Inventory X and TreeMapView. It does not bundle their Objective-C source, artwork, TreeMapView, Omni frameworks, or CocoaTech components, and is not an official release of Disk Inventory X. The GPL license text is reproduced from the public Disk Inventory X checkout. Original upstream ownership and notices remain in their respective repositories.
Planned follow-ups: persistent scan comparisons, evidence-based cleanup previews, then separately reviewed cleanup execution. These are not features of v0.1.0.
来源:README.md,提交 eed7fe5
工具
0版本历史
1- v0.1.0最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分