支持忽略文件的文件系统MCP服务器
用于文件系统操作的Node.js MCP服务器,支持自定义忽略文件(.gitignore, .cursorignore, .cascadeignore, .claudeignore等等)。
保护敏感数据 通过控制AI代理可以使用gitignore样式模式访问哪些文件。
特性
- 忽略文件支持:使用筛选文件
.gitignore,.cursorignore,.cascadeignore,或任何自定义忽略文件 - 统一文件操作:读取/写入/编辑多个文件的单个端点
- 自动项目检测:检测Laravel、Python、Node.js和其他项目类型
- 令牌优化:用于大型项目的智能截断和紧凑目录树
- MCP资源:将工作区信息和项目详细信息作为MCP资源公开
- 动态访问控制:通过命令行参数或 MCP根协议
安装与使用
NPX快速入门
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@a13-team/filesystem-mcp-ignore",
"/path/to/your/project"
]
}
}
}使用忽略文件
要启用忽略文件筛选,请使用 --ignore-files 或 -i 标志:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@a13-team/filesystem-mcp-ignore",
"-i", ".gitignore,.cursorignore",
"/path/to/your/project"
]
}
}
}支持的忽略文件
.gitignore-标准Git忽略模式.cursorignore-光标AI编辑器忽略.cascadeignore-Windsurf/Cascade忽略.claudeignore-克劳德AI忽略.codeiumignore-Codeium忽略- 任何具有gitignore样式图案的自定义文件
忽略模式语法
模式如下 .gitignore 语法:
# Comments start with #
node_modules/ # Ignore directories
*.log # Glob patterns
!important.log # Negation (include)
/root-only.txt # Root-relative patterns
**/*.test.ts # Match in any directoryAPI
工具(8个统一端点)
| 工具 | 说明 | 注释 |
|---|---|---|
read_file | 读取单个或多个文件(自动检测文本/二进制) | 只读:true |
write_file | 写入单个或多个文件 | 破坏性:true |
edit_file | 使用find/replace | destructive编辑单个或多个文件:true |
move_file | 移动/重命名单个或多个文件 | 破坏性:false |
create_directory | 创建目录(递归) | 幂等:true |
list_directory | 按大小列出目录内容 | 只读:true |
directory_tree | 获取JSON树结构(紧凑模式) | 只读:true |
search_files | 按glob模式搜索文件 | 只读:true |
工具详细信息
read_file (通用阅读)
通过自动类型检测读取一个或多个文件。
{
paths: string | string[], // Single path or array
encoding?: 'text' | 'base64' | 'auto', // Default: 'auto'
head?: number, // First N lines (text only)
tail?: number, // Last N lines (text only)
maxTokens?: number // Approx token limit for response size
}- 文本文件:以文本形式返回内容(代码、配置、markdown等)
- SVG文件:以文本形式返回(可查看的XML代码)
- 二进制文件:仅返回带有消息的元数据以使用本机工具
- 大文件:自动截断,可选择使用头部/尾部
二进制文件返回的元数据形状如下:
{
"type": "binary_info",
"path": "/path/to/image.png",
"mimeType": "image/png",
"size": 12345,
"message": "Binary file. Use native tools or download to view."
}write_file (通用写入)
写入一个或多个文件。
{
files: { path: string, content: string } | Array
}- 自动创建父目录
- 覆盖现有文件(谨慎使用)
edit_file (通用编辑)
在一个或多个文件中进行文本替换。
{
edits: {
path: string,
changes: Array
} | Array }>,
dryRun?: boolean // Preview without applying
}- 返回显示更改的git样式差异
- 支持空格灵活匹配
- 使用
dryRun: true预览更改
move_file (通用移动)
移动或重命名文件/目录。
{
operations: { source: string, destination: string } | Array
}list_directory
列出具有可选详细格式的目录内容。
{
path: string,
showSizes?: boolean, // Default: false
sortBy?: 'name' | 'size' | 'modified',
format?: 'compact' | 'detailed' // Default: 'compact'
}format: 'detailed'或showSizes: true包括大小和mtime摘要。
directory_tree
获取JSON格式的递归目录结构。
{
path: string,
maxDepth?: number, // Default: 10
excludePatterns?: string[],
compact?: boolean, // Default: true - collapses large dirs
omitEmptyDirs?: boolean // Default: false
}紧凑模式自动:
- 折叠
node_modules/,vendor/,.git/等等。 - 将许多类似的文件分组:
*.svg (15 files)
MCP资源
服务器公开这些资源:
| URI | 描述 |
|---|---|
workspace://allowed-directories | 允许的目录列表 |
workspace://project-info | 检测到项目类型和堆栈 |
workspace://tree/{path} | 路径的目录树JSON |
项目检测
服务器自动检测项目类型,并通过以下方式公开信息 workspace://project-info 资源:
- Larlevel/PHP:检测Livewire、惯性、叶片、Vue、React、顺风、Vite
- python:Django、Flask、带数据库检测的FastAPI
- Node.js:Next.js、Nuxt、Express、NestJS、React、Vue、Angular、Svelte
- 其他:Ruby/Rails、Go、Rust、Java(Maven/Gradle)。网
目录访问控制
可以指定目录:
- 通过命令行参数 (如上所示)
- 通过MCP根协议 (建议用于动态更新)
MCP客户端支持 根 可以在运行时动态更新允许的目录。
令牌优化
- 响应截断:大文件截断为约50k个字符,并带有使用head/tail的消息
- 紧凑型树木:目录树崩溃
node_modules/,vendor/等等。 - 文件分组:许多类似的文件显示为
*.svg (15 files) - 二进制处理:二进制文件只返回元数据(没有base64膨胀)
许可证
MIT许可证。看 许可证.
贡献
看 贡献.md.
安全
看 安全.md.
