安全文件系统MCP服务器
🚀 概述
这是一个安全的模型上下文协议(MCP)服务器实现,为AI模型提供受控的文件系统访问。它允许大型语言模型在明确定义的允许目录中安全地读取、写入和操作文件。
此项目是原始Go的实现 文件系统MCP服务器 根据Anthropic开发的模型上下文协议项目, 使用其他编辑器工具 以符合克劳德训练有素的期望。
📁 仓库
该项目是 公共Golang MCP服务器 存储库,其中包含Go中的各种MCP服务器实现。
✨ 特性
- 文件系统工具:
- 安全地读写文件 - 创建并列出目录 - 移动/重命名文件和目录 - 搜索与模式匹配的文件 - 获取详细的文件元数据
- 编辑器工具 新
- str_replace:手术绳索更换并验证 - insert:在特定行号处插入文本 - undo_edit:使用自动备份回滚文件更改
🔧 编辑器工具扩展
此服务器包括 编辑器工具 这与克劳德·索内特训练有素的期望相一致。这些工具解决了 第4027期 Claude试图使用标准MCP桌面环境中不存在的编辑工具。
为什么这很重要:Claude Sonnet已经接受了某些文件编辑原语的训练,这是Anthropic计算机使用功能的一部分。当这些功能不可用时,用户会遇到工具调用失败和工作流程降级的情况。这些编辑器工具弥合了这一差距。
🧰 可用工具
文件系统工具
| 工具名称 | 描述 |
|---|---|
read_file | 读取文件的完整内容 |
read_multiple_files | 一次读取多个文件 |
write_file | 创建或覆盖文件 |
create_directory | 创建新目录 |
list_directory | 列出目录的内容 |
move_file | 移动或重命名文件和目录 |
search_files | 搜索与模式匹配的文件 |
get_file_info | 获取文件的元数据 |
list_allowed_directories | 列出所有允许的目录 |
编辑器工具
| 工具名称 | 描述 |
|---|---|
str_replace | 替换文件中的确切字符串(必须出现一次) |
insert | 在指定行号后插入文本 |
undo_edit | 撤消对文件的上次编辑(自动备份还原) |
⚙️ 配置
服务器使用 config.json 应放置在与可执行文件相同的目录中或当前工作目录中的文件:
{
"allowedDirectories": [
"C:\\Users\\Username\\AppData\\Roaming\\Claude",
"C:\\Users\\Username\\Documents",
"D:\\Projects"
]
}如果 config.json 文件不存在,将创建一个默认文件,将当前目录作为允许的目录。
🚀 入门指南
先决条件
- 达到1.21或更高(仅适用于从源代码构建)
- 对MCP架构的基本理解
安装
下载预构建的二进制文件
从以下网址下载适用于您平台的最新版本 发布页面.
Linux(x86_64):
wget https://github.com/LaurieRhodes/mcp-filesystem-go/releases/latest/download/mcp-filesystem-linux-amd64
chmod +x mcp-filesystem-linux-amd64
sudo mkdir -p /usr/local/bin/mcp-servers/filesystem
sudo mv mcp-filesystem-linux-amd64 /usr/local/bin/mcp-servers/filesystem/mcp-filesystem
# Create config file with your allowed directories
sudo tee /usr/local/bin/mcp-servers/filesystem/config.json > /dev/null /dev/null <<'EOF'
{
"allowedDirectories": [
"/Users/username/Documents",
"/Users/username/Projects"
]
}
EOF视窗:
下载 .exe 文件并将其放置在具有 config.json 文件:
{
"allowedDirectories": [
"C:\\Users\\Username\\Documents",
"C:\\Users\\Username\\Projects"
]
}从源头构建
标准版本(Windows)
# Clone the repository
git clone https://github.com/LaurieRhodes/mcp-filesystem-go.git
cd mcp-filesystem-go
# Build the server
go build -o mcp-filesystem-go.exe ./cmd/server
# Run the server (will use config.json)
mcp-filesystem-go.exeLinux静态构建(推荐)
在Linux系统上,建议使用静态链接进行构建,以避免共享库依赖问题(例如。, libgo.so.23 错误):
# Clone the repository
git clone https://github.com/LaurieRhodes/mcp-filesystem-go.git
cd mcp-filesystem-go
# Build with static linking (no external dependencies)
CGO_ENABLED=0 go build -o mcp-filesystem-go -ldflags="-s -w" ./cmd/server
# Verify static linking (should show "not a dynamic executable")
ldd mcp-filesystem-go
# Make executable and run
chmod +x mcp-filesystem-go
./mcp-filesystem-go为什么是静态链接? 当你在Linux上用动态链接编译Go程序时,它们依赖于共享库的特定版本(如 libgo.so.23).静态链接生成一个自包含的二进制文件,可以在任何Linux系统上运行,而不需要安装这些库。
MCP客户端配置
服务器需要 config.json 与可执行文件位于同一目录中的文件,以指定允许的目录。这种设计允许MCP服务器在多个客户端之间共享,而不是在每个客户端内管理配置。
在您的MCP客户端配置中(例如,Claude Desktop),请参考服务器二进制文件:
Linux/macOS示例
{
"mcpServers": {
"filesystem": {
"command": "/usr/local/bin/mcp-servers/filesystem/mcp-filesystem"
}
}
}Windows示例
{
"mcpServers": {
"filesystem": {
"command": "C:\\path\\to\\mcp-filesystem.exe"
}
}
}备注:更新您的路径 config.json 文件(位于可执行文件旁边)以匹配您允许的目录。
📊 实现细节
此服务器使用Go构建,并遵循模型上下文协议规范:
- 运输:使用stdio进行通信(从stdin读取JSON-RPC消息并将响应写入stdout)
- 模块化设计:MCP协议处理、文件系统操作和编辑器操作之间的清晰分离
- 全面的错误处理:详细的错误消息,便于调试
- 自动备份:编辑器操作在修改之前创建带时间戳的备份
#
📜 许可证
此MCP服务器根据原始的Anthropic MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。
👏 归因
这个项目是一个原始的港口 文件系统MCP服务器 由PBC的Anthropic开发,它是模型上下文协议项目的一部分。原始的Node.js实现可在 @modelcontextprotocol/server-filesystem.
编辑器工具扩展解决了社区在Claude Desktop的MCP工具可用性方面发现的差距。
🤝 贡献
此源代码是作为示例代码提供的,并不打算成为活动项目。请随时根据您的需求进行分叉和扩展。
