Skip to main content
Glama
1999AZZAR

FileSystem MCP Server

by 1999AZZAR

FileSystem MCP Server

A comprehensive Model Context Protocol (MCP) server for advanced file system operations. This server provides structured file management capabilities including file operations, directory management, file watching, search functionality, and archiving operations.

Blotcat stamping cached metadata folders on a conveyor belt with a 5-minute TTL timer

Table of Contents

Related MCP server: AI FileSystem MCP

Features

Core File Operations

  • File Reading: Read files with optional encoding and range support

  • File Writing: Write content with encoding options and directory creation

  • File Copying: Copy files with timestamp preservation and overwrite control

  • File Moving: Move/rename files with conflict resolution

  • File Deletion: Delete files and directories with recursive options

  • File Information: Get detailed file metadata including permissions and timestamps

Directory Operations

  • Directory Creation: Create directories with recursive parent creation

  • Directory Listing: List contents with filtering, recursion, and depth control

  • File Finding: Find files using glob patterns with advanced filtering

  • Directory Size: Calculate directory sizes recursively with human-readable formatting

Advanced Operations

  • Text Search: Search for patterns in files with context and filtering

  • File Watching: Watch files and directories for changes with event handling

  • File Comparison: Compare files with whitespace and case sensitivity options

  • Archiving: Create and extract archives in multiple formats (ZIP, TAR, GZIP)

  • Batch Operations: Perform operations on multiple files efficiently

Enterprise Features

  • TypeScript: Fully typed with comprehensive error handling

  • Input Validation: Zod schema validation for all parameters

  • Error Recovery: Graceful error handling with detailed error messages

  • Resource Management: Automatic cleanup of watchers and resources

  • Performance: Optimized for large file operations and batch processing

  • Intelligent Caching: TTL-based caching system for file metadata and search results

  • MCP Resources: 7 specialized resources providing cached filesystem data and metadata

Available Resources

FileSystem MCP Server provides 7 specialized resources that offer cached file system data and intelligent metadata access with configurable TTL-based caching for optimal performance:

file://metadata/{path}

Returns cached metadata for files and directories including permissions, size, modification dates, and ownership.

Resource Details:

  • Purpose: Access file/directory metadata without repeated stat calls

  • Benefits: Faster file information queries, reduced I/O operations, metadata caching

  • Cache TTL: 5 minutes - balances metadata freshness with performance

  • Use Cases: File explorers, permission checking, size calculations, file monitoring

Response Format:

{
  "path": "/home/user/document.txt",
  "metadata": {
    "size": 1024,
    "permissions": "rw-r--r--",
    "owner": "user",
    "group": "users",
    "modified": "2025-11-02T10:30:00.000Z",
    "accessed": "2025-11-02T10:30:00.000Z",
    "created": "2025-11-01T15:20:00.000Z"
  },
  "cached": false,
  "timestamp": "2025-11-02T17:09:14.866Z"
}

file://directory/{path}

Provides cached directory listing with file details, sizes, and metadata for faster browsing.

Resource Details:

  • Purpose: Access directory contents without repeated directory reads

  • Benefits: Instant directory browsing, cached file listings, reduced I/O for navigation

  • Cache TTL: 5 minutes - keeps directory structure reasonably current

  • Use Cases: File managers, directory exploration, project navigation

Response Format:

{
  "path": "/home/user/projects",
  "contents": {
    "success": true,
    "data": {
      "items": [
        {
          "name": "app.js",
          "path": "/home/user/projects/app.js",
          "type": "file",
          "size": 2048,
          "permissions": "rw-r--r--",
          "modified": "2025-11-02T10:30:00.000Z"
        }
      ]
    }
  },
  "cached": false,
  "timestamp": "2025-11-02T17:09:14.866Z"
}

file://search/cache/{query}

Caches results from file content and pattern searches across the filesystem.

Resource Details:

  • Purpose: Cache expensive search operations across large codebases

  • Benefits: Fast repeated searches, reduced filesystem traversal, search result persistence

  • Cache TTL: 5 minutes - allows for reasonable search result freshness

  • Use Cases: Code search, content finding, pattern matching, file discovery

Response Format:

{
  "query": "function.*handleError",
  "results": {
    "success": true,
    "data": {
      "matches": [
        {
          "file": "/src/error-handler.js",
          "line": 15,
          "content": "function handleError(error) {",
          "context": ["// Error handling function", "function handleError(error) {", "  console.error(error);"]
        }
      ]
    }
  },
  "cached": false,
  "timestamp": "2025-11-02T17:09:14.866Z"
}

file://watch/status/{path}

Shows current status and recent events for file system watchers.

Resource Details:

  • Purpose: Monitor file watching status and recent change events

  • Benefits: Track active watchers, view recent file changes, debug watch operations

  • Cache TTL: 30 seconds - provides near real-time watch status

  • Use Cases: Development monitoring, file change tracking, watch debugging

Response Format:

{
  "path": "/home/user/projects",
  "isWatching": true,
  "lastEvents": [
    {
      "event": "change",
      "filename": "app.js",
      "timestamp": "2025-11-02T17:08:45.123Z"
    }
  ],
  "cached": false,
  "timestamp": "2025-11-02T17:09:14.866Z"
}

file://recent/{type}

Lists recently accessed files of specified type (read/write/modified).

Resource Details:

  • Purpose: Track recently accessed files for quick access and auditing

  • Benefits: Quick access to recently worked files, usage tracking, productivity insights

  • Cache TTL: 5 minutes - keeps recent file list reasonably current

  • Use Cases: File history, recent documents, usage analytics

Response Format:

{
  "type": "modified",
  "files": [
    {
      "path": "/home/user/document.txt",
      "accessed": "2025-11-02T17:05:00.000Z",
      "size": 1024
    }
  ],
  "count": 1,
  "cached": false,
  "timestamp": "2025-11-02T17:09:14.866Z"
}

file://structure/{path}

Provides hierarchical directory structure with file counts and size summaries.

Resource Details:

  • Purpose: Get complete directory tree structure with statistics

  • Benefits: Project overview, size analysis, structure visualization, disk usage tracking

  • Cache TTL: 5 minutes - balances structure accuracy with performance

  • Use Cases: Project analysis, disk cleanup, directory visualization

Response Format:

{
  "path": "/home/user/projects",
  "structure": {
    "name": "projects",
    "type": "directory",
    "path": "/home/user/projects",
    "children": [
      {
        "name": "src",
        "type": "directory",
        "path": "/home/user/projects/src",
        "size": 0
      },
      {
        "name": "README.md",
        "type": "file",
        "path": "/home/user/projects/README.md",
        "size": 2048
      }
    ],
    "stats": {
      "totalFiles": 5,
      "totalDirs": 3,
      "totalSize": 15360
    }
  },
  "cached": false,
  "timestamp": "2025-11-02T17:09:14.866Z"
}

file://content/preview/{path}

Generates cached preview of file content (first lines/chars) for quick inspection.

Resource Details:

  • Purpose: Preview file content without loading entire files

  • Benefits: Quick file inspection, content type detection, safe file preview

  • Cache TTL: 5 minutes - keeps previews reasonably fresh

  • Use Cases: File exploration, content verification, type detection, safe browsing

Response Format:

{
  "path": "/home/user/document.txt",
  "preview": {
    "path": "/home/user/document.txt",
    "type": "file",
    "preview": "This is the beginning of the document...\nIt contains important information...",
    "canPreview": true,
    "size": 1024,
    "mimeType": "text/plain",
    "encoding": "utf8"
  },
  "cached": false,
  "timestamp": "2025-11-02T17:09:14.866Z"
}

Installation

  1. Clone the repository:

git clone https://github.com/1999AZZAR/filesystem-mcp-server.git
cd filesystem-mcp-server
  1. Install dependencies:

npm install
  1. Build the project:

npm run build
  1. Test the server:

npm start

Configuration

For Cursor IDE

Add this server to your Cursor MCP configuration (~/.cursor/mcp.json):

{
  "mcpServers": {
    "filesystem-mcp": {
      "command": "node",
      "args": ["/path/to/filesystem-mcp-server/dist/index.js"],
      "env": {}
    }
  }
}

For Claude Desktop

Add this server to your Claude Desktop configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "filesystem-mcp": {
      "command": "node",
      "args": ["/path/to/filesystem-mcp-server/dist/index.js"],
      "env": {}
    }
  }
}

Available Tools

Blotcat operating a complex MCP switchboard with 18 tool sockets for read, write, watch, search, and archive

This MCP server provides 18 powerful tools for comprehensive file system management:

1. File Operations

read_file - Read File Content

Read file content with optional encoding and range support.

Parameters:

  • path (required): Path to the file to read

  • encoding (optional): File encoding - "utf8", "utf16le", "latin1", "base64", "hex", "ascii", "binary" (default: "utf8")

  • offset (optional): Byte offset to start reading from

  • limit (optional): Maximum number of bytes to read

Example:

{
  "name": "read_file",
  "arguments": {
    "path": "/path/to/file.txt",
    "encoding": "utf8",
    "offset": 0,
    "limit": 1024
  }
}

Response:

{
  "success": true,
  "message": "File read successfully",
  "path": "/path/to/file.txt",
  "data": {
    "content": "File content here...",
    "encoding": "utf8",
    "size": 1024
  }
}

write_file - Write File Content

Write content to file with optional encoding and directory creation.

Parameters:

  • path (required): Path to the file to write

  • content (required): Content to write to the file

  • encoding (optional): File encoding (default: "utf8")

  • createDirs (optional): Create parent directories if they don't exist (default: false)

  • append (optional): Append to file instead of overwriting (default: false)

Example:

{
  "name": "write_file",
  "arguments": {
    "path": "/path/to/file.txt",
    "content": "Hello, World!",
    "encoding": "utf8",
    "createDirs": true
  }
}

copy_file - Copy File

Copy file from source to destination with options.

Parameters:

  • source (required): Source file path

  • destination (required): Destination file path

  • overwrite (optional): Overwrite destination if it exists (default: false)

  • preserveTimestamps (optional): Preserve file timestamps (default: true)

Example:

{
  "name": "copy_file",
  "arguments": {
    "source": "/path/to/source.txt",
    "destination": "/path/to/destination.txt",
    "overwrite": true,
    "preserveTimestamps": true
  }
}

move_file - Move File

Move file from source to destination.

Parameters:

  • source (required): Source file path

  • destination (required): Destination file path

  • overwrite (optional): Overwrite destination if it exists (default: false)

Example:

{
  "name": "move_file",
  "arguments": {
    "source": "/path/to/source.txt",
    "destination": "/path/to/destination.txt",
    "overwrite": false
  }
}

delete_file - Delete File or Directory

Delete file or directory with options.

Parameters:

  • path (required): Path to delete

  • recursive (optional): Recursively delete directories (default: false)

  • force (optional): Force deletion even if path doesn't exist (default: false)

Example:

{
  "name": "delete_file",
  "arguments": {
    "path": "/path/to/file.txt",
    "recursive": false,
    "force": false
  }
}

get_file_info - Get File Information

Get detailed file information including metadata.

Parameters:

  • path (required): Path to get information for

  • followSymlinks (optional): Follow symbolic links (default: true)

Example:

{
  "name": "get_file_info",
  "arguments": {
    "path": "/path/to/file.txt",
    "followSymlinks": true
  }
}

Response:

{
  "success": true,
  "message": "File information retrieved successfully",
  "path": "/path/to/file.txt",
  "data": {
    "name": "file.txt",
    "path": "/path/to/file.txt",
    "type": "file",
    "size": 1024,
    "isDirectory": false,
    "isFile": true,
    "isSymlink": false,
    "permissions": "644",
    "createdAt": "2024-01-15T10:30:00.000Z",
    "modifiedAt": "2024-01-15T10:30:00.000Z",
    "accessedAt": "2024-01-15T10:30:00.000Z",
    "extension": ".txt",
    "mimeType": "text/plain"
  }
}

2. Directory Operations

create_directory - Create Directory

Create directory with optional recursive creation.

Parameters:

  • path (required): Directory path to create

  • recursive (optional): Create parent directories recursively (default: false)

  • mode (optional): Directory permissions in octal format

Example:

{
  "name": "create_directory",
  "arguments": {
    "path": "/path/to/new/directory",
    "recursive": true,
    "mode": "755"
  }
}

list_directory - List Directory Contents

List directory contents with optional filtering and recursion.

Parameters:

  • path (required): Directory path to list

  • recursive (optional): List contents recursively (default: false)

  • includeHidden (optional): Include hidden files and directories (default: false)

  • maxDepth (optional): Maximum depth for recursive listing

  • fileTypes (optional): Filter by file types - ["file", "directory", "symlink"]

Example:

{
  "name": "list_directory",
  "arguments": {
    "path": "/path/to/directory",
    "recursive": true,
    "includeHidden": false,
    "maxDepth": 3,
    "fileTypes": ["file", "directory"]
  }
}

Response:

{
  "success": true,
  "message": "Directory listed successfully (15 items)",
  "path": "/path/to/directory",
  "data": {
    "items": [
      {
        "name": "file1.txt",
        "path": "/path/to/directory/file1.txt",
        "type": "file",
        "size": 1024,
        "isDirectory": false,
        "isFile": true,
        "isSymlink": false,
        "permissions": "644",
        "createdAt": "2024-01-15T10:30:00.000Z",
        "modifiedAt": "2024-01-15T10:30:00.000Z",
        "accessedAt": "2024-01-15T10:30:00.000Z",
        "extension": ".txt",
        "mimeType": "text/plain"
      }
    ],
    "count": 15,
    "recursive": true,
    "includeHidden": false
  }
}

find_files - Find Files

Find files matching a pattern.

Parameters:

  • pattern (required): Glob pattern to match files

  • directory (optional): Directory to search in (default: ".")

  • maxDepth (optional): Maximum search depth

  • includeHidden (optional): Include hidden files (default: false)

  • fileTypes (optional): Filter by file types

  • caseSensitive (optional): Case-sensitive pattern matching (default: false)

Example:

{
  "name": "find_files",
  "arguments": {
    "pattern": "*.txt",
    "directory": "/path/to/search",
    "maxDepth": 3,
    "includeHidden": false,
    "fileTypes": ["file"],
    "caseSensitive": false
  }
}

get_directory_size - Get Directory Size

Get directory size recursively.

Parameters:

  • path (required): Directory path

Example:

{
  "name": "get_directory_size",
  "arguments": {
    "path": "/path/to/directory"
  }
}

Response:

{
  "success": true,
  "message": "Directory size calculated successfully",
  "path": "/path/to/directory",
  "data": {
    "totalSize": 1048576,
    "fileCount": 25,
    "dirCount": 5,
    "humanReadable": "1.00 MB"
  }
}

3. Advanced Operations

Blotcat multitasking with a magnifying glass for fast search and a zipper-box archiver

search_in_files - Search in Files

Search for text patterns in files.

Parameters:

  • pattern (required): Text pattern to search for

  • directory (optional): Directory to search in (default: ".")

  • filePattern (optional): Glob pattern for files to search

  • maxDepth (optional): Maximum search depth

  • includeHidden (optional): Include hidden files (default: false)

  • caseSensitive (optional): Case-sensitive search (default: false)

  • wholeWord (optional): Match whole words only (default: false)

  • contextLines (optional): Number of context lines around matches (default: 2)

Example:

{
  "name": "search_in_files",
  "arguments": {
    "pattern": "function",
    "directory": "/path/to/code",
    "filePattern": "*.js",
    "maxDepth": 2,
    "includeHidden": false,
    "caseSensitive": false,
    "wholeWord": true,
    "contextLines": 3
  }
}

Response:

{
  "success": true,
  "message": "Search completed: 5 files with matches",
  "path": "/path/to/code",
  "data": {
    "results": [
      {
        "path": "/path/to/code/file.js",
        "matches": [
          {
            "line": 10,
            "column": 1,
            "text": "function",
            "context": "// This is a function\nexport function myFunction() {\n  return 'hello';\n}"
          }
        ],
        "fileInfo": {
          "name": "file.js",
          "path": "/path/to/code/file.js",
          "type": "file",
          "size": 2048,
          "isDirectory": false,
          "isFile": true,
          "isSymlink": false,
          "permissions": "644",
          "createdAt": "2024-01-15T10:30:00.000Z",
          "modifiedAt": "2024-01-15T10:30:00.000Z",
          "accessedAt": "2024-01-15T10:30:00.000Z",
          "extension": ".js",
          "mimeType": "application/javascript"
        }
      }
    ],
    "totalMatches": 8,
    "pattern": "function",
    "directory": "/path/to/code"
  }
}

watch_file - Watch File or Directory

Watch file or directory for changes.

Parameters:

  • path (required): Path to watch

  • recursive (optional): Watch recursively (default: false)

  • ignoreInitial (optional): Ignore initial events (default: true)

  • ignored (optional): Patterns to ignore

Example:

{
  "name": "watch_file",
  "arguments": {
    "path": "/path/to/watch",
    "recursive": true,
    "ignoreInitial": true,
    "ignored": ["*.tmp", "node_modules/**"]
  }
}

Response:

{
  "success": true,
  "message": "File watching started successfully",
  "path": "/path/to/watch",
  "data": {
    "watching": true,
    "recursive": true,
    "ignoreInitial": true,
    "events": [
      {
        "type": "add",
        "path": "/path/to/watch/newfile.txt",
        "stats": {
          "name": "newfile.txt",
          "path": "/path/to/watch/newfile.txt",
          "type": "file",
          "size": 0,
          "isDirectory": false,
          "isFile": true,
          "isSymlink": false,
          "permissions": "644",
          "createdAt": "2024-01-15T10:30:00.000Z",
          "modifiedAt": "2024-01-15T10:30:00.000Z",
          "accessedAt": "2024-01-15T10:30:00.000Z"
        }
      }
    ]
  }
}

stop_watching - Stop Watching

Stop watching a file or directory.

Parameters:

  • path (required): Path to stop watching

Example:

{
  "name": "stop_watching",
  "arguments": {
    "path": "/path/to/watch"
  }
}

compare_files - Compare Files

Compare two files and show differences.

Parameters:

  • file1 (required): First file path

  • file2 (required): Second file path

  • ignoreWhitespace (optional): Ignore whitespace differences (default: false)

  • ignoreCase (optional): Ignore case differences (default: false)

Example:

{
  "name": "compare_files",
  "arguments": {
    "file1": "/path/to/file1.txt",
    "file2": "/path/to/file2.txt",
    "ignoreWhitespace": true,
    "ignoreCase": false
  }
}

Response:

{
  "success": true,
  "message": "Files differ: 3 differences found",
  "path": "/path/to/file1.txt",
  "data": {
    "identical": false,
    "differences": [
      {
        "line": 5,
        "type": "modified",
        "content": "- old content\n+ new content"
      }
    ],
    "totalDifferences": 3,
    "file1": {
      "path": "/path/to/file1.txt",
      "lines": 10,
      "size": 1024
    },
    "file2": {
      "path": "/path/to/file2.txt",
      "lines": 12,
      "size": 1156
    },
    "options": {
      "ignoreWhitespace": true,
      "ignoreCase": false
    }
  }
}

archive_files - Create Archive

Create archive from files.

Parameters:

  • files (required): Files to archive

  • archivePath (required): Archive file path

  • format (optional): Archive format - "zip", "tar", "gzip" (default: "zip")

  • compressionLevel (optional): Compression level (0-9, default: 6)

  • includeHidden (optional): Include hidden files (default: false)

  • excludePatterns (optional): Patterns to exclude

Example:

{
  "name": "archive_files",
  "arguments": {
    "files": ["/path/to/file1.txt", "/path/to/file2.txt"],
    "archivePath": "/path/to/archive.zip",
    "format": "zip",
    "compressionLevel": 6,
    "includeHidden": false,
    "excludePatterns": ["*.tmp"]
  }
}

Response:

{
  "success": true,
  "message": "Archive created successfully",
  "path": "/path/to/archive.zip",
  "data": {
    "archivePath": "/path/to/archive.zip",
    "format": "zip",
    "compressionLevel": 6,
    "size": 2048,
    "filesCount": 2,
    "humanReadable": "2.00 KB"
  }
}

extract_archive - Extract Archive

Extract archive to destination.

Parameters:

  • archivePath (required): Archive file path

  • destination (required): Extraction destination

Example:

{
  "name": "extract_archive",
  "arguments": {
    "archivePath": "/path/to/archive.zip",
    "destination": "/path/to/extract"
  }
}

Usage Examples

Basic File Operations

// Read a file
const readResult = await mcpClient.callTool('read_file', {
  path: '/path/to/file.txt',
  encoding: 'utf8'
});

// Write a file
const writeResult = await mcpClient.callTool('write_file', {
  path: '/path/to/newfile.txt',
  content: 'Hello, World!',
  createDirs: true
});

// Copy a file
const copyResult = await mcpClient.callTool('copy_file', {
  source: '/path/to/source.txt',
  destination: '/path/to/destination.txt',
  overwrite: true
});

Directory Management

// Create directory
const createDirResult = await mcpClient.callTool('create_directory', {
  path: '/path/to/new/directory',
  recursive: true
});

// List directory contents
const listResult = await mcpClient.callTool('list_directory', {
  path: '/path/to/directory',
  recursive: true,
  includeHidden: false,
  maxDepth: 3
});

// Find files
const findResult = await mcpClient.callTool('find_files', {
  pattern: '*.js',
  directory: '/path/to/code',
  maxDepth: 2,
  fileTypes: ['file']
});

Advanced Operations

// Search in files
const searchResult = await mcpClient.callTool('search_in_files', {
  pattern: 'function',
  directory: '/path/to/code',
  filePattern: '*.js',
  caseSensitive: false,
  wholeWord: true,
  contextLines: 3
});

// Watch for changes
const watchResult = await mcpClient.callTool('watch_file', {
  path: '/path/to/watch',
  recursive: true,
  ignoreInitial: true
});

// Compare files
const compareResult = await mcpClient.callTool('compare_files', {
  file1: '/path/to/file1.txt',
  file2: '/path/to/file2.txt',
  ignoreWhitespace: true
});

// Create archive
const archiveResult = await mcpClient.callTool('archive_files', {
  files: ['/path/to/file1.txt', '/path/to/file2.txt'],
  archivePath: '/path/to/archive.zip',
  format: 'zip',
  compressionLevel: 6
});

Development

Project Structure

filesystem-mcp-server/
├── src/
│   ├── index.ts              # Main entry point
│   ├── server.ts             # MCP server implementation
│   ├── file-operations.ts    # Core file operations
│   ├── directory-operations.ts # Directory management
│   ├── advanced-operations.ts # Advanced features
│   └── types.ts              # Type definitions and schemas
├── dist/                     # Compiled JavaScript output
├── __tests__/               # Test files
├── package.json             # Dependencies and scripts
├── tsconfig.json            # TypeScript configuration
├── jest.config.js           # Jest testing configuration
└── README.md                # This documentation

Development Commands

# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode with hot reload
npm run dev

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Run linting
npm run lint

# Fix linting issues
npm run lint:fix

# Clean build directory
npm run clean

# Start production server
npm start

Testing

The server includes comprehensive Jest tests:

npm test

Test Coverage:

  • File operations (read, write, copy, move, delete)

  • Directory operations (create, list, find)

  • Advanced operations (search, watch, compare, archive)

  • Error handling and edge cases

  • Input validation and schema validation

Error Handling

The server includes comprehensive error handling:

  • Input Validation: All parameters validated with Zod schemas

  • File System Errors: Graceful handling of permission, not found, and access errors

  • Resource Cleanup: Automatic cleanup of watchers and resources

  • Process Management: Proper signal handling for graceful shutdown

Performance Considerations

  • Streaming: Large file operations use streaming for memory efficiency

  • Batch Operations: Multiple file operations optimized for performance

  • Caching: File information cached for repeated operations

  • Resource Management: Automatic cleanup prevents memory leaks

Security Considerations

  • Path Validation: All paths validated to prevent directory traversal attacks

  • Permission Checks: File operations respect system permissions

  • Input Sanitization: All inputs validated and sanitized

  • Error Information: Error messages don't expose sensitive information

License

MIT License - see LICENSE file for details.

Contributing

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/amazing-feature

  3. Make your changes and add tests

  4. Run the test suite: npm test

  5. Commit your changes: git commit -m 'Add amazing feature'

  6. Push to the branch: git push origin feature/amazing-feature

  7. Open a Pull Request

Support

For issues and questions:

  • GitHub Issues: Open an issue

  • Documentation: Check this README for comprehensive usage examples

  • Examples: See the examples section above for common use cases


FileSystem MCP Server - Comprehensive file system operations for the Model Context Protocol ecosystem.

Available Tools

16 tools
archive_filesB

Create archive from files

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesFiles to archive
formatNoArchive formatzip
archivePathYesArchive file path
includeHiddenNoInclude hidden files
excludePatternsNoPatterns to exclude
compressionLevelNoCompression level (0-9)

TDQS

B3.3/5.0
Behavior2/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 behavioral disclosure. It only states the core action and fails to mention side effects such as overwriting an existing archive, whether it returns a status, or how it handles directories and hidden files beyond the schema defaults.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler. It is concise, though it sacrifices some detail that could be helpful for a tool with six parameters.

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?

The description is minimal for a tool with six parameters and no output schema or annotations. It omits return behavior, side effects, and usage context, making it insufficient for an agent to fully understand the tool's behavior without additional inference.

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 provides comprehensive descriptions for all 6 parameters (100% coverage), so the description need not add parameter details. The description does not go beyond the schema, but 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 uses a specific verb 'Create' with a clear resource 'archive from files'. It distinguishes this tool from its sibling 'extract_archive' and other file operations like copy or move.

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 intended use is implied by the name and description, but there is no explicit guidance on when to use this tool versus alternatives, no mention of exclusions, and no reference to sibling tools.

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

compare_filesB

Compare two files and show differences

ParametersJSON Schema
NameRequiredDescriptionDefault
file1YesFirst file path
file2YesSecond file path
ignoreCaseNoIgnore case differences
ignoreWhitespaceNoIgnore whitespace differences

TDQS

B3.2/5.0
Behavior2/5

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

Since no annotations are available, the description carries the full burden of disclosing safety and behavior. It implies a read-only operation but does not state whether files are modified, what happens if paths are invalid, or what the difference output format is.

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, succinct sentence that gets straight to the point. It contains no filler and is highly scannable.

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?

With no output schema and no annotations, the description should explain the tool's return value and operational details. It only covers the basic purpose, leaving significant gaps about output format, error handling, and behavioral guarantees.

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?

All four parameters have descriptions in the schema (100% coverage), so the schema fully documents the inputs. The tool description adds no further parameter semantics beyond what the schema already provides.

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 'compare' targeting 'two files' and indicates the output ('show differences'). This clearly distinguishes it from sibling tools like read_file or write_file.

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 provides no guidance on when to use this tool over alternatives, nor any exclusions or context about file types. It simply states what it does without explaining when it's the right choice.

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

copy_fileB

Copy file from source to destination

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesSource file path
overwriteNoOverwrite destination if it exists
destinationYesDestination file path
preserveTimestampsNoPreserve file timestamps

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 full burden. It only states the action and does not disclose overwrite behavior, permissions required, or error conditions. The schema provides defaults but the description adds no behavioral context.

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 one short sentence, direct and front-loaded, with no filler. Every word earns its place.

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?

The description is minimal and lacks contextual details such as overwrite policy or when to use copy versus move. With no annotations and no output schema, the description does not provide enough context for an agent to fully understand the tool's behavior in edge cases.

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 descriptions for all four parameters. The description adds no additional parameter semantics beyond restating source and destination, so 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 clearly states the operation: 'Copy file from source to destination', identifying the specific verb (copy) and resource (file), which distinguishes it from sibling tools like move_file or read_file.

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?

Usage is implied by the verb 'copy', but no explicit guidance is given on when to use this tool versus alternatives like move_file, nor any prerequisites or exclusions.

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

create_directoryA

Create directory with optional recursive creation

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDirectory permissions in octal format
pathYesDirectory path to create
recursiveNoCreate parent directories recursively

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 must carry behavioral disclosure. It only mentions optional recursive creation, but does not disclose behavior when directory exists, error conditions, or the effect of the 'mode' parameter. Significant gaps remain.

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?

A single concise sentence that front-loads the core purpose. No wasted words or filler; ideal for a simple tool.

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 creation tool with full schema coverage, the description is adequate but misses key behavioral context like handling of existing directories and permission implications. It covers the basics but not enough for a fully informed invocation.

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% with descriptions for all three parameters. The description adds 'recursive' context but does not go beyond the schema. Baseline 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 the verb 'Create' with the resource 'directory', and 'optional recursive creation' distinguishes it from sibling file operations. It is specific and unambiguous.

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 usage is implied: it is the only tool that creates directories among siblings, but there is no explicit guidance on when to use it or when not to. No alternatives are mentioned.

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

delete_fileC

Delete file or directory

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to delete
forceNoForce deletion even if path doesn't exist
recursiveNoRecursively delete directories

TDQS

C2.7/5.0
Behavior1/5

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

With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It simply says 'Delete file or directory' without mentioning that deletion is permanent, that recursive deletion is required for non-empty directories, that force affects error behavior, or that permission may be required. This is a severe lack of transparency for a mutating operation.

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

Conciseness3/5

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

The description is a single, lean sentence with no wasted words, which is structurally concise. However, it is so brief that it omits critical behavioral context, making it under-specified rather than appropriately concise. It serves as a minimal purpose statement but lacks substance.

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

Completeness1/5

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

This is a mutation tool with no annotations, no output schema, and a three-parameter input schema. The description offers no information about permanent deletion, directory handling, error cases, return values, or side effects. Given the complexity of deletion semantics (recursion, force, non-existent paths), the description is completely inadequate for an agent to invoke the tool safely and correctly.

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 covers 100% of parameters with descriptions for path, force, and recursive, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides, so it neither helps nor hurts parameter understanding.

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 'Delete file or directory' clearly states the action (delete) and the resource (file or directory), distinguishing it from all sibling tools which perform read, write, copy, move, etc. operations. It is specific and unambiguous about the tool's primary function.

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 provides no guidance on when to use this tool compared to alternatives, nor does it mention prerequisites, safety considerations, or situations where deletion might not be appropriate. The sibling tools do not include another delete operation, so usage is implied, but the description itself offers no exclusions or context.

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

extract_archiveC

Extract archive to destination

ParametersJSON Schema
NameRequiredDescriptionDefault
archivePathYesArchive file path
destinationYesExtraction destination

TDQS

C2.8/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 action without revealing whether existing files are overwritten, whether the destination directory is created if missing, what archive formats are supported, or how errors are handled. For a mutation-like tool, this is a significant 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.

Conciseness3/5

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

The description is extremely concise (5 words), which is efficient, but it is so terse that it sacrifices essential information. While every word earns its place, the resulting under-specification makes it less useful than a slightly longer description would be. It is appropriately front-loaded, but the size is borderline insufficient.

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?

With only two simple parameters, no output schema, and no annotations, the description is the primary source of information. It fails to mention destination directory creation, overwrite policy, supported archive formats, return value, or error behavior. For a tool that likely performs side-effects (extraction), this is incomplete and leaves the agent guessing.

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 provides descriptions for both parameters ('Archive file path' and 'Extraction destination'), giving 100% coverage. The description text adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate. The schema descriptions are adequate but not enriched by the tool description.

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

Purpose4/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 ('Extract archive to destination') with a specific verb and resource. It distinguishes itself from the sibling tool 'archive_files' by explicitly being the extraction counterpart. However, it doesn't mention supported archive formats or other clarifying details, so it stops short of a 5.

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 guidance on when to use this tool versus alternatives. It does not mention that this is meant for extracting archives created by 'archive_files' or any other contextual use case. There are no explicit exclusions or alternative recommendations.

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

find_filesC

Find files matching a pattern

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesGlob pattern to match files
maxDepthNoMaximum search depth
directoryNoDirectory to search in.
fileTypesNoFilter by file types
caseSensitiveNoCase-sensitive pattern matching
includeHiddenNoInclude hidden files

TDQS

C2.9/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 disclosure. It only states the tool finds files but omits critical behavior such as recursive search, handling of hidden files, case sensitivity, or return format. The agent cannot assess safety or side effects since read-only vs. write nature is not mentioned.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler words, making it highly concise. However, it is under-specified, so while the brevity is admirable, it sacrifices informative content. Still, for what it says, it earns high marks on structure.

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?

Given the tool has 6 parameters, no output schema, and no annotations, the one-sentence description is far from complete. It lacks details on return values, default search behavior, and parameter interactions. The agent would need to rely solely on the schema, which may not convey the full operational context.

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 provides 100% description coverage for all six parameters, so the baseline is 3. The description adds no additional parameter semantics beyond the 'pattern' reference, which is already documented in the schema. It doesn't compensate for any gaps because none exist.

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

Purpose4/5

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

The description 'Find files matching a pattern' uses a clear verb and resource, and the 'matching a pattern' qualifier distinguishes it from static listing. However, it doesn't explicitly differentiate from sibling tools like list_directory or search_in_files, though the pattern-based intent is clear.

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 instead of alternatives. There is no mention of use cases, exclusions, or how it relates to tools like search_in_files (content search) or list_directory (simple listing), leaving the agent to infer the appropriate context.

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

get_directory_sizeA

Get directory size recursively

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits but only adds 'recursively', which indicates traversal behavior. It does not mention potential performance cost on large directories, symlink handling, or return value format, leaving significant behavioral ambiguity.

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 immediately conveys the core functionality with no wasted words, perfectly front-loaded.

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 one-parameter tool, the description is adequately complete on purpose, but lacks return value details and performance caveats. Given no output schema, the description should clarify what the tool returns, which it does not.

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 describes 'path' as a directory path, so the description adds minimal semantic value beyond the schema. Baseline 3 applies because schema coverage is 100% and the single parameter is self-explanatory.

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 'Get directory size recursively' clearly states the action (get size), the resource (directory), and the scope (recursively), distinguishing it from sibling tools that handle file reading, writing, and listing without any size-related functionality.

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 through its explicit 'recursively' qualifier, but does not provide explicit when-to-use guidance or mention alternatives. Since no sibling tool computes directory size, the intended context is inferred rather than directly stated.

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

get_file_infoC

Get detailed file information including metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to get information for
followSymlinksNoFollow symbolic links

TDQS

C2.9/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 behavioral disclosure burden. It only mentions the generic 'detailed file information including metadata' without specifying return format, error behavior, permissions, or side effects. There is no output schema to compensate.

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 redundant words. It is front-loaded with the core purpose and is appropriately sized for a simple file-info tool.

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?

Although the tool has only two parameters, the absence of an output schema and annotations means the description must convey what 'detailed file information' actually includes. It does not specify return fields, whether it works on directories, or error conditions, leaving the agent under-informed for correct invocation and result interpretation.

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 describes both parameters (path, followSymlinks) with clear descriptions, providing 100% coverage. The tool description adds no additional parameter semantics beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool retrieves detailed file information including metadata, which differentiates it from content-reading tools like read_file. However, it does not explicitly distinguish from list_directory or other inspection tools, so it lacks sibling differentiation.

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 like read_file or list_directory. The description does not explain scenarios where get_file_info is preferred or exclude cases where siblings are better.

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

list_directoryB

List directory contents with optional filtering and recursion

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path to list
maxDepthNoMaximum depth for recursive listing
fileTypesNoFilter by file types
recursiveNoList contents recursively
includeHiddenNoInclude hidden files and directories

TDQS

B3.2/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 transparency burden. It vaguely mentions 'optional filtering and recursion' but does not detail behaviors like hidden file handling, symlink follow behavior, or output format. The description fails to disclose these important execution details.

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 filler. It front-loads the core action ('List directory contents') and the key options ('optional filtering and recursion') without waste.

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?

The tool has 5 parameters and no output schema or annotations, yet the description does not explain what the returned listing looks like, error conditions, or parameter interactions (e.g., maxDepth only applies when recursive is true). The description is too brief to fully support agent invocation in complex scenarios.

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 for parameter semantics is 3. The description's phrase 'optional filtering and recursion' provides a high-level summary but does not add relationships or constraints beyond what the schema already documents. It adds minimal value over the structured parameter descriptions.

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 ('List') and the target ('directory contents'), with mention of optional filtering and recursion, making the tool's function immediately obvious. It distinguishes from sibling tools like read_file and write_file, which handle file content operations.

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 provides no guidance on when to use this tool versus alternatives such as find_files or search_in_files. It neither states use cases nor exclusions, leaving the agent without context for tool selection.

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

move_fileB

Move file from source to destination

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesSource file path
overwriteNoOverwrite destination if it exists
destinationYesDestination file path

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 carries the full burden of behavioral disclosure. It fails to mention what happens to the source file after moving, how the overwrite parameter affects behavior, whether the operation is atomic, or what errors can occur. The only clue is the word 'move,' which implies source removal but lacks detail.

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: 'Move file from source to destination.' It is front-loaded with the action and resource, contains no extraneous words, and fully earns its place.

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 move operation with two required parameters and an optional overwrite flag, the description is minimally adequate, but it lacks crucial behavioral context such as overwrite implications and error handling. The presence of sibling tools like copy_file highlights the need for clearer differentiation, but the description itself does not address that. Overall, it is usable but incomplete for an AI agent.

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 all three parameters (source, destination, overwrite), giving 100% schema coverage. The description adds no new semantic details about parameters, so it neither enhances nor detracts from the schema; the baseline 3 applies.

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 'Move file from source to destination' uses a specific verb and resource, clearly distinguishing the operation from siblings like copy_file or delete_file. The action is unambiguous and directly tied to the tool's functionality.

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 provides no guidance on when to use this tool versus alternatives such as copy_file or write_file. It does not mention any prerequisites, exclusions, or context-specific recommendations, leaving the agent to infer usage from the tool name alone.

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

read_fileA

Read file content with optional encoding and range

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to read
limitNoMaximum number of bytes to read
offsetNoByte offset to start reading from
encodingNoFile encodingutf8

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the transparency burden. It discloses that this is a read operation with optional encoding/range, implying non-destructiveness, but does not mention error behaviors, permissions, or return format.

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 one front-loaded sentence: 'Read file content with optional encoding and range'. Every word earns its place, with no filler or redundancy.

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 read tool, the description adequately conveys the return value (file content) and key options. Given no output schema, it could benefit from a note on return type or behavior on missing files, but it is nearly complete for the complexity level.

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% with all four parameters (path, limit, offset, encoding) described. The description's mention of 'encoding and range' reinforces the schema but adds no new parameter-specific semantics.

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 'Read file content with optional encoding and range' uses a specific verb (read) and resource (file content), clearly distinguishing this from sibling mutation tools like write_file/delete_file and metadata tools like get_file_info.

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?

Usage is implied by the description—it reads file content—but there are no explicit when-to-use instructions or exclusions, such as 'use get_file_info for metadata' or 'use search_in_files for text search'.

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

search_in_filesC

Search for text patterns in files

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesText pattern to search for
maxDepthNoMaximum search depth
directoryNoDirectory to search in.
wholeWordNoMatch whole words only
filePatternNoGlob pattern for files to search
contextLinesNoNumber of context lines around matches
caseSensitiveNoCase-sensitive search
includeHiddenNoInclude hidden files

TDQS

C2.7/5.0
Behavior1/5

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

With no annotations provided, the description must fully disclose behavioral traits. It only states 'Search for text patterns in files' without mentioning recursion, regex support, return format, handling of binary files, or any side effects. The behavior remains largely opaque, making it difficult for an agent to predict outcomes.

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

Conciseness4/5

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

The description is succinct and front-loaded with the essential purpose. It wastes no words, but the brevity borders on under-specification for a tool with 8 parameters. Still, it earns some credit for clarity and lack of 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?

Given the tool's complexity (8 params) and lack of output schema or annotations, the description is insufficiently complete. It doesn't explain what results are returned, whether the search is recursive, or how edge cases are handled. An agent would need to rely heavily on parameter descriptions to use the tool effectively.

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 contains descriptions for all 8 parameters, so schema coverage is high. The description adds no additional meaning beyond what the schema already provides – it merely restates the 'pattern' concept. As a result, the description provides no extra param semantic value.

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

Purpose4/5

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

The description clearly identifies the tool as searching for text patterns in files, which is distinct from sibling tools like read_file or find_files, though it doesn't explicitly differentiate from find_files (which likely searches filenames). The verb 'Search' and resource 'files' are specific, making the purpose clear.

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 provides no guidance on when to use this tool versus alternatives. It does not mention when to prefer search_in_files over find_files or other file operations, nor any exclusions or prerequisites. This is a significant gap for an agent deciding between tools.

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

stop_watchingA

Stop watching a file or directory

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to stop watching

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. It only states the action without disclosing behavior like error conditions, idempotency, whether the watch must exist, or safety profile (does not delete the file). Minimal behavioral insight beyond the verb.

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?

Single sentence, front-loaded with the action, zero unnecessary words. It is concise and immediately informative.

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?

Tool complexity is low (one parameter, no output schema), but without annotations, the agent lacks context on side effects or prerequisites. The description is functionally adequate but does not cover potential questions like 'what happens if path is not being watched?'

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 'Path to stop watching' fully documenting the parameter. The description adds no extra semantic value beyond the schema, so baseline 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 'Stop watching a file or directory' uses a specific verb (Stop) and resource (watching a file/directory), making the action clear. It distinguishes from siblings like watch_file by being the inverse operation.

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?

Usage is implied (when you want to stop watching a path), but no explicit context or alternatives are mentioned. The tool's counterpart (watch_file) is in the siblings list, but the description itself does not provide guidance on when to use this vs. others.

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

watch_fileB

Watch file or directory for changes

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to watch
ignoredNoPatterns to ignore
recursiveNoWatch recursively
ignoreInitialNoIgnore initial events

TDQS

B3.4/5.0
Behavior2/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 behavioral disclosure. It merely says 'watch for changes' without revealing key behavioral traits: whether it is a blocking/long-running operation, how changes are reported (events, callbacks, return values), or that it can be stopped via stop_watching. This is a significant gap for a tool that establishes a watch.

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, focused sentence that immediately states the tool's purpose. It contains no fluff, is front-loaded with the action and resource, and is appropriately sized for a simple concept.

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?

The tool is a watcher with nuanced behavior (long-running, event emission, stop mechanism), but the description provides none of this context. The existence of sibling stop_watching hints at a lifecycle, but the description itself fails to explain that the watch is continuous, how results are delivered, or when to use ignored/recursive/ignoreInitial. The schema covers parameters but not the tool's operational context.

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 all four parameters are described within the schema itself. The description adds no extra parameter information. Per rubric, a high-coverage schema yields a baseline of 3, and there is no additional value 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 tool's function: 'Watch file or directory for changes'. The verb 'watch' combined with the resource 'file or directory' and purpose 'for changes' precisely describes its use. It also distinguishes itself from sibling tools like read_file/write_file by implying a monitoring role, not a content access role.

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 monitoring changes, but it does not explicitly say when to use this tool versus alternatives like read_file or stop_watching. There is no mention of exclusions, prerequisites, or when not to use it. The intended use is inferred from the name and description rather than stated.

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

write_fileC

Write content to file with optional encoding and directory creation

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to write
appendNoAppend to file instead of overwriting
contentYesContent to write to the file
encodingNoFile encodingutf8
createDirsNoCreate parent directories if they don't exist

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description should disclose behavioral details. It does not state that the tool overwrites existing files by default, nor does it mention the append option, permission requirements, or the fact that createDirs can create parent directories. The only behavioral hint is 'optional encoding and directory creation,' but this is minimal and does not cover the destructive overwrite aspect.

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

Conciseness4/5

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

The description is a single, concise sentence with no wasted words. It communicates the core action and two optional features. However, it is too short to include important behavioral details, so while it is concise, it sacrifices completeness for brevity.

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 write tool has no output schema and no annotations, leaving the description as the primary source of behavioral context. It does not explain return values, overwrite semantics, append behavior, or file creation side effects. For a mutation tool with 5 parameters, the description is insufficiently complete.

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 each parameter is already documented in the input schema. The description adds marginal value by mentioning 'encoding' and 'directory creation,' but these are already covered by the schema's descriptions for 'encoding' and 'createDirs.' It does not clarify the meaning of 'append' or provide additional context beyond the schema.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Write content to file with optional encoding and directory creation.' It uses a specific verb ('write') and resource ('file'), and distinguishes itself from sibling tools like read_file, copy_file, and delete_file. However, it omits the append/overwrite distinction, which is a core behavior, so it isn't fully explicit.

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 write_file versus alternatives such as copy_file or move_file, nor are there any exclusions or prerequisites. The description does not mention that append mode can be used to add content without overwriting, or that createDirs is useful for nested paths. The tool is left to be inferred solely from its name.

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. 16 tool updatesv1.0.0
    • First observedarchive_files
    • First observedcompare_files
    • First observedcopy_file
    • First observedcreate_directory
    • First observeddelete_file
    • First observedextract_archive
    • First observedfind_files
    • First observedget_directory_size
    • First observedget_file_info
    • First observedlist_directory
    • First observedmove_file
    • First observedread_file
    • First observedsearch_in_files
    • First observedstop_watching
    • First observedwatch_file
    • First observedwrite_file

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct filesystem operation (read, write, copy, move, delete, info, create dir, list dir, find, search, watch, compare, archive, extract, size). No two tools have overlapping purposes; even closely related tools like read_file and get_file_info differ clearly between content and metadata.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (e.g., read_file, write_file, create_directory, extract_archive). Minor deviations like stop_watching still fit the pattern, and directory_size uses get_ prefix consistent with get_file_info.

Tool Count4/5

At 16 tools, the set is slightly above the typical 3-15 range but remains well-scoped for a comprehensive filesystem server. Each tool serves a necessary purpose and there are no redundant or filler tools.

Completeness5/5

The toolset covers full file lifecycle (create, read, update, delete), directory operations, metadata retrieval, searching, watching, comparing, archiving, and size calculation. There are no obvious gaps for standard filesystem workflows.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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
    Not graded
    quality
    Not graded
    maintenance
    Enables comprehensive filesystem operations including reading/writing files, directory management, file searching, editing with diff preview, compression, hashing, and merging with dynamic directory access control.
    668,809
    -
  • A
    license
    A
    quality
    C
    maintenance
    Provides intelligent file system operations with advanced features including code analysis and modification across multiple languages, version control (Git/GitHub), file compression, encryption, semantic search, batch operations, and secure shell command execution.
    1
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides file system access and operations, enabling AI assistants to read, write, list, search, and manage files and directories through a standardized interface.
    1
    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/1999AZZAR/filesystem-mcp-server'

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