文件系统操作服务

一个基于Model Context Protocol (MCP) 的服务器,提供全面的文件系统操作功能,包括文件读写、目录管理、高级搜索等,适用于AI助手和其他MCP客户端安全高效地交互文件系统。

  • by jihadkhawaja
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 jihadkhawaja/mcp.filesystem

使用说明

MCP。文件系统

全面 模型上下文协议(MCP)服务器 它通过标准化工具提供强大的文件系统操作。该服务器使AI助手和其他MCP客户端能够安全有效地与文件系统交互。

特性

文件操作

  • 读/写文件:从文件中读取内容或使用自定义内容创建新文件
  • 附加内容:在不覆盖的情况下向现有文件添加内容
  • 删除文件:从文件系统中删除文件
  • 复制文件:将文件复制到新位置
  • 移动/重命名文件:重新定位或重命名文件

目录操作

  • 创建目录:使用自动父目录创建新目录
  • 删除目录:使用可选的递归删除功能删除目录
  • 列出目录内容:使用筛选选项浏览文件和文件夹

高级搜索功能

  • 文件名搜索:使用通配符支持按名称模式查找文件
  • 内容搜索:跨目录搜索文件中的文本
  • 正则表达式搜索:使用正则表达式进行高级模式匹配
  • 递归搜索:搜索子目录

文件信息和实用程序

  • 文件元数据:获取有关文件和目录的详细信息
  • 路径验证:检查文件或目录是否存在
  • 目录大小:计算包括子目录在内的目录的总大小
  • 工作目录:获取并设置当前工作目录

技术栈

  • .NET 8.0:建立在最新的基础上。NET平台
  • C#12.0:使用现代C#语言功能
  • 模型上下文协议:实现MCP服务器规范
  • JSON序列化:结构化响应,便于集成
  • Docker支持:已准备好进行集装箱化部署

安装

先决条件

  • .NET 8.0 SDK或更高版本
  • 兼容的MCP客户端(Claude Desktop、带MCP扩展的VS Code等)

从源头构建

git clone https://github.com/jihadkhawaja/MCP.FileSystem.git
cd MCP.FileSystem
dotnet build

运行服务器

dotnet run --project MCP.FileSystem

Docker部署

docker build -t mcp-filesystem .
docker run -it mcp-filesystem

用法

MCP客户端配置

克劳德桌面

添加到您的Claude Desktop配置中:

{
  "mcpServers": {
    "MCP.FileSystem": {
      "command": "dotnet",
      "args": ["run", "--project", "path/to/MCP.FileSystem.csproj"]
    }
  }
}

带有MCP扩展的VS代码

在MCP设置中配置:

"servers": {
  "MCP.FileSystem": {
    "type": "stdio",
    "command": "dotnet",
    "args": [
      "run",
      "--project",
      "path/to/MCP.FileSystem.csproj"
    ]
  }
}

可用工具

文件操作

工具 说明 参数
ReadFile 从文件中读取内容 filePath
WriteFile 将内容写入文件 filePath, content, overwrite?
AppendToFile 将内容附加到文件 filePath, content
DeleteFile 删除文件 filePath
CopyFile 复制文件 sourcePath, destinationPath, overwrite?
MoveFile 移动/重命名文件 sourcePath, destinationPath, overwrite?

目录操作

工具 说明 参数
CreateDirectory 创建目录 directoryPath
DeleteDirectory 删除目录 directoryPath, recursive?
ListDirectory 列出目录内容 directoryPath, searchPattern?, includeSubdirectories?

搜索操作

工具 说明 参数
SearchFiles 按模式搜索文件 directoryPath, searchPattern?, includeSubdirectories?, maxResults?
SearchInFiles 在文件中搜索文本 directoryPath, searchText, filePattern?, includeSubdirectories?, caseSensitive?, maxResults?
SearchInFilesRegex 使用正则表达式模式搜索 directoryPath, regexPattern, filePattern?, includeSubdirectories?, caseSensitive?, maxResults?

信息和实用程序

工具 说明 参数
GetFileInfo 获取文件/目录元数据 path
PathExists 检查路径是否存在 path
GetCurrentDirectory 获取当前工作目录 -
SetCurrentDirectory 设置当前工作目录 path
GetDirectorySize 计算目录大小 directoryPath

示例响应

所有工具都返回结构化的JSON响应:

成功响应

{
  "success": true,
  "message": "File written successfully",
  "path": "/path/to/file.txt",
  "size": 1024
}

错误响应

{
  "error": "File not found",
  "path": "/path/to/nonexistent.txt"
}

搜索结果

{
  "success": true,
  "searchPath": "/search/directory",
  "matches": [
    {
      "file": "/path/to/match.txt",
      "fileName": "match.txt",
      "lineNumber": 42,
      "line": "Found matching content here",
      "matchPosition": 6
    }
  ],
  "count": 1,
  "truncated": false
}

安全考虑

  • 路径验证:所有文件路径都经过验证,以防止目录遍历攻击
  • 错误处理:全面的错误处理可防止信息泄露
  • 尊重许可:操作尊重文件系统权限
  • 沙箱:考虑在容器化环境中运行以提高安全性

贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

依赖项

  • Microsoft.Extensions.Hosting (9.0.7)-应用程序托管框架
  • ModelContextProtocol (0.3.0-preview.2)-MCP服务器实现
  • Microsoft.VisualStudio.Azure.Containers.Tools.Targets (1.22.1)-Docker支持

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

更新日志

v1.0.0

  • 具有全面文件系统操作的初始版本
  • 支持文件和目录操作
  • 支持正则表达式的高级搜索功能
  • Docker部署支持
  • 完成MCP服务器的实施

支持

如有疑问、问题或意见,请访问 GitHub存储库 或者打开一个问题。


备注:此MCP服务器提供强大的文件系统访问。确保您了解安全影响,并在具有适当访问控制的适当环境中运行它。