Skip to main content
Like AOF? Give us a star!
If you find AOF useful, please star us on GitHub. It helps us reach more developers and grow the community.

Filesystem MCP Server

Read and write files on the local filesystem.

Overview

PropertyValue
Package@modelcontextprotocol/server-filesystem
SourceGitHub
Transportstdio

Installation

npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/directory

Configuration

mcp_servers:
- name: filesystem
command: npx
args:
- "-y"
- "@modelcontextprotocol/server-filesystem"
- "/home/user/projects" # Allowed directory

Multiple Directories

mcp_servers:
- name: filesystem
command: npx
args:
- "-y"
- "@modelcontextprotocol/server-filesystem"
- "/home/user/projects"
- "/var/log"
- "/etc/app-config"

Tools

read_file

Read contents of a file.

Parameters:

  • path (string, required): Path to file

Example:

{
"tool": "read_file",
"arguments": {
"path": "/home/user/projects/config.yaml"
}
}

read_multiple_files

Read multiple files at once.

Parameters:

  • paths (array, required): List of file paths

Example:

{
"tool": "read_multiple_files",
"arguments": {
"paths": [
"/home/user/projects/src/main.rs",
"/home/user/projects/Cargo.toml"
]
}
}

write_file

Write content to a file.

Parameters:

  • path (string, required): Path to file
  • content (string, required): Content to write

Example:

{
"tool": "write_file",
"arguments": {
"path": "/home/user/projects/output.txt",
"content": "Hello, World!"
}
}

create_directory

Create a new directory.

Parameters:

  • path (string, required): Path to directory

list_directory

List contents of a directory.

Parameters:

  • path (string, required): Path to directory

Example:

{
"tool": "list_directory",
"arguments": {
"path": "/home/user/projects"
}
}

move_file

Move or rename a file.

Parameters:

  • source (string, required): Source path
  • destination (string, required): Destination path

search_files

Search for files matching a pattern.

Parameters:

  • path (string, required): Directory to search
  • pattern (string, required): Glob pattern

Example:

{
"tool": "search_files",
"arguments": {
"path": "/home/user/projects",
"pattern": "*.yaml"
}
}

get_file_info

Get metadata about a file.

Parameters:

  • path (string, required): Path to file

Resources

The filesystem server exposes files as resources:

file:///home/user/projects/config.yaml

Use Cases

Log Analysis Agent

apiVersion: aof.sh/v1alpha1
kind: Agent
metadata:
name: log-analyzer
spec:
model: google:gemini-2.5-flash
mcp_servers:
- name: filesystem
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/var/log"]
system_prompt: |
You are a log analysis agent. Use the filesystem tools to read
and analyze log files. Look for errors, patterns, and anomalies.

Config Validator

apiVersion: aof.sh/v1alpha1
kind: Agent
metadata:
name: config-validator
spec:
model: google:gemini-2.5-flash
mcp_servers:
- name: filesystem
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/etc/myapp"]
system_prompt: |
You validate configuration files. Read configs from /etc/myapp
and check for common issues, missing required fields, and
security misconfigurations.

Security

  • Path Restriction: Only paths within allowed directories are accessible
  • Symlink Following: Symlinks are followed but must resolve within allowed paths
  • No Escape: Cannot access parent directories outside allowed paths

Troubleshooting

Permission Denied

Ensure the user running AOF has read/write permissions:

# Check permissions
ls -la /path/to/directory

# Fix permissions if needed
chmod -R 755 /path/to/directory

Path Not Allowed

The path must be within the directories specified in the args:

# This allows /home/user/projects and subdirectories
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]

# Trying to access /etc will fail