Skip to main content
Glama
A-Niranjan

MCP Filesystem Server

by A-Niranjan

:bookmark: About

MCP Filesystem Server provides secure filesystem access for AI models through the Model Context Protocol. It enforces strict path validation and only allows access to predefined directories.

Related MCP server: MCP Filesystem Server

:computer: Technologies

:wrench: Tools

:package: Installation

:heavy_check_mark: Prerequisites

The following software must be installed:

:arrow_down: Cloning the repository

  $ git clone https://github.com/gabrielmaialva33/mcp-filesystem.git
  $ cd mcp-filesystem

:arrow_forward: Running the application

Local Development

  # Install dependencies
  $ pnpm install

  # Build the application
  $ pnpm build

  # Run the server (specify directory to allow access to)
  $ pnpm start /path/to/allowed/directory

  # Or use configuration file
  $ pnpm start --config=config.json

Using NPM Package

  # Install globally
  $ npm install -g @gabrielmaialva33/mcp-filesystem

  # Run the server
  $ mcp-filesystem /path/to/allowed/directory

  # Or use with npx (no installation needed)
  $ npx @gabrielmaialva33/mcp-filesystem /path/to/allowed/directory

  # Create a sample configuration file
  $ npx @gabrielmaialva33/mcp-filesystem --create-config=config.json

Using Docker

  # Build the Docker image
  $ docker build -t gabrielmaialva33/mcp-filesystem .

  # Run using Docker
  $ docker run -i --rm -v /path/to/data:/data:ro gabrielmaialva33/mcp-filesystem /data

  # Use with config file
  $ docker run -i --rm -v /path/to/config.json:/app/config.json -v /path/to/data:/data gabrielmaialva33/mcp-filesystem --config=/app/config.json

Using Docker Compose

  # Create a data directory
  $ mkdir -p data

  # Start the server
  $ docker-compose up -d

:gear: Usage

Using with Claude Desktop

Claude Desktop can be configured to use this MCP server for filesystem access. Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "filesystem": {
      "command": "mcp-filesystem",
      "args": [
        "/Users/gabrielmaia/Documents",
        "/Users/gabrielmaia/Desktop",
        "/Users/gabrielmaia/Downloads"
      ]
    }
  }
}

Make sure to make the executable available globally:

# Make the binary executable
chmod +x /Users/gabrielmaia/.nvm/versions/node/v22.14.0/bin/mcp-filesystem

Using NPX

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@gabrielmaialva33/mcp-filesystem",
        "/Users/username/Desktop",
        "/path/to/other/allowed/dir"
      ]
    }
  }
}

Using Docker

Note: When using Docker, all directories must be mounted to /projects by default. Adding the ro flag will make the directory read-only.

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--mount",
        "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
        "--mount",
        "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
        "--mount",
        "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
        "gabrielmaialva33/mcp-filesystem",
        "/projects"
      ]
    }
  }
}

Available Tools

The MCP Filesystem Server provides these tools:

File System Operations

  • read_file: Read a file's content

  • read_multiple_files: Read multiple files at once

  • write_file: Create or overwrite a file

  • edit_file: Make precise edits with diff preview

  • create_directory: Create directories recursively

  • list_directory: List directory contents

  • directory_tree: Get a recursive tree view

  • move_file: Move or rename files

  • search_files: Find files matching patterns

  • get_file_info: Get file metadata

  • list_allowed_directories: See accessible directories

System & Network Operations

  • get_metrics: View server performance metrics (v0.3.0+)

  • execute_command: Execute system commands securely (v0.3.1+)

  • curl_request: Execute HTTP requests to external APIs (coming in v1.2.0)

Using curl_request Tool (Coming in v1.2.0)

The curl_request tool will allow you to make HTTP requests to external APIs:

// Example: Making a GET request with authentication
curl_request({
  url: 'https://api.example.com/data',
  method: 'GET',
  headers: {
    Authorization: 'Bearer your_token_here',
  },
})

// Example: POST request with JSON data
curl_request({
  url: 'https://api.example.com/create',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  data: '{"name":"Example","value":123}',
})

See the docs/curl-tool-examples.md file for more detailed examples.

:sparkles: Features

Core Features

  • Secure Access: Strict path validation prevents unauthorized access

  • File Operations: Read, write, edit, and move files

  • Directory Operations: Create, list, get tree views, and search directories

  • Metadata Access: View file and directory information

  • Command Execution: Securely execute system commands with strict validation

  • Docker Support: Easy deployment with Docker and Docker Compose

New Features in v0.3.0

  • Structured Logging: Detailed logging with different levels (debug, info, warn, error)

  • Performance Metrics: Track operation counts, errors, and execution times

  • Configuration Management: Support for JSON configuration files

  • Path Caching: Improved performance for frequently accessed paths

  • Improved Error Handling: Specialized error types with structured information

  • File Size Validation: Prevent loading excessively large files

  • CLI Improvements: Help command, version info, and config generation

Configuration Options

You can create a configuration file using:

$ mcp-filesystem --create-config=config.json

Example configuration:

{
  "allowedDirectories": ["/path/to/allowed/dir1", "/path/to/allowed/dir2"],
  "logLevel": "info",
  "logFile": "/path/to/logs/mcp-filesystem.log",
  "serverName": "secure-filesystem-server",
  "serverVersion": "0.3.0",
  "cache": {
    "enabled": true,
    "maxSize": 1000,
    "ttlMs": 60000
  },
  "metrics": {
    "enabled": true,
    "reportIntervalMs": 60000
  },
  "security": {
    "maxFileSize": 10485760,
    "allowSymlinks": true,
    "validateRealPath": true
  }
}

:writing_hand: Author

License

MIT License

Available Tools

16 tools
bash_executeB

Execute a Bash command directly with output capture. More flexible than execute_command but still with security restrictions. Allows for direct access to Bash functionality.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe bash command to execute
workingDirNoWorking directory for command execution
timeoutNoMaximum execution time in milliseconds (max 60s)
envNoAdditional environment variables for the command

TDQS

B3.1/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 burden. It mentions 'output capture' and 'security restrictions' but doesn't disclose critical behavioral traits: what happens on command failure, whether commands run in isolated environments, what output format is returned, or what specific security restrictions exist. For a command execution tool with zero annotation coverage, this leaves significant gaps.

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 appropriately concise with three sentences. The first sentence clearly states the core functionality. However, the second sentence about flexibility compared to 'execute_command' could be more specific, and the third sentence about 'direct access to Bash functionality' is somewhat redundant with the first.

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?

For a command execution tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens on errors, what output format to expect, what security restrictions apply, or how this differs concretely from 'execute_command'. Given the complexity and potential risks of command execution, more behavioral context is needed.

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 schema already documents all 4 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions 'Bash command' generally but doesn't provide examples or constraints for the 'command' parameter. Baseline 3 is appropriate when schema does the heavy lifting.

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: 'Execute a Bash command directly with output capture.' It specifies the verb (execute), resource (Bash command), and key capability (output capture). However, it doesn't explicitly differentiate from sibling 'execute_command' beyond mentioning 'more flexible' without concrete examples.

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 mentions 'More flexible than execute_command' which implies a comparison, but doesn't specify when to choose this tool over 'execute_command' or other siblings like 'bash_pipe'. It also notes 'security restrictions' but doesn't detail what those are or when they apply.

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

bash_pipeA

Execute a sequence of Bash commands piped together. Allows for powerful command combinations with pipes. Results include both stdout and stderr.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandsYesArray of commands to pipe together
workingDirNoWorking directory for command execution
timeoutNoMaximum execution time in milliseconds (max 60s)
envNoAdditional environment variables for the command

TDQS

A3.9/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 behavioral disclosure. It adds useful context about what results to expect ('Results include both stdout and stderr'), which isn't obvious from the schema alone. However, it doesn't mention important behavioral aspects like security implications, error handling, or whether commands run with user privileges, leaving significant gaps for a tool that executes arbitrary Bash commands.

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 perfectly concise with just two sentences that each earn their place: the first states the core functionality, and the second adds crucial behavioral information about output. There's zero waste or redundancy, and the information is front-loaded effectively.

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 complexity of executing arbitrary Bash commands with pipes (a potentially dangerous operation), the description is incomplete. With no annotations and no output schema, it should provide more guidance about security, permissions, error conditions, and return format. The description covers basic functionality but lacks the depth needed for safe and effective use of this powerful tool.

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?

With 100% schema description coverage, the schema already documents all 4 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, such as explaining how the pipe sequence works or providing examples of command arrays. The baseline score of 3 reflects adequate but not enhanced 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 clearly states the specific action ('Execute a sequence of Bash commands piped together') and resource (Bash commands), distinguishing it from sibling tools like 'bash_execute' or 'execute_command' by emphasizing the pipe functionality. It provides a precise verb+resource combination that leaves no ambiguity about the tool's function.

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 provides clear context for when to use this tool ('Allows for powerful command combinations with pipes'), suggesting it's for chaining commands rather than single executions. However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings like 'bash_execute', leaving some room for improvement in distinguishing between similar tools.

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

create_directoryA

Create a new directory or ensure a directory exists. Can create multiple nested directories in one operation. If the directory already exists, this operation will succeed silently. Perfect for setting up directory structures for projects or ensuring required paths exist. Only works within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath of the directory to create

TDQS

A4.2/5.0
Behavior4/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 effectively describes key behavioral traits: idempotent behavior ('If the directory already exists, this operation will succeed silently'), batch capability ('Can create multiple nested directories in one operation'), and a security constraint ('Only works within allowed directories'). It doesn't mention error conditions or performance characteristics, but covers the essential mutation behavior well.

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 efficiently structured with four sentences that each add distinct value: core functionality, batch capability, idempotent behavior, use cases, and constraints. There's no redundant information, and it's appropriately sized for the tool's complexity.

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 mutation tool with no annotations and no output schema, the description does well by explaining the idempotent behavior, batch capability, and security constraint. It could be more complete by mentioning what happens on failure (e.g., permission errors) or the return value, but given the single parameter and clear behavioral description, it's largely sufficient.

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 the single 'path' parameter well-documented in the schema. The description adds some context by implying the path can specify nested directories ('Can create multiple nested directories in one operation'), but doesn't provide additional syntax or format details beyond what the schema already states. This meets the baseline for 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 clearly states the specific action ('Create a new directory or ensure a directory exists') and resource ('directory'), distinguishing it from siblings like list_directory, move_file, or edit_file. It explicitly mentions creating nested directories, which differentiates it from simpler file operations.

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 provides clear context on when to use this tool ('Perfect for setting up directory structures for projects or ensuring required paths exist') and mentions a constraint ('Only works within allowed directories'). However, it doesn't explicitly state when not to use it or name specific alternatives among the sibling tools.

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

curl_requestA

Execute a curl request to an external HTTP API. Allows specifying URL, method, headers, and data. Useful for integrating with external services via HTTP.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL to send the request to
methodNoHTTP methodGET
headersNoHTTP headers to include in the request
dataNoData to send in the request body
timeoutNoRequest timeout in seconds
followRedirectsNoWhether to follow redirects
insecureNoWhether to skip SSL certificate verification (use with caution)

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 the full burden of behavioral disclosure. While it mentions the tool 'executes a curl request,' it doesn't disclose important behavioral traits like authentication requirements, rate limits, error handling, what happens with failed requests, or the format of returned data. The description is too high-level for a tool that performs external HTTP operations.

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 appropriately sized with two sentences that are front-loaded with the core purpose. The first sentence states what the tool does and what it allows, while the second provides usage context. There's minimal waste, though the second sentence could be slightly more specific.

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?

For a tool that executes external HTTP requests with 7 parameters and no output schema, the description is insufficient. It doesn't explain what the tool returns, error conditions, security implications (especially for the 'insecure' parameter), or how results are formatted. Given the complexity of HTTP operations and lack of annotations/output schema, more completeness is needed.

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 schema already documents all 7 parameters thoroughly. The description adds minimal value beyond the schema by mentioning URL, method, headers, and data in general terms, but doesn't provide additional semantic context about how these parameters interact or special considerations for their use.

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 purpose with specific verbs ('execute a curl request') and resources ('external HTTP API'), and distinguishes it from sibling tools by focusing on HTTP API integration rather than file operations or shell commands. It explicitly mentions what the tool allows (specifying URL, method, headers, and data).

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 provides clear context for when to use this tool ('useful for integrating with external services via HTTP'), which distinguishes it from sibling tools like bash_execute or file operations. However, it doesn't explicitly state when NOT to use it or name specific alternatives for similar HTTP tasks.

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

directory_treeA

Get a recursive tree view of files and directories as a JSON structure. Each entry includes 'name', 'type' (file/directory), and 'children' for directories. Files have no children array, while directories always have a children array (which may be empty). The output is formatted with 2-space indentation for readability. Only works within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath of the directory to create a tree view for

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses key behavioral traits: output format (JSON with 2-space indentation), structure (entries with name, type, children), and constraints (only within allowed directories). However, it lacks details on error handling, recursion depth limits, or performance implications for large directories.

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 efficiently structured in three sentences: first states the core purpose, second details output structure, third adds critical constraint. Every sentence adds value with zero wasted words, and key information is front-loaded.

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?

Given the tool's moderate complexity (recursive traversal), no annotations, and no output schema, the description does well by explaining output structure and constraints. However, it could better address potential issues like symbolic links, hidden files, or large directory performance to be fully 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 the schema already fully documents the single 'path' parameter. The description adds no additional parameter semantics beyond what's in the schema, but doesn't need to compensate for gaps. This meets the baseline for 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 clearly states the specific action ('Get a recursive tree view') and resource ('files and directories'), distinguishing it from siblings like 'list_directory' (flat listing) and 'get_file_info' (single file metadata). It precisely defines what the tool does beyond just the name.

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 provides clear context for when to use this tool ('Only works within allowed directories') and implies usage for hierarchical views versus flat listings. However, it doesn't explicitly name alternatives (e.g., 'list_directory' for non-recursive) or state when not to use it, keeping it from a perfect score.

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

edit_fileA

Make line-based edits to a text file. Each edit replaces exact line sequences with new content. Returns a git-style diff showing the changes made. Only works within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to edit
editsYesList of edit operations to perform
dryRunNoPreview changes using git-style diff format

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. It discloses key behavioral traits: the line-based exact-match replacement mechanism, the git-style diff return format, and the directory restriction. However, it doesn't mention error conditions (e.g., file not found, permission issues), whether edits are atomic, or what happens with overlapping edits.

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?

Three tightly focused sentences with zero waste: first states core functionality, second clarifies the edit mechanism, third covers output and constraints. Every sentence adds essential information, and the description is appropriately sized for a tool with 3 parameters.

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 mutation tool with no annotations and no output schema, the description provides adequate but incomplete context. It covers the what (line-based edits), how (exact sequence replacement), and constraints (allowed directories), but lacks details about error handling, atomicity guarantees, or the exact structure of the returned diff. The absence of output schema increases the need for more behavioral detail.

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 schema already fully documents all three parameters. The description adds no additional parameter semantics beyond what's in the schema descriptions. The baseline score of 3 reflects adequate coverage through the schema alone.

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 specific action ('Make line-based edits'), the target resource ('to a text file'), and the mechanism ('Each edit replaces exact line sequences with new content'). It distinguishes itself from sibling tools like 'write_file' by focusing on in-place modifications rather than creating/overwriting entire files.

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 context through 'Only works within allowed directories' and the mention of git-style diff output, but doesn't explicitly state when to use this vs. alternatives like 'write_file' for full file replacement or 'bash_execute' for scripted edits. No explicit exclusions or named alternatives are provided.

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

execute_commandB

Execute a system command with security restrictions. Validates commands for safety and provides detailed output. Limited to basic system operations with security checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe command to execute
workingDirNoWorking directory for command execution
timeoutNoMaximum execution time in milliseconds (max 30s)
captureOutputNoWhether to capture and return command output

TDQS

B3.4/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 behavioral disclosure. It adds value by mentioning security restrictions, validation for safety, and detailed output, which goes beyond the input schema. However, it lacks details on specific security measures, error handling, or output format, leaving gaps 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.

Conciseness4/5

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

The description is appropriately sized with three concise sentences that front-load key information (execution with security). Every sentence adds value, but minor redundancy ('security restrictions' and 'security checks') slightly reduces efficiency, preventing a perfect score.

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 complexity (executing system commands with security) and no annotations or output schema, the description is partially complete. It covers purpose and security aspects but lacks details on return values, error cases, or specific limitations, making it adequate but with clear gaps for safe use.

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 input schema fully documents all parameters. The description doesn't add any parameter-specific information beyond what's in the schema, such as examples or constraints. Thus, it meets the baseline of 3 without compensating further.

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: 'Execute a system command with security restrictions.' It specifies the verb ('execute') and resource ('system command'), and distinguishes it from siblings like 'bash_execute' by mentioning security restrictions. However, it doesn't explicitly differentiate from 'bash_pipe' or other execution tools, keeping it at 4 rather than 5.

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 context with phrases like 'Limited to basic system operations with security checks,' suggesting when to use it (for secure command execution). However, it doesn't explicitly state when not to use it or name alternatives like 'bash_execute' or 'bash_pipe,' leaving some ambiguity compared to explicit guidance.

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

get_file_infoA

Retrieve detailed metadata about a file or directory. Returns comprehensive information including size, creation time, last modified time, permissions, and type. This tool is perfect for understanding file characteristics without reading the actual content. Only works within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file or directory to get information about

TDQS

A4.2/5.0
Behavior4/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 effectively describes key traits: it's a read-only operation (implied by 'retrieve' and 'without reading the actual content'), returns comprehensive metadata, and has a scope limitation ('Only works within allowed directories'). It lacks details on error handling or performance, but covers the essential behavior well.

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 appropriately sized and front-loaded, with the first sentence stating the core purpose. Each subsequent sentence adds valuable information (what's returned, when to use, constraints) without redundancy. There is no wasted text, making it highly efficient.

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?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is largely complete. It explains the purpose, usage, and constraints effectively. However, without an output schema, it could benefit from more detail on the return format (e.g., structure of the metadata), which slightly limits completeness.

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 100% description coverage, with the 'path' parameter fully documented in the schema. The description does not add any additional meaning or context beyond what the schema provides (e.g., format examples or constraints like path syntax), so it meets the baseline score of 3 for 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 clearly states the tool's purpose with specific verbs ('retrieve detailed metadata') and resource ('file or directory'), distinguishing it from siblings like read_file (which reads content) or list_directory (which lists contents). It explicitly mentions what information is returned (size, creation time, etc.), making the purpose 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 provides clear context for when to use this tool ('for understanding file characteristics without reading the actual content') and includes a constraint ('Only works within allowed directories'). However, it does not explicitly mention when not to use it or name specific alternatives (e.g., list_directory for directory listings vs. metadata), which prevents a perfect score.

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

get_metricsB

Returns performance metrics about server operations. Useful for monitoring and debugging.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 burden for behavioral disclosure. It states this is a read operation ('Returns'), but doesn't specify what types of metrics are included, whether authentication is required, if there are rate limits, or what the return format looks like. The description is too vague for a tool that presumably provides system performance data.

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 appropriately concise with two sentences that each add value. The first sentence states the core purpose, and the second provides usage context. There's no redundant information or 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?

For a monitoring tool with no annotations and no output schema, the description is insufficient. It doesn't specify what types of metrics are returned (CPU, memory, disk, network), the format of the response, whether this requires elevated permissions, or how frequently metrics can be queried. The vague 'performance metrics' leaves too much ambiguity for effective use.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description appropriately doesn't waste space discussing parameters that don't exist, maintaining focus on what the tool does rather than its inputs.

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 with 'Returns performance metrics about server operations', specifying both the action (returns) and resource (performance metrics). It distinguishes from siblings by focusing on monitoring data rather than file operations or command execution, though it doesn't explicitly name alternatives.

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 provides implied usage context with 'Useful for monitoring and debugging', suggesting when this tool might be appropriate. However, it doesn't give explicit guidance on when to use this versus other tools or any prerequisites for usage.

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

list_allowed_directoriesA

Returns the list of directories that this server is allowed to access. Use this to understand which directories are available before trying to access files.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 full burden. It describes the tool's behavior as returning a list, which is helpful, but lacks details such as whether the list is paginated, sorted, or includes metadata. It also does not mention permissions, rate limits, or error conditions. The description adds some value but is incomplete for behavioral transparency.

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 two sentences, front-loaded with the core purpose and followed by usage guidance. Every sentence earns its place by providing essential information without waste, making it highly concise and well-structured.

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 complexity (simple read operation with no parameters) and lack of annotations or output schema, the description is adequate but has gaps. It explains what the tool does and when to use it, but does not cover behavioral aspects like output format or error handling. This makes it minimally viable but not fully complete.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so there is no need for parameter information in the description. The description appropriately focuses on the tool's purpose and usage without redundant parameter details, meeting the baseline for zero parameters.

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: 'Returns the list of directories that this server is allowed to access.' It specifies the verb ('returns') and resource ('directories'), but does not explicitly differentiate it from sibling tools like 'list_directory' or 'directory_tree', which is why it scores 4 instead of 5.

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 provides clear context on when to use this tool: 'Use this to understand which directories are available before trying to access files.' This implies it should be used as a preliminary step before file operations. However, it does not explicitly state when not to use it or name specific alternatives among siblings, so it scores 4.

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

list_directoryA

Get a detailed listing of all files and directories in a specified path. Results clearly distinguish between files and directories with [FILE] and [DIR] prefixes. This tool is essential for understanding directory structure and finding specific files within a directory. Only works within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath of the directory to list

TDQS

A3.9/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. It discloses key behavioral traits: it distinguishes files/directories with prefixes, works only within allowed directories, and provides detailed listings. However, it doesn't mention performance characteristics, error handling, or what happens with invalid paths.

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 appropriately sized with three sentences that each add value: the core functionality, output format detail, and usage context. It's front-loaded with the main purpose. The third sentence could be slightly more concise.

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 single-parameter tool with no annotations and no output schema, the description provides good coverage of purpose, behavior, and constraints. It explains the output format (prefixes) and access limitations. However, it doesn't describe the return structure or error cases, which would be helpful given the lack of 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?

Schema description coverage is 100%, so the schema already documents the single 'path' parameter. The description adds minimal value beyond the schema by implying the path must be to a directory, but doesn't provide format examples or constraints beyond what's in 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 purpose with specific verbs ('Get a detailed listing') and resources ('files and directories in a specified path'). It distinguishes from siblings like 'directory_tree' by focusing on detailed listing with prefixes rather than hierarchical structure, and from 'search_files' by listing all items rather than searching.

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 provides clear context for when to use this tool ('essential for understanding directory structure and finding specific files within a directory') and mentions a constraint ('Only works within allowed directories'). However, it doesn't explicitly state when not to use it or name specific alternatives among the siblings.

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 files and directories. Can move files between directories and rename them in a single operation. If the destination exists, the operation will fail. Works across different directories and can be used for simple renaming within the same directory. Both source and destination must be within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesSource path of the file or directory to move
destinationYesDestination path where to move the 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 provided, the description carries the full burden. It effectively discloses key behavioral traits: the operation can fail if destination exists, it works across directories, and both paths must be within allowed directories. It doesn't mention permissions, rate limits, or error handling details, but covers essential mutation 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 front-loaded with the core purpose and efficiently adds essential details in subsequent sentences. Every sentence adds value: operation scope, failure condition, cross-directory capability, renaming use case, and security constraint. Zero 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 mutation tool with no annotations and no output schema, the description does well by covering purpose, constraints, and usage context. It could be more complete by mentioning what happens on success (e.g., returns confirmation) or error types, but given the tool's relative simplicity, it provides adequate contextual information.

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 schema already documents both parameters. The description adds marginal value by implying that 'source' and 'destination' refer to file/directory paths for moving/renaming, but doesn't provide additional syntax or format details beyond what the schema 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 clearly states the specific action ('move or rename files and directories') and distinguishes it from sibling tools like 'create_directory', 'edit_file', and 'write_file' by focusing on relocation/renaming rather than creation, modification, or writing new content.

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 provides clear context on when to use it ('move files between directories', 'rename them', 'simple renaming within the same directory') and mentions constraints ('destination exists → fails', 'must be within allowed directories'). However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings.

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

read_fileA

Read the complete contents of a file from the file system. Handles various text encodings and provides detailed error messages if the file cannot be read. Use this tool when you need to examine the contents of a single file. Only works within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to read
encodingNoFile encodingutf-8

TDQS

A4.2/5.0
Behavior4/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 effectively describes key behaviors: it reads complete file contents (not partial), handles various text encodings, provides detailed error messages, and has directory restrictions. It doesn't mention performance characteristics like file size limits or whether it's idempotent, but covers the essential operational aspects well for a read 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 perfectly front-loaded with the core purpose in the first sentence, followed by behavioral details and usage guidelines. Every sentence earns its place: the first defines the action, the second adds behavioral context, the third provides usage guidance, and the fourth states constraints. No wasted words 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 read operation with no annotations and no output schema, the description provides good coverage of what the tool does, when to use it, and important constraints. It could be more complete by mentioning the return format (e.g., whether it returns raw text or structured data) or any performance considerations, but it addresses the essential context well given the tool's relative simplicity.

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?

With 100% schema description coverage, the schema already fully documents both parameters (path and encoding with enum values). The description adds no additional parameter semantics beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in description.

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 specific action ('Read the complete contents') and resource ('a file from the file system'), distinguishing it from siblings like 'read_multiple_files' (single vs multiple) and 'get_file_info' (contents vs metadata). It provides a precise verb+resource combination that leaves no ambiguity about the tool's function.

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 provides clear context for when to use this tool ('when you need to examine the contents of a single file') and mentions a constraint ('Only works within allowed directories'). However, it doesn't explicitly contrast with alternatives like 'read_multiple_files' for bulk operations or 'get_file_info' for metadata-only needs, which would elevate it to a 5.

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 simultaneously. This is more efficient than reading files one by one when you need to analyze or compare multiple files. Each file's content is returned with its path as a reference. Failed reads for individual files won't stop the entire operation. Only works within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesList of file paths to read
encodingNoFile encodingutf-8

TDQS

A4.2/5.0
Behavior4/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 effectively describes key behavioral traits: partial failure tolerance ('Failed reads for individual files won't stop the entire operation'), security constraints ('Only works within allowed directories'), and the return format ('Each file's content is returned with its path as a reference'). It doesn't mention performance characteristics like rate limits or detailed error handling.

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 perfectly concise with four sentences that each earn their place: states the core functionality, explains efficiency benefit, describes return format, and specifies constraints. It's front-loaded with the main purpose and wastes no 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?

Given the tool's moderate complexity (batch file reading with partial failure tolerance), no annotations, and no output schema, the description does well but has minor gaps. It explains the operation, constraints, and return format adequately, but doesn't detail error responses or performance characteristics that would be helpful for a batch operation tool.

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 schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema (paths array, encoding options). The baseline score of 3 is appropriate when the schema does all the parameter documentation work.

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 specific action ('Read the contents of multiple files simultaneously'), distinguishes it from the sibling 'read_file' tool by emphasizing batch efficiency, and explicitly mentions the resource ('files'). It provides a precise verb+resource combination with clear differentiation from alternatives.

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 provides clear context for when to use this tool ('more efficient than reading files one by one when you need to analyze or compare multiple files') and mentions a constraint ('Only works within allowed directories'). However, it doesn't explicitly state when NOT to use it or name specific alternative tools like 'read_file' for single-file scenarios.

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

search_filesA

Recursively search for files and directories matching a pattern. Searches through all subdirectories from the starting path. The search is case-insensitive and matches partial names. Returns full paths to all matching items. Great for finding files when you don't know their exact location. Only searches within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRoot path to start searching from
patternYesPattern to match against filenames and directories
excludePatternsNoPatterns to exclude from search results

TDQS

A4/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 behavioral disclosure. It effectively describes key behaviors: recursive search, case-insensitive matching, partial name matching, and restriction to allowed directories. However, it doesn't mention performance implications (e.g., could be slow on large directories), error handling, or output format details beyond 'full paths.' For a search tool with no annotation coverage, this is adequate but leaves some behavioral aspects unspecified.

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 efficiently structured with five sentences, each adding distinct value: core functionality, search behavior, matching rules, return values, use case, and constraints. There's no redundancy or fluff. The information is front-loaded with the primary purpose in the first sentence. Every sentence earns its place by contributing unique context not found in the schema or annotations.

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?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description provides good contextual coverage. It explains the search scope, matching behavior, use case, and access restrictions. However, without an output schema, it doesn't detail the return format (e.g., array structure, error responses) or potential limitations like recursion depth. For a search tool, this is mostly complete but could benefit from more output information.

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 schema already documents all three parameters thoroughly. The description adds minimal value beyond the schema: it implies 'pattern' applies to both files and directories and mentions recursion starting from 'path.' However, it doesn't provide additional syntax examples, regex capabilities, or practical usage tips. The baseline score of 3 is appropriate when the schema does most of the parameter documentation work.

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 purpose with specific verbs ('recursively search for files and directories') and resources ('files and directories matching a pattern'). It distinguishes from siblings like 'list_directory' (which lists contents without searching) and 'get_file_info' (which retrieves metadata for a specific file). The description explicitly mentions it's 'great for finding files when you don't know their exact location,' which further clarifies its unique role.

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 provides clear context about when to use this tool ('when you don't know their exact location') and mentions constraints ('Only searches within allowed directories'). However, it doesn't explicitly contrast with alternatives like 'list_directory' for browsing known locations or 'bash_execute' for command-line searches. The guidance is helpful but lacks explicit 'when-not-to-use' comparisons with sibling tools.

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 completely overwrite an existing file with new content. Use with caution as it will overwrite existing files without warning. Handles text content with proper encoding. Only works within allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath where to write the file
contentYesContent to write to the file
encodingNoFile encodingutf-8

TDQS

A4.2/5.0
Behavior4/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 effectively describes key traits: the destructive nature ('overwrite existing files without warning'), scope ('Only works within allowed directories'), and content handling ('Handles text content with proper encoding'). However, it does not mention permissions, rate limits, or error behavior, leaving some gaps.

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 front-loaded with the core purpose, followed by warnings and constraints in three concise sentences. Each sentence adds value: the first defines the action, the second warns about overwriting, and the third clarifies encoding and directory limits, with zero 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?

Given the tool's complexity (a destructive write operation) and lack of annotations and output schema, the description does well by covering purpose, risks, and constraints. However, it could be more complete by mentioning return values (e.g., success/failure indicators) or error handling, which are important for a tool with potential side effects.

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 schema already documents all parameters (path, content, encoding) with descriptions and enum values. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints, meeting the baseline for 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 clearly states the specific action ('Create a new file or completely overwrite an existing file') and resource ('file'), distinguishing it from sibling tools like edit_file (which implies modification rather than creation/overwrite) and read_file (which only reads). The verb 'write' is precise and matches the tool name without being tautological.

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 provides clear context for usage ('Use with caution as it will overwrite existing files without warning') and constraints ('Only works within allowed directories'), but does not explicitly name alternatives or specify when not to use it versus tools like edit_file or move_file. This gives practical guidance but lacks sibling differentiation.

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 updates
    • First observedbash_execute
    • First observedbash_pipe
    • First observedcreate_directory
    • First observedcurl_request
    • First observeddirectory_tree
    • First observededit_file
    • First observedexecute_command
    • First observedget_file_info
    • First observedget_metrics
    • First observedlist_allowed_directories
    • First observedlist_directory
    • First observedmove_file
    • First observedread_file
    • First observedread_multiple_files
    • First observedsearch_files
    • First observedwrite_file

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between bash_execute, bash_pipe, and execute_command, which could cause confusion as they all execute commands with varying flexibility and restrictions. The other tools are well-differentiated, such as directory_tree for recursive views versus list_directory for flat listings, and read_file versus read_multiple_files for single versus batch operations.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun structures, such as create_directory, edit_file, and search_files. There are no deviations in naming conventions, making the set predictable and easy to understand at a glance.

Tool Count4/5

With 16 tools, the count is slightly high but reasonable for a filesystem server covering a broad range of operations from basic file handling to command execution and metrics. It might feel heavy, but each tool serves a specific function, avoiding redundancy except in the command execution area.

Completeness5/5

The tool set provides comprehensive coverage for filesystem operations, including CRUD (create_directory, read_file, edit_file, move_file, write_file), metadata retrieval (get_file_info), listing and searching (list_directory, directory_tree, search_files), and utility functions (curl_request, get_metrics). There are no obvious gaps, and tools like list_allowed_directories help agents navigate restrictions effectively.

Maintenance

ActivityInactive
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

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/A-Niranjan/mcp-filesystem'

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