文件系统服务器

一个基于模型上下文协议(MCP)的文件系统操作服务器,提供基于Web的前端界面。

  • by AbhishekCbanaj
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 abhishekcbanaj/mcp-filesystem-server

使用说明

MCP文件系统服务器

一种用于文件系统操作的模型上下文协议(MCP)服务器实现,具有基于web的前端界面。

特性

  • MCP服务器:完成文件系统操作(创建、读取、编辑、删除文件和目录)
  • MCP客户端:JavaScript客户端与服务器通信
  • Web前端:具有拖放支持的文件管理交互式界面
  • 命令处理:用于文件操作的自然语言命令

项目结构

mcp-filesystem-server/
├── src/
│   ├── server.js          # MCP server implementation
│   ├── client.js          # MCP client implementation
│   └── frontend.html      # Web interface
├── package.json           # Dependencies and scripts
├── README.md             # This file
└── workspace/            # Default working directory (created automatically)

先决条件

  • Node.js(v16或更高版本)
  • npm或纱线

安装

  1. 克隆或创建项目目录:

    mkdir mcp-filesystem-server
    cd mcp-filesystem-server
    
  2. 初始化项目:

    npm init -y
    
  3. 安装依赖项:

    npm install @modelcontextprotocol/sdk
    npm install --save-dev nodemon
    
  4. 创建项目结构:

    mkdir src
    mkdir workspace
    
  5. 复制提供的文件:

    • 复制 server.js 向 src/server.js
    • 复制 client.js 向 src/client.js
    • 复制 frontend.html 向 src/frontend.html
    • 更新 package.json 使用提供的配置

用法

运行MCP服务器

# Start the server
npm start

# Or for development with auto-reload
npm run dev

使用Web界面

  1. 打开 src/frontend.html 在网络浏览器中
  2. 接口将自动模拟与MCP服务器的连接
  3. 使用拖放或文件选择器上传文件夹
  4. 使用命令提示符执行操作

可用命令

  • create file filename.txt with content Hello World!
  • read file filename.txt
  • edit file filename.txt with content Updated content
  • delete file filename.txt
  • list files

MCP客户端使用(程序化)

import { FilesystemMCPClient } from './src/client.js';

const client = new FilesystemMCPClient();
await client.connect();

// Create a file
await client.createFile('./workspace/test.txt', 'Hello World!');

// Read a file
const result = await client.readFile('./workspace/test.txt');
console.log(result);

// Process natural language commands
const response = await client.processPrompt('create file hello.txt with content Hello MCP!');

MCP服务器工具

服务器实现了以下MCP工具:

  1. 创建文件:使用指定内容创建新文件
  2. read_file:读取现有文件的内容
  3. edit_file:通过替换现有文件的内容来编辑该文件
  4. 删除文件:删除文件
  5. 列表文件:列出目录中的所有文件
  6. create_directory:创建新目录

api参考

服务器端点

所有工具均遵循MCP协议规范:

{
  "method": "tools/call",
  "params": {
    "name": "create_file",
    "arguments": {
      "filepath": "path/to/file.txt",
      "content": "File content here"
    }
  }
}

错误处理

该服务器包括全面的错误处理功能,用于:

  • 找不到文件错误
  • 权限错误
  • 文件路径无效
  • 网络连接问题

发展

添加新工具

要向MCP服务器添加新工具,请执行以下操作:

  1. 在中添加工具定义 ListToolsRequestSchema 处理器
  2. 在中实现工具逻辑 CallToolRequestSchema 处理器
  3. 在中添加相应的客户端方法 FilesystemMCPClient

扩展前端

前端是用vanilla HTML/CSS/JavaScript构建的,可以扩展为:

  • 其他命令类型
  • 文件预览功能
  • 语法突出显示
  • 实时协作功能

安全考虑

  • 服务器仅在指定的工作目录中运行
  • 验证文件路径以防止目录遍历攻击
  • 不允许访问网络文件
  • 所有操作都记录在案,以供审计之用

故障排除

常见问题

  1. 连接失败:启动客户端之前,请确保MCP服务器正在运行
  2. 文件权限错误:检查工作区目录是否具有正确的读/写权限
  3. 端口冲突:服务器使用stdio传输,因此不应发生端口冲突

调试模式

通过设置环境变量启用调试日志记录:

DEBUG=mcp:* npm start

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件

作业提交说明

该项目展示了:

  1. 完成MCP服务器实施:所有必需的文件系统操作
  2. MCP客户端集成:正确使用SDK和连接处理
  3. 前端接口:具有文件上传和命令处理功能的交互式web应用程序
  4. 错误处理:整个堆栈的全面错误管理
  5. 文档:完整的设置和使用说明

测试演示命令

create file demo.txt with content This is a demo file
read file demo.txt
edit file demo.txt with content This file has been updated
list files
delete file demo.txt

该实现展示了对MCP协议、客户端-服务器架构和现代web开发实践的理解。