一款多功能、安全的文件服务器,实现了模型上下文协议(MCP),为AI助手提供安全的文件操作。支持多种连接模式、可配置访问级别以及全面的安全控制,适用于各种部署场景。
# 使用uv(推荐)
uv tool install fastmcp-file-server
# 使用pip
pip install fastmcp-file-server
git clone https://github.com/Luxshan2000/Local-File-MCP-Server.git
cd Local-File-MCP-Server
uv sync
# 设置允许的目录
export MCP_ALLOWED_PATH="/path/to/your/files"
# 启动标准输入输出服务器(用于Claude桌面)
fastmcp-file-server
# 启动HTTP服务器
fastmcp-file-server-http
# 启动HTTP服务器,忽略安全警告(不推荐)
fastmcp-file-server-http --ignore-keys
# 设置HTTP模式下的管理员密钥
export MCP_ADMIN_KEY="your-secret-token"
export MCP_HTTP_PORT=8082
fastmcp-file-server-http
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_ALLOWED_PATH | ./allowed | 文件操作的目录路径 |
MCP_HTTP_PORT | 8082 | HTTP服务器端口 |
MCP_READ_KEY | None | 只读访问令牌 |
MCP_WRITE_KEY | None | 读写访问令牌 |
MCP_ADMIN_KEY | None | 管理员访问令牌(包括删除) |
MCP_MAX_FILE_SIZE | 10485760 | 最大文件大小(字节,10MB) |
MCP_ALLOWED_EXTENSIONS | .txt,.json,.md,... | 允许的文件扩展名(逗号分隔) |
在项目根目录下创建一个.env文件:
# 必需:文件操作的安全目录
MCP_ALLOWED_PATH=/absolute/path/to/your/files
# 可选:HTTP服务器设置
MCP_HTTP_PORT=8082
# 可选:多级认证令牌
MCP_READ_KEY=readonly-token-here
MCP_WRITE_KEY=readwrite-token-here
MCP_ADMIN_KEY=admin-token-here
# 可选:文件限制
MCP_MAX_FILE_SIZE=10485760
MCP_ALLOWED_EXTENSIONS=.txt,.json,.md,.csv,.log,.xml,.yaml,.yml,.conf,.cfg,.zip,.pdf,.jpg,.png
配置文件位置:
~/Library/Application Support/Claude/config.json{
"mcpServers": {
"local-file-server": {
"command": "fastmcp-file-server",
"env": {
"MCP_ALLOWED_PATH": "/absolute/path/to/your/allowed/directory"
}
}
}
}
export MCP_ADMIN_KEY="your-secret-token"
fastmcp-file-server-http
{
"mcpServers": {
"local-file-server-http": {
"transport": "http",
"url": "http://127.0.0.1:8082/mcp",
"headers": {
"Authorization": "Bearer your-secret-token"
}
}
}
}
对于需要代理的环境:
# 安装mcp-remote
npm install -g mcp-remote
{
"mcpServers": {
"local-file-server-proxy": {
"command": "npx",
"args": [
"mcp-remote",
"http://127.0.0.1:8082/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer your-secret-token"
}
}
}
}
对于基于Web的AI系统(如ChatGPT等):
# 终端1:启动认证HTTP服务器
export MCP_ADMIN_KEY="your-secret-token"
export MCP_HTTP_PORT=8082
fastmcp-file-server-http
# 终端2:通过ngrok公开访问
ngrok http 8082
在基于Web的AI系统中使用ngrok URL:
https://abc123.ngrok.io/mcpAuthorization: Bearer your-secret-token⚠️ HTTP模式安全警告:
当未配置任何认证令牌就启动HTTP服务器时,系统会显示安全警告并要求确认。这可以防止意外运行无保护的服务器。
# 这将触发安全警告:
fastmcp-file-server-http
# 跳过警告(不推荐):
fastmcp-file-server-http --ignore-keys
⚠️ 重要安全提示:
MCP_READ_KEY、MCP_WRITE_KEY或MCP_ADMIN_KEY)时,所有HTTP请求都需要Authorization: Bearer <token>头MCP_READ_KEY - 文件列表、读取、搜索、比较操作MCP_WRITE_KEY - 所有读取操作加上创建、修改、复制、移动、转换MCP_ADMIN_KEY - 所有操作包括文件和目录删除.env文件(添加到.gitignore)openssl rand -hex 32)MCP_ALLOWED_PATH设置为所需的最小目录# 基本操作
"创建名为notes.txt的文件,内容为我的会议记录"
"读取config.py的第10至20行"
"将config.json复制到backup/config_backup.json"
# 高级操作
"搜索所有Python文件中的'TODO'注释"
"将utils.py中的'old_function'替换为'new_function'"
"创建所有源文件的ZIP归档"
"将report.txt转换为PDF格式"
"计算important_file.pdf的SHA256哈希"
"读取src/目录下的所有.py文件"
"创建这些5个配置文件及其内容"
"删除工作区中的所有.tmp文件"
"查找包含'console.log'的所有JavaScript文件"
参见DEVELOPER.md了解详细的开发设置和贡献指南。
# 克隆仓库
git clone https://github.com/Luxshan2000/Local-File-MCP-Server.git
cd Local-File-MCP-Server
# 安装依赖
uv sync
# 运行开发服务器
uv run server # 标准输入输出模式
uv run server-http # HTTP模式
# 运行测试和代码检查
uv run test
uv run lint
uv run format
| 工具 | 描述 | 访问级别 |
|---|---|---|
read_file | 读取文件内容或特定行范围 | 只读 |
write_file | 创建或覆盖文件 | 读写 |
append_file | 追加内容到现有文件 | 读写 |
delete_file | 删除文件和目录 | 管理员 |
copy_file | 复制文件和目录 | 读写 |
move_file | 移动/重命名文件和目录 | 读写 |
list_directory | 列出目录内容并过滤 | 只读 |
create_directory | 创建新目录 | 读写 |
get_file_info | 获取文件元数据和权限 | 只读 |
search_files | 按名称模式搜索文件 | 只读 |
search_content | 使用正则表达式搜索文件内容 | 只读 |
replace_content | 在文件中查找和替换文本 | 读写 |
insert_lines | 在特定行号插入文本 | 读写 |
delete_lines | 删除特定行范围 | 读写 |
compare_files | 生成文件之间的差异 | 只读 |
create_archive | 创建ZIP归档 | 读写 |
extract_archive | 提取ZIP归档 | 读写 |
calculate_hash | 生成文件哈希(MD5、SHA1、SHA256) | 只读 |
convert_document | 将文本转换为PDF | 读写 |
convert_image | 在图像格式之间转换 | 读写 |
convert_data | 在CSV和JSON之间转换 | 读写 |
服务器无法启动:
# 重新安装依赖
uv sync
# 检查Python版本
python --version # 需要Python 3.10+
Claude桌面无法连接:
uv run serverMCP_ALLOWED_PATH目录存在且可访问HTTP认证失败:
MCP_ADMIN_KEYBearer your-secret-token权限被拒绝错误:
MCP_ALLOWED_PATH是可访问的本项目采用MIT许可证 - 详情请参阅LICENSE文件。
我们欢迎贡献!请参阅DEVELOPER.md了解开发设置和CODE_OF_CONDUCT.md了解社区准则。
如果您发现这个项目有用,请考虑在GitHub上给它一个星!