large-file-mcp 是一个基于 Model Context Protocol (MCP) 的服务器,面向大文件的智能处理场景,提供分块读取、搜索、导航与流式读取能力。它由 willianpinho 开发,项目地址为 https://github.com/willianpinho/large-file-mcp,可通过 npx @willianpinho/large-file-mcp 安装使用。
主要能力 智能分块:根据文件类型自动确定合适的分块大小,例如文本文件(.txt)每块 500 行、日志文件(.log)每块 500 行、代码文件(.ts、.js、.py、.java、.cpp、.go、.rs 等)每块 300 行、CSV 文件每块 1000 行、JSON 文件每块 100 行、XML 文件每块 200 行、Markdown 文件每块 500 行、配置文件(.yml、.yaml、.sh、.bash)每块 300 行。 智能导航:可跳转到指定行,并返回其前后上下文。 搜索:支持正则表达式搜索,可显示匹配结果前后的上下文行数。 文件分析:提供文件元数据与统计信息,包括行统计、字符统计和词数。 内存高效:采用流式架构,逐行读取文件,不将整个文件载入内存,可处理任意大小的文件。 性能优化:内置 LRU 缓存,可配置缓存大小(默认 100MB)与过期时间(默认 5 分钟),加速对同一文件块或结构信息的重复访问。 类型安全:使用 TypeScript 编写,严格类型。 跨平台:支持 Windows、macOS 和 Linux。
可用工具 read_large_file_chunk:读取大文件的指定分块,支持智能分块。参数包括 filePath(必填,文件绝对路径)、chunkIndex(可选,从 0 开始的分块索引,默认 0)、linesPerChunk(可选,每块行数,未提供则自动检测)、includeLineNumbers(可选,是否包含行号,默认 false)。 search_in_large_file:在大文件中搜索模式并带上下文。参数包括 pattern(必填,搜索模式)、caseSensitive(可选,是否区分大小写,默认 false)、regex(可选,是否使用正则,默认 false)、maxResults(可选,最大结果数,默认 100)、contextBefore(可选,匹配前上下文行数,默认 2)、contextAfter(可选,匹配后上下文行数,默认 2)。 get_file_structure:分析文件结构并获取完整元数据,返回文件元数据、行统计、推荐分块大小和示例行。 navigate_to_line:跳转到指定行并显示周围上下文。参数包括 filePath(必填)、lineNumber(必填,从 1 开始的行号)、contextLines(可选,前后上下文行数,默认 5)。 get_file_summary:获取文件的完整统计摘要,返回文件元数据、行统计、字符统计和词数。 stream_large_file:以分块方式流式读取文件,用于处理超大文件。参数包括 filePath(必填)、chunkSize(可选,字节单位,默认 64KB)、startOffset(可选,起始字节偏移,默认 0)、maxChunks(可选,最大返回块数,默认 10)。
使用方式 可通过 npx 直接使用,也可在 Claude Code CLI 中添加该 MCP 服务器进行验证或移除;服务器作用域可选 local(仅当前项目目录)、user(全局所有项目)、project(在 .mcp.json 中定义,供团队共享)。 在 Claude Desktop 中,需要编辑 claude_desktop_config.json:macOS 路径为 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 路径为 %APPDATA%\Claude\claude_desktop_config.json,编辑后重启 Claude Desktop。 配置完成后,可用自然语言与大文件交互。此外还兼容 Cursor 和 Gemini CLI,已发布到 npm 和 Glama.ai 注册表,并被收录于社区 awesome-MCP 目录。
适用场景 日志分析:处理多 GB 日志文件,进行搜索与导航。 数据处理:以可管理的分块读取大型 CSV/JSON 文件。 代码审查:高效浏览大型代码库。 系统监控:分析系统日志与调试输出。 文档分析:处理大型文本文档。
性能与限制 项目提供基准测试脚本(pnpm run benchmark),用于在可重复的“热块”工作负载下测量缓存命中率;在该工作负载下目前测得 95%(100 次访问中 95 次命中缓存)。缓存命中率取决于访问模式,没有统一数值。未缓存 readChunk() 的延迟数据来自 scripts/benchmark.mjs,在 Apple M1 Pro 笔记本上以生成的测试文件测得,建议在自有硬件上重新运行脚本获取自己的数据。100MB 至 1GB 以及大于 1GB 的层级未在此基准中测试,但由于流式架构逐行读取、从不加载整个文件,时间大致随大小线性增长,streamFile() 使用 AsyncGenerator,内存占用不随文件大小增长。 常见问题处理:文件不可访问时需确保路径为绝对路径且具有读权限;如遇内存问题可减小 CHUNK_SIZE 环境变量、用 CACHE_ENABLED=false 禁用缓存,或对超大文件使用 stream_large_file;搜索性能慢可减小 maxResults、用 startLine 和 endLine 限制搜索范围、确保缓存已启用;Claude Code CLI 提示找不到 MCP 服务器时,可检查是否已安装,未列出则重新安装并检查服务器健康状态。
其他信息 项目欢迎贡献,可提交 issue 或 pull request,开发流程为先 fork 仓库、创建功能分支、修改代码、确保构建与 lint 成功,然后提交 pull request;详细指南见 CONTRIBUTING.md。项目基于 Model Context Protocol SDK 构建。关于定价与收费信息,资料暂未提供。