Skip to main content
Glama
SohailShabbir867

High-Performance File System MCP Server

๐Ÿ“ High-Performance File System MCP Server

Secure, Dockerized Model Context Protocol (MCP) Server for File & Directory CRUD Operations

MCP Version Docker Node.js License: MIT


Empower your AI assistants (Claude Desktop, Cursor, Codex, Windsurf, Continue.dev) to read, write, edit, search, and manage local files and folders seamlessly via Docker Desktop.


๐Ÿ“‘ Table of Contents


Related MCP server: local-mcp

โœจ Core Capabilities

Feature

Tool Name

Description

Read File

read_file

Read text content of any file within mounted folders.

Read Batch

read_multiple_files

Read multiple files in a single request for fast analysis.

Create / Overwrite

write_file

Create new files or overwrite existing files safely.

Edit & Patch

edit_file

Replace target text blocks (single or replaceAll mode).

Delete File

delete_file

Delete specified files from the filesystem.

Create Folder

create_directory

Create recursive directory trees (mkdir -p).

List Folder

list_directory

List folder contents with file size, type, & timestamp metadata.

Delete Folder

delete_directory

Remove folders recursively or non-recursively.

Move / Rename

move_file

Move or rename files and directories.

File Metadata

get_file_info

Inspect file stats (size, creation/modified dates, attributes).

Search Files

search_files

Search files via glob patterns (**/*.ts, *.json), including hidden dotfiles.


๐Ÿ—๏ธ How It Works (Architecture)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      AI Client / IDE                            โ”‚
โ”‚  (Claude Desktop, Cursor, Codex, Windsurf, Continue.dev, etc.)  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                โ”‚ JSON-RPC over Stdio
                                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Docker Desktop Container                     โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚               Node.js MCP Server Runtime                  โ”‚  โ”‚
โ”‚  โ”‚   - Security validation against allowed directories        โ”‚  โ”‚
โ”‚  โ”‚   - Full File & Folder CRUD Operations                    โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                โ”‚ Volume Mount (-v)
                                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      Host Filesystem                            โ”‚
โ”‚   (e.g., C:\Users\Username\Desktop  โ”€โ”€>  Mounted as /data)      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

[!SECURITY NOTE] Containerized Isolation: The AI client can only read and modify files in directories explicitly passed to the container via Docker volume mounts (-v). Your rest of system remains isolated.


๐Ÿš€ Quick Start Guide

1. Clone Repository

git clone https://github.com/SohailShabbir867/file_mcp_server.git
cd file_mcp_server

2. Build Docker Image

Build the container image tagged as file-mcp-server:

docker build -t file-mcp-server .

Verify that the image is ready:

docker images | grep file-mcp-server

๐Ÿ“‚ Connecting Files & Folders via MCP

Docker volume mounts (-v) control which local folders on your computer are accessible to the AI through the MCP server. Inside the container, mounted paths map to /data.

Scenario A: Access Desktop Folder Only

Mount only your Windows or macOS Desktop folder:

  • Windows: -v "C:\Users\YourName\Desktop:/data"

  • macOS / Linux: -v "/Users/yourname/Desktop:/data"

Scenario B: Access Entire User Directory

Mount your entire User home folder to allow access to Desktop, Documents, Downloads, Projects, etc.:

  • Windows: -v "C:\Users\YourName:/data"

  • macOS / Linux: -v "/Users/yourname:/data"

Scenario C: Access Specific Workspace or Project

Mount a specific project directory:

  • Windows: -v "D:\Projects\MyApp:/data"

  • macOS / Linux: -v "/Users/yourname/Projects/MyApp:/data"

Scenario D: Access Multiple Folders or Drives

You can pass multiple volume mounts to access multiple paths:

docker run -i --rm \
  -v "C:\Users\YourName\Desktop:/data/desktop" \
  -v "D:\Projects:/data/projects" \
  file-mcp-server /data/desktop /data/projects

๐Ÿ’ป Client Integration Guides

1. Claude Desktop

Configuration File Location:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Config File Example:

Open claude_desktop_config.json and add the file-server configuration:

{
  "mcpServers": {
    "file-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "C:\\Users\\Sohail Shabbir\\Desktop:/data",
        "file-mcp-server"
      ]
    }
  }
}
TIP

Windows Path Formatting: Remember to use double backslashes (\\) in claude_desktop_config.json (e.g. C:\\Users\\YourName\\Desktop:/data). After updating the file, restart Claude Desktop. Look for the hammer icon ๐Ÿ› ๏ธ to confirm tools are loaded!


2. Cursor IDE

  1. Open Cursor Settings (Ctrl + , or Cmd + ,).

  2. Navigate to Features -> MCP Servers.

  3. Click + Add New MCP Server.

  4. Set the following fields:

    • Name: file-server

    • Type: command

    • Command:

      docker run -i --rm -v "C:\Users\Sohail Shabbir\Desktop:/data" file-mcp-server
  5. Click Save.


3. Codex / Continue.dev / VS Code

For Continue.dev or VS Code MCP Extensions, add the server to your MCP configuration file (e.g., ~/.continue/config.json or .mcp.json):

{
  "mcpServers": [
    {
      "name": "file-server",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "C:\\Users\\Sohail Shabbir\\Desktop:/data",
        "file-mcp-server"
      ]
    }
  ]
}

4. Windsurf / Cline / Roo Code

In your extension settings (cline_mcp_settings.json or Windsurf MCP settings):

{
  "mcpServers": {
    "file-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "C:\\Users\\Sohail Shabbir\\Desktop:/data",
        "file-mcp-server"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}

๐Ÿ› ๏ธ Tool Reference & Example Prompts

Tool

Key Parameters

Example Prompt for AI Client

read_file

path

"Read the content of /data/todo.txt"

read_multiple_files

paths: [...]

"Compare /data/config.json and /data/config.prod.json"

write_file

path, content, overwrite

"Create a file /data/notes/ideas.md with my meeting summary"

edit_file

path, target, replacement, replaceAll

"Replace v1.0.0 with v1.1.0 in /data/package.json"

delete_file

path

"Delete temp file /data/scratch.log"

create_directory

path

"Create folder /data/projects/new-app/src"

list_directory

path

"List all files and folders inside /data"

delete_directory

path, recursive

"Delete directory /data/old-builds"

move_file

source, destination

"Rename /data/draft.txt to /data/final.txt"

get_file_info

path

"Check creation date and size of /data/report.pdf"

search_files

directory, pattern

"Search for all .ts files inside /data/src"


๐Ÿ”ง Local Development (Without Docker)

To run or debug the server directly using Node.js:

# 1. Install dependencies
npm install

# 2. Build TypeScript source
npm run build

# 3. Start server with allowed base directory
node dist/index.js "C:\Users\Sohail Shabbir\Desktop"

โ“ Troubleshooting & FAQ

Q1: docker: command not found or connection error

  • Solution: Ensure Docker Desktop is installed and running in your taskbar.

Q2: Path permission denied inside Claude or Cursor

  • Solution: Check your -v volume mount path. Ensure the directory exists on your computer and your user account has read/write permissions.

Q3: Cannot find files created by AI

  • Solution: Files created inside /data will appear directly inside the mounted folder on your computer (e.g. C:\Users\YourName\Desktop).


๐Ÿ“„ License

This project is licensed under the MIT License. Feel free to use, modify, and distribute!

Available Tools

11 tools
create_directoryA

Create a directory path recursively.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the directory to create

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the recursive behavior, which is useful, but does not state what happens if the path already exists, whether it is idempotent, or any failure conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence that delivers all essential information without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple creation tool with one parameter, the description conveys the core behavior. However, with no output schema and no annotations, it omits edge-case behavior like when the directory already exists, making it slightly incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single 'path' parameter with a clear description, and the tool description adds no additional parameter semantics. Baseline 3 applies due to high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Create' and identifies the resource 'directory path', plus the recursive behavior. This clearly distinguishes it from sibling tools like delete_directory and list_directory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use versus alternatives is provided, but the description's phrasing implies its purpose as the directory creation tool. It does not mention prerequisites or scenarios where a different tool would be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_directoryB

Delete a directory and optionally all of its contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the directory to delete
recursiveNoDelete directory recursively (default: true)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of explaining destructive behavior. It mentions 'optionally all of its contents', which hints at recursive deletion, but it does not disclose that deletion is permanent, that recursive defaults to true, or what happens when a non-empty directory is targeted without recursive. This is a significant gap for a deletion tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It conveys the core purpose and the optional recursive behavior without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool is simple, the description lacks critical context for safe usage. It does not mention that the default recursive value is true, which means contents are deleted by default, nor does it describe return values or error conditions. For a destructive operation, this leaves the agent under-informed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's phrase 'optionally all of its contents' loosely maps to the recursive parameter, but it adds no new details beyond the schema's own description. The schema already explains both parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete a directory') and the resource (a directory), which is specific and unambiguous. It also mentions the optional recursive behavior, and the sibling tools include delete_file and create_directory, making it easy to distinguish.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It does not mention exclusions (e.g., non-empty directories without recursive), prerequisites, or safety checks. The only implicit clue is the word 'directory', but there is no direct comparison to delete_file or other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_fileB

Delete a specific file from the filesystem.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to delete

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It simply restates the operation ('Delete a specific file') without revealing that deletion is irreversible, what error conditions may occur, or whether special permissions are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with the key information front-loaded. Every word contributes to the meaning, with no unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive tool with no annotations and no output schema, yet the description only states the basic action. It lacks critical context such as permanence, usage alternatives, and preconditions, making it under-specified for an agent to use safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the single 'path' parameter with 100% coverage. The description adds no additional meaning beyond the schema, so the baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the specific resource ('a specific file from the filesystem'). It effectively distinguishes this tool from sibling tools like delete_directory and read_file by explicitly targeting files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention delete_directory for directories or caution when deleting, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_fileA

Update an existing file by replacing target text with new text.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to edit
targetYesExact string content to replace
replaceAllNoWhether to replace all occurrences of target (default: false)
replacementYesNew replacement content

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It accurately states the core mutation (replacing text), but omits important behavioral details such as what happens when the target text is not found, whether changes are reversible, and any permission requirements. The replaceAll semantics are left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with no filler or redundant content. It front-loads the key verb 'Update' and the resource 'existing file'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple edit tool, the description plus schema are mostly sufficient. However, with no annotations and no output schema, the description lacks information about failure behavior (e.g., target not found) and return values, which an agent would need to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for path, target, replaceAll, and replacement. The tool description only restates 'target text' and 'new text', adding no additional semantic detail beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Update an existing file') with a specific method ('replacing target text with new text'), distinguishing it from sibling tools like write_file or create_directory. The verb and resource are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'existing file' clearly indicates this tool is for modifying existing files, not creating or reading. This provides clear context for when to use it, though it does not explicitly name alternative tools or exclusion scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_file_infoA

Get metadata for a file or directory (size, modification date, path stats).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to file or directory

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing behavior. It explicitly states that this is a metadata retrieval operation and lists the type of information returned, implying a safe, read-only action. While it doesn't cover error cases or permissions, the simplicity of the operation makes this sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that delivers the essential information without unnecessary words. It is front-loaded with the main verb and object, making it immediately understandable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description adequately covers the purpose and expected outcome. It could mention the return format or potential errors, but these are not essential given the tool's simplicity and the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a clear description for the only parameter ('path'), achieving 100% coverage. The tool description does not add additional semantic details about the path parameter beyond what the schema states, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Get metadata') and resource ('file or directory'), and provides concrete examples of what is returned (size, modification date, path stats). This distinguishes it from sibling tools that read content, write, delete, or list directories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: when metadata rather than content is needed, this tool is appropriate. It does not explicitly name alternatives like 'read_file' for content, but the context is clear enough for an agent to infer the correct choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_directoryA

List all items inside a directory with metadata (size, isDirectory, modified date).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the directory to list

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the output metadata (size, isDirectory, modified date) but does not state edge-case behavior such as error handling for nonexistent paths, whether hidden files are included, or whether it follows symlinks. The verb 'list' implies a non-destructive read, but this is not explicitly confirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the action and resource, then immediately provides the useful metadata detail. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter directory listing tool, the description adequately covers purpose and expected output. It lacks edge-case behavior, but the tool's simplicity and the metadata mention make it sufficiently complete for most use cases. No output schema exists, so the description partially fills that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description does not add meaningful parameter semantics beyond the schema. The schema already states 'Path to the directory to list', and the description only repeats the directory concept. No additional constraints, formats, or usage details are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all items inside a directory with metadata (size, isDirectory, modified date).' This is a specific verb+resource combination that distinguishes it from siblings like read_file (reads file content) and get_file_info (single item info). The scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use: whenever you need to enumerate directory contents. It does not explicitly mention alternatives or exclusions, but the purpose is clear enough that an agent can infer appropriate usage. Sibling tools like search_files and get_file_info serve different purposes, making the intended use obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_fileA

Move or rename a file or directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesSource file/folder path
overwriteNoOverwrite destination if exists (default: false)
destinationYesDestination file/folder path

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action and gives no details about overwrite behavior (though the schema has an 'overwrite' parameter with default false), failure conditions, side effects, or any contextual behavior. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded. Every word is useful with no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 3 parameters and no output schema, the description is adequate but lacks any mention of return values, error handling, or overwrite semantics. It does not go beyond a basic statement of purpose, leaving some context gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (source, destination, overwrite) having a description. The tool description itself adds no additional explanation of parameter meanings or constraints, so it does not exceed the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Move or rename') and the resource ('file or directory'), which distinguishes it from sibling tools like read_file, write_file, and delete_file. The verb is specific and the scope is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose statement implies usage (when you want to move/rename a file or directory), but it does not explicitly mention alternatives or exclusions. There is no guidance on when not to use this tool or how it relates to siblings, so only implied usage is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_fileB

Read the complete content of a single text file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to read
encodingNoFile encoding (default: utf-8)utf-8

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It adds that the tool reads 'complete content' and 'text file,' which hints at non-truncation and file type limitations, but it does not explicitly state that it is non-destructive, how it handles errors, or any size limitsโ€”information needed for an agent to fully understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence that is immediately clear and free of any unnecessary words or filler. Every word serves a purpose, earning a perfect score for conciseness and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (a basic read operation) and the schema covering all parameters, the description is minimally adequate. However, without an output schema and with no mention of return value or error scenarios, it lacks some completeness that would be expected for a tool with no annotations. It is sufficient but leaves room for improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with descriptions for both path and encoding, so the baseline is 3. The description adds minimal extra meaning by implying that the path must be a single text file, but it does not elaborate on the encoding parameter or provide additional usage details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('read') and the resource ('a single text file'), with the word 'single' and 'complete content' distinguishing it from read_multiple_files and other file operations. This is a specific verb+resource pairing that leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives like read_multiple_files or search_files. The word 'single' implies it is for one file, but it does not explicitly state the exclusion of multiple files or point to the alternative, so the usage context is not clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_multiple_filesA

Read the contents of multiple files in a single request.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesArray of file paths to read

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It fails to mention behavior on missing files, partial failures, return format, size limits, or any side effects, which is a notable gap for a batch operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no wasted words. It is front-loaded with the action and resource, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool has one simple parameter and no output schema, the description lacks information about return format or error handling, which is relevant for a batch operation. It is minimally viable but leaves some ambiguity about what the response looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has full 100% coverage for the single 'paths' parameter, so the description does not need to add much. The description's 'multiple files' aligns with the schema's 'Array of file paths', but adds no extra semantic detail beyond what the schema already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads the contents of multiple files in one request, distinguishing it from the sibling read_file tool by the 'multiple files' and 'single request' qualifiers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for batch reading via 'multiple files in a single request', but it does not explicitly state when to prefer this over read_file or exclude scenarios like needing single file reads. No alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_filesB

Search for files within a directory matching a glob pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesGlob pattern to match files (e.g. '**/*.ts', '*.txt')
directoryYesBase directory to search within

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic operation (search by glob pattern) without mentioning return format, recursion behavior, error handling, or whether the search is read-only. This leaves the agent with significant uncertainty.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action ('Search for files') and then specifies the resource and criteria. Every word contributes to clarity, with no superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple 2-parameter tool with no output schema, so the description should explain what the tool returns (e.g., a list of matching file paths) and clarify whether the search is recursive. It does neither, leaving the agent to infer key usage details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full descriptions for both parameters (directory, pattern) with an example for pattern. The tool description adds no extra parameter semantics, but since schema coverage is 100%, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'search' with a clear resource ('files within a directory') and criteria ('matching a glob pattern'). This distinguishes it from sibling tools like read_file, write_file, and list_directory, making the purpose immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when one needs to locate files by pattern, but it does not provide explicit guidance on when to prefer this over sibling tools like list_directory (for listing entries) or read_file (for reading content). No exclusions or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_fileA

Create a new file or overwrite an existing file with text content.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to create or overwrite
contentYesText content to write into the file
overwriteNoWhether to overwrite if file exists (default: true)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It does explicitly state the destructive overwrite behavior, which is critical for a mutation tool. However, it omits other important details such as whether parent directories are created, what happens on failure, or any permission requirements, leaving a moderate transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence. It is front-loaded with the core action and avoids redundancy or filler, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool and rich schema, the description is adequate but not complete. It does not mention return values or error behavior (since no output schema exists), and it lacks usage guidance relative to sibling tools. It meets the minimum viable standard but leaves some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds minimal semantics beyond the schemaโ€”it mentions 'text content' but the schema already describes content as 'Text content to write into the file.' No additional parameter meaning is supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Create'/'overwrite') and explicit resource ('file'), making the tool's primary function unmistakable. It also naturally distinguishes this from sibling tools like read_file and edit_file by focusing solely on writing full text content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states the two use cases (create new or overwrite existing), giving clear context for when to use the tool. However, it does not explicitly mention alternatives or exclusions (e.g., 'for incremental edits, use edit_file'), so the guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv1.0.0
    • First observedcreate_directory
    • First observeddelete_directory
    • First observeddelete_file
    • First observededit_file
    • First observedget_file_info
    • First observedlist_directory
    • First observedmove_file
    • First observedread_file
    • First observedread_multiple_files
    • First observedsearch_files
    • First observedwrite_file

TDQS

A3.7/5.0
Disambiguation4/5

Each tool targets a distinct operation: read vs. read_multiple, write vs. edit, file vs. directory actions. get_file_info and list_directory might seem similar, but descriptions clarify that one returns metadata for a single path while the other lists directory contents.

Naming Consistency4/5

Most tool names follow a verb_noun pattern (read_file, write_file, delete_file, create_directory). Minor deviations include read_multiple_files (verb_phrase) and get_file_info (uses 'get' instead of 'read'), but the overall convention is consistent and readable.

Tool Count5/5

With 11 tools, the set is well-scoped for a file system MCP server. Each tool covers a necessary file or directory operation without unnecessary redundancy or bloat.

Completeness4/5

The tool surface covers core lifecycle operations for files and directories: create, read, update, delete, list, move, and search. A notable gap is the lack of a copy operation, but move_file and edit_file cover most workflows.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that enables AI assistants to perform comprehensive file operations including finding, reading, writing, editing, searching, moving, and copying files with security validations.
    7
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    A lightweight, stdio-based MCP server enabling AI assistants to perform local file system operations like reading, writing, searching, and executing commands.
    5,122
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server that enables AI to read, search, and edit local files securely without external data exposure, using local LLMs via Ollama and integrating with Open WebUI or Claude Desktop.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server enabling ChatGPT to interact with local filesystem via controlled file operations like read, write, edit, and search, with configurable guardrails for safety.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SohailShabbir867/file_mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server