使用模型上下文协议(MCP)实现文件系统操作的 Node.js 服务器。
该服务器采用灵活的目录访问控制系统。可以通过命令行参数或动态地通过 Roots 来指定目录。
启动服务器时指定允许的目录:
mcp-server-filesystem /path/to/dir1 /path/to/dir2
支持 Roots 的 MCP 客户端可以动态更新允许的目录。
客户端通知服务器的 Roots 将完全替换任何服务器侧的允许目录。
重要:如果服务器启动时没有提供命令行参数且客户端不支持 Roots 协议(或提供了空 Roots),服务器将在初始化期间抛出错误。
这是推荐的方法,因为它允许在运行时通过 roots/list_changed 通知更新目录,而无需重启服务器,从而提供更灵活和现代的集成体验。
服务器的目录访问控制遵循以下流程:
服务器启动
客户端连接与初始化
initialize 请求capabilities.roots)Roots 协议处理(如果客户端支持 Roots)
roots/list 向客户端请求 Rootsnotifications/roots/list_changed备用行为(如果客户端不支持 Roots)
访问控制
list_allowed_directories 工具查看当前目录注意:服务器仅允许在通过 args 或 Roots 指定的目录内进行操作。
read_text_file
path (字符串)head (数字,可选):前 N 行tail (数字,可选):后 N 行head 和 tailread_media_file
path (字符串)read_multiple_files
paths (字符串数组)write_file
path (字符串):文件位置content (字符串):文件内容edit_file
path (字符串):要编辑的文件edits (数组):编辑操作列表
oldText (字符串):要搜索的文本(可以是子串)newText (字符串):替换文本dryRun (布尔值):预览更改而不应用(默认:false)create_directory
path (字符串)list_directory
path (字符串)list_directory_with_sizes
path (字符串):要列出的目录路径sortBy (字符串,可选):按 "name" 或 "size" 排序条目(默认:"name")move_file
source (字符串)destination (字符串)search_files
path (字符串):起始目录pattern (字符串):搜索模式excludePatterns (字符串数组):排除任何模式。directory_tree
path (字符串):起始目录excludePatterns (字符串数组):排除任何模式。支持 glob 格式。name (字符串):文件/目录名称type ('file'|'directory'):条目类型children (数组):仅目录中存在
get_file_info
path (字符串)list_allowed_directories
将此添加到您的 claude_desktop_config.json 中:
注意:您可以通过将其挂载到 /projects 来向服务器提供隔离的目录。添加 ro 标志会使该目录对服务器只读。
注意:所有目录必须默认挂载到 /projects。
{
"mcpServers": {
"filesystem": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
"--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
"--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
"mcp/filesystem",
"/projects"
]
}
}
}
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/path/to/other/allowed/dir"
]
}
}
}
快速安装,请点击下方的安装按钮...
对于手动安装,您可以使用以下方法之一配置 MCP 服务器:
方法 1:用户配置(推荐)
将配置添加到您的用户级 MCP 配置文件中。打开命令面板 (Ctrl + Shift + P) 并运行 MCP: 打开用户配置。这将打开您的用户 mcp.json 文件,在其中您可以添加服务器配置。
方法 2:工作区配置
或者,您可以在工作区中的 .vscode/mcp.json 文件中添加配置。这将允许您与他人共享配置。
更多关于 VS Code 中 MCP 配置的详细信息,请参阅 官方 VS Code MCP 文档。
您可以通过将其挂载到 /projects 来向服务器提供隔离的目录。添加 ro 标志会使该目录对服务器只读。
注意:所有目录必须默认挂载到 /projects。
{
"servers": {
"filesystem": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--mount", "type=bind,src=${workspaceFolder},dst=/projects/workspace",
"mcp/filesystem",
"/projects"
]
}
}
}
{
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"${workspaceFolder}"
]
}
}
}
Docker 构建:
docker build -t mcp/filesystem -f src/filesystem/Dockerfile .
此 MCP 服务器根据 MIT 许可证发布。这意味着您可以自由使用、修改和分发软件,但须遵守 MIT 许可证的条款和条件。更多详情,请参阅项目存储库中的 LICENSE 文件。