Token导航 LogoToken导航TokenDH.com
Fs MCP Server logo
安全风控HTTP官方级别未说明来源级核验

Fs MCP Server

MCP Server

一个安全的模型上下文协议(MCP)服务器实现,用于通过标准化接口执行文件系统操作,包括文件读写、目录管理、内容搜索等,所有操作限制在配置允许的目录内以确保安全。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
安全协议Rust服务器实现

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

colinrozzi

提供方

colinrozzi

最后核验

2026/5/17 20:25

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

文件系统MCP服务器

用于文件系统操作的安全模型上下文协议(MCP)服务器实现。

概述

文件系统MCP服务器提供了一个标准化的接口,用于通过模型上下文协议与本地文件系统进行交互。它允许客户端以安全和可控的方式执行常见的文件操作,如列出目录、读取文件和搜索文件内容。

特性

服务器提供以下MCP工具:

  1. 列表:列出包含元数据的文件和目录
  2. :使用各种编码选项读取文件内容
  3. :创建或更新包含内容的文件
  4. 创建目录:创建目录
  5. 删除:删除文件或目录
  6. 复制:复制文件或目录
  7. 移动:移动或重命名文件或目录
  8. 信息:获取详细的文件/目录信息
  9. 搜索:搜索文件内容(类似grep的功能)
  10. list_allowed_dirs:列出服务器上配置的所有允许的目录
  11. 编辑:对文件进行部分编辑,而不重写整个内容

为了安全起见,所有操作都限制在可配置的允许目录中。

安全

所有文件系统操作都限制在一组可配置的允许目录中。服务器验证路径以防止目录遍历攻击和其他安全问题。访问允许目录之外的文件的操作将被拒绝,并显示相应的错误消息。

路径要求

提供给服务器的所有文件和目录路径必须指定为 完全绝对路径。这些路径必须位于配置的允许访问的目录之一中。

安装

先决条件:

  • Rust工具链(1.70.0或更高版本)
  • 货物包装经理

要构建服务器,请执行以下操作:

cargo build --release

用法

运行服务器

# Run with current directory as the allowed directory
./target/release/fs-mcp-server

# Specify allowed directories (comma-separated)
./target/release/fs-mcp-server --allowed-dirs /path/to/dir1,/path/to/dir2

# Use a configuration file listing allowed directories
./target/release/fs-mcp-server --config-file /path/to/config.txt

# Set maximum file size
./target/release/fs-mcp-server --max-file-size 5242880  # 5MB

配置文件

您可以在配置文件中指定允许的目录,每行一个目录:

# This is a comment
/path/to/directory1
/path/to/directory2
/another/path

环境变量

可以使用以下环境变量配置服务器:

  • FS_ALLOWED_DIRS:以逗号分隔的文件系统操作允许目录列表
  • FS_CONFIG_FILE:列出允许目录的配置文件的路径
  • FS_MAX_FILE_SIZE:读取操作的最大文件大小(以字节为单位)
  • FS_REQUEST_TIMEOUT:请求超时(秒)
  • FS_LOG_LEVEL:日志级别(错误、警告、信息、调试、跟踪)
  • FS_LOG_FILE:日志文件路径

例子:

FS_ALLOWED_DIRS=/data,/home/user/docs FS_LOG_LEVEL=debug ./target/release/fs-mcp-server

协议工具

服务器提供以下MCP工具:

列表

列出指定路径下的文件和目录。

参数:

  • path:列出文件的目录的完整路径
  • pattern:用于过滤文件的可选glob模式(默认值:“\*”)
  • recursive:是否递归列出文件(默认值:false)
  • include_hidden:是否包含隐藏文件(默认值:false)
  • metadata:是否包含文件元数据(默认值:true)

读取支持不同编码和部分读取的文件内容。

参数:

  • path:要读取的文件的完整路径
  • encoding:文件编码(utf8、base64、二进制)(默认:utf8)
  • start_line:部分读取的起始行(0索引)
  • end_line:部分读取的结束行(包括)
  • max_size:要读取的最大字节数(默认值:1MB)

搜索

在文件内容中搜索匹配的模式(类似grep的功能)。

参数:

  • root_path:从中开始搜索的根目录的完整路径
  • pattern:要在文件中搜索的文本模式
  • regex:是否将模式视为正则表达式(默认值:false)
  • file_pattern:可选的glob模式,用于过滤要搜索的文件(默认值:“\*”)
  • recursive:是否递归搜索目录(默认值:true)
  • case_sensitive:搜索是否应区分大小写(默认值:false)
  • max_results:要返回的最大结果数(默认值:100)
  • max_file_size:要搜索的最大文件大小(默认值:10MB)
  • context_lines:要包含的上下文行数(默认值:0)
  • timeout_secs:搜索的最长时间(默认值:30秒)

编辑

对文件执行部分编辑,而无需重写整个内容。

参数:

  • path:要编辑的文件的完整路径
  • operations:要执行的编辑操作列表(按顺序)

- 更换操作: - type:“替换” - find:要查找的文本(完全匹配) - replace:插入文本作为替换 - occurrence:要替换哪个事件(从0开始,全部为-1)(默认值:0) - case_sensitive:搜索是否区分大小写(默认值:true) - 插入操作: - type:“插入” - position:要插入的字符位置(从0开始) - content:要插入的文本 - 删除操作: - type:“删除” - start:起始字符位置(从0开始,包括0) - end:结束字符位置(从0开始,不包括) - 更换线路操作: - type:“replace_lines” - start_line:起始行号(从0开始,包括0) - end_line:结束行号(从0开始,包括0) - content:插入文本作为替换

  • create_if_missing:如果文件不存在,则创建该文件(默认值:false)
  • backup:在编辑之前创建原始文件的备份(默认值:false)

例子:

{
  "path": "/path/to/file.txt",
  "operations": [
    {
      "type": "replace",
      "find": "hello",
      "replace": "hello world",
      "occurrence": 0,
      "case_sensitive": true
    },
    {
      "type": "insert",
      "position": 100,
      "content": "new text at position 100"
    },
    {
      "type": "replace_lines",
      "start_line": 5,
      "end_line": 7,
      "content": "new line 6\nnew line 7\nnew line 8"
    }
  ],
  "backup": true
}

list_allowed_dirs

列出服务器已配置为允许访问的所有目录。

参数:

客户端集成

要将此服务器与MCP客户端一起使用:

  1. 导入适用于您语言的MCP客户端库
  2. 使用stdio传输连接到服务器
  3. 使用MCP协议调用可用工具

示例客户端代码(使用Rust MCP客户端):

use mcp_client::{ClientBuilder, transport::StdioTransport};
use serde_json::json;

#[tokio::main]
async fn main() -> Result {
    // Path to the server executable
    let server_path = "path/to/fs-mcp-server";
    
    // Create and connect to server
    let (transport, mut receiver) = StdioTransport::new(server_path, vec![]);
    
    let client = ClientBuilder::new("fs-client", "0.1.0")
        .with_transport(transport)
        .build()?;
    
    // Start message handling
    let client_for_handler = client.clone();
    tokio::spawn(async move {
        while let Some(message) = receiver.recv().await {
            if let Err(e) = client_for_handler.handle_message(message).await {
                eprintln!("Error handling message: {}", e);
            }
        }
    });
    
    // Initialize the client
    let init_result = client.initialize().await?;
    println!("Connected to: {} v{}", init_result.server_info.name, init_result.server_info.version);
    
    // List all allowed directories
    let allowed_dirs_result = client.call_tool("list_allowed_dirs", &json!({})).await?;
    println!("Allowed directories: {:?}", allowed_dirs_result);
    
    // List files in a directory
    let list_result = client.call_tool("list", &json!({
        "path": "/path/to/directory"
    })).await?;
    
    // Process result
    println!("List result: {:?}", list_result);
    
    // Edit a file by replacing text
    let edit_result = client.call_tool("edit", &json!({
        "path": "/path/to/file.txt",
        "operations": [
            {
                "type": "replace",
                "find": "TODO",
                "replace": "DONE",
                "occurrence": -1
            }
        ],
        "backup": true
    })).await?;
    
    // Process result
    println!("Edit result: {:?}", edit_result);
    
    // Shutdown
    client.shutdown().await?;
    
    Ok(())
}

发展

项目结构

  • src/main.rs:服务器入口点和初始化
  • src/tools/:工具实现(列表、读取、搜索、编辑等)
  • src/utils/:实用功能(路径验证等)

添加新工具

要添加新的文件系统工具,请执行以下操作:

  1. 在中创建新文件 src/tools/ 为您的工具
  2. 实现工具的模式并执行功能
  3. 将该工具添加到中的服务器构建器 build_server() 在main.rs中

为不同平台构建

# Build for Linux
cargo build --release --target x86_64-unknown-linux-gnu

# Build for macOS
cargo build --release --target x86_64-apple-darwin

# Build for Windows
cargo build --release --target x86_64-pc-windows-msvc

许可证

麻省理工学院

目录标签

目录标签

安全协议Rust服务器实现文件系统操作本地部署文件管理目录管理

接入字段

传输方式(transport,传输协议)

HTTP

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

HTTPnone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP