Skip to main content
Glama
gabrielmaialva33

MCP Filesystem Server

: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
envNoAdditional environment variables for the command
timeoutNoMaximum execution time in milliseconds (max 60s)
workingDirNoWorking directory for command execution

TDQS

B3.1/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 mentions 'security restrictions' and 'output capture,' which are useful behavioral traits. However, it lacks details on what those restrictions entail, whether the command runs in a sandbox, potential side effects (e.g., file modifications), error handling, or rate limits. For a tool that executes arbitrary Bash commands, this is a significant gap in transparency.

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 concise and front-loaded, with two sentences that directly state the tool's function and key features. There's no wasted text, but it could be slightly more structured by explicitly listing advantages or use cases. Overall, it's efficient and to the point.

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 complexity of executing Bash commands (potentially destructive, security-sensitive) and the lack of annotations and output schema, the description is insufficient. It doesn't cover critical aspects like return values, error formats, safety warnings, or detailed behavioral context. For such a powerful tool, more completeness is needed to guide safe and effective 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 schema fully documents all parameters (command, env, timeout, workingDir). The description adds no specific parameter semantics beyond implying the command is for Bash. This meets the baseline of 3, as the schema handles the heavy lifting, but the description doesn't enhance understanding of parameter usage or constraints.

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) and resource (Bash command) and mentions output capture. However, it doesn't explicitly distinguish from sibling tools like 'execute_command' beyond saying 'more flexible,' which is vague rather than specific.

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 some usage context by comparing to 'execute_command' ('more flexible... but still with security restrictions'), implying this tool is for advanced Bash usage. However, it doesn't explicitly state when to use this over alternatives like 'bash_pipe' or 'execute_command,' nor does it mention any exclusions or prerequisites, leaving the guidance incomplete.

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

bash_pipeB

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
envNoAdditional environment variables for the command
timeoutNoMaximum execution time in milliseconds (max 60s)
workingDirNoWorking directory for command execution

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 mentions that 'Results include both stdout and stderr,' which adds useful context about output behavior. However, it lacks critical details such as security implications (e.g., potential for destructive commands), error handling, or execution limits beyond the timeout parameter. For a tool executing arbitrary Bash commands, this is a significant gap.

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

Conciseness5/5

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

The description is highly concise and front-loaded: two sentences that directly state the tool's purpose and key behavioral trait (stdout/stderr inclusion). Every sentence earns its place with no wasted words, making it easy for an agent to parse quickly.

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

Completeness3/5

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

Given the complexity of executing arbitrary Bash commands (high-risk operation), no annotations, and no output schema, the description is incomplete. It covers the basic purpose and output format but misses critical context like safety warnings, permission requirements, or error scenarios. However, it does provide some behavioral transparency (stdout/stderr), preventing a lower score.

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 thoroughly. The description doesn't add any parameter-specific semantics beyond what's in the schema (e.g., it doesn't explain how 'commands' array elements are piped or provide examples). Baseline 3 is appropriate as the schema does the heavy lifting, but no extra value is added.

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 sequence of Bash commands piped together.' It specifies the verb ('execute') and resource ('Bash commands'), and distinguishes it from sibling tools like 'bash_execute' by emphasizing piped sequences. However, it doesn't explicitly differentiate from 'execute_command' or other execution tools, keeping it at 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 Guidelines3/5

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

The description implies usage context with 'Allows for powerful command combinations with pipes,' suggesting this tool is for chaining commands via pipes. However, it doesn't explicitly state when to use this versus alternatives like 'bash_execute' or 'execute_command,' nor does it provide exclusions or prerequisites. This leaves some ambiguity for the agent.

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 behaviors: the tool can create nested directories, succeeds silently if directories already exist, and has access restrictions ('Only works within allowed directories'). It doesn't mention error conditions, permissions needed, or rate limits, 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 value: states the core function, explains nested creation capability, describes the idempotent behavior, and specifies usage context and constraints. No 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?

For a single-parameter mutation tool with no annotations and no output schema, the description provides good coverage of what the tool does, its idempotent behavior, and access restrictions. It could mention what happens on failure or the return format, but given the simplicity of the operation, it's reasonably 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 documents the single 'path' parameter. The description adds context about what the path represents ('directory to create') and that it can include nested directories, but doesn't provide additional syntax, format details, or examples beyond what the schema implies. 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.

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 ('create' and 'ensure') and resource ('directory'), distinguishing it from siblings like list_directory or directory_tree. It explicitly mentions creating nested directories and silent success on existing directories, which differentiates it from basic 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 about when to use this tool ('setting up directory structures for projects or ensuring required paths exist') and mentions constraints ('Only works within allowed directories'). However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings like bash_execute for similar operations.

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

curl_requestB

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
dataNoData to send in the request body
followRedirectsNoWhether to follow redirects
headersNoHTTP headers to include in the request
insecureNoWhether to skip SSL certificate verification (use with caution)
methodNoHTTP methodGET
timeoutNoRequest timeout in seconds
urlYesFull URL to send the request to

TDQS

B3.1/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 mentions 'Execute a curl request' which implies a network operation, but lacks details on behavioral traits such as error handling, retries, rate limits, authentication requirements, or what happens on failure. The description is minimal and doesn't compensate for the absence of annotations.

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 concise and front-loaded with the core purpose in the first sentence. The second sentence adds useful context about parameters and usage. There's no wasted text, though it could be slightly more detailed given the lack of annotations.

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 complexity (7 parameters, network operation) and no annotations or output schema, the description is incomplete. It doesn't explain return values, error cases, or important behavioral aspects like security implications of 'insecure' parameter. For a tool that executes HTTP requests, more context is needed to guide safe and effective 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 schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by listing 'URL, method, headers, and data' as key parameters, but doesn't provide additional semantics or usage examples. Baseline 3 is appropriate as the 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 curl request to an external HTTP API.' It specifies the action (execute) and resource (curl request/HTTP API). However, it doesn't explicitly differentiate from sibling tools like 'bash_execute' or 'execute_command' which might also execute commands, though those appear to be for shell commands rather than HTTP requests.

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 guidance: 'Useful for integrating with external services via HTTP.' This suggests when to use it (for HTTP integration), but it doesn't explicitly state when not to use it or name alternatives among siblings. For example, it doesn't clarify if 'bash_execute' could be used for similar purposes with curl commands.

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.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 and does well by disclosing key behavioral traits: it's a read-only operation (implied by 'Get'), outputs JSON with specific structure, includes formatting details (2-space indentation), and has access restrictions (allowed directories). It doesn't mention error handling or performance implications, but covers the essential behavior adequately.

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 output structure details and constraints. Each sentence adds value: first defines the operation, second explains the JSON structure, third clarifies formatting, and fourth states access limits. 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 single-parameter read tool with no annotations and no output schema, the description provides good completeness: it explains what the tool does, output format, structure details, and access restrictions. It could slightly improve by mentioning error cases (e.g., invalid path) or linking to list_allowed_directories more explicitly, but 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%, so the schema already documents the 'path' parameter adequately. The description doesn't add any parameter-specific details beyond what's in the schema (e.g., path format examples or constraints), so 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.

Purpose5/5

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

The description clearly states the verb 'Get' and resource 'recursive tree view of files and directories as a JSON structure', distinguishing it from siblings like list_directory (flat listing) or get_file_info (single file metadata). It specifies the recursive nature and JSON output format, making the purpose specific and differentiated.

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 with 'Only works within allowed directories', which implicitly suggests using list_allowed_directories first. However, it doesn't explicitly name alternatives or state when not to use it (e.g., vs. list_directory for non-recursive listing), keeping it at a 4 rather than a 5.

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
dryRunNoPreview changes using git-style diff format
editsYesList of edit operations to perform
pathYesPath to the file to edit

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 communicates that this is a mutation tool ('Make line-based edits'), describes the return format ('Returns a git-style diff'), and adds important constraints ('Only works within allowed directories'). It doesn't mention error handling, permissions, or rate limits, but covers core behavioral aspects 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?

Three sentences with zero waste: first states the core purpose, second explains the editing method, third covers return value and constraint. Each sentence earns its place by providing essential information without redundancy. The structure is front-loaded with the main action.

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 what the tool does, how it works, what it returns, and important constraints. It could be more complete by mentioning error cases or the format of the git-style diff, but covers the essential context given the complexity.

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 some context by mentioning 'exact line sequences' which relates to the 'oldText' parameter, but doesn't provide additional semantic meaning beyond what's in the schema. 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 ('Make line-based edits'), the resource ('to a text file'), and the method ('replaces exact line sequences with new content'). It distinguishes from siblings like 'write_file' by specifying line-based editing rather than overwriting entire files, and from 'read_file' by being a mutation operation.

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 ('Only works within allowed directories'), which helps differentiate it from unrestricted file operations. However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools (e.g., 'write_file' for full file replacement).

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
captureOutputNoWhether to capture and return command output
commandYesThe command to execute
timeoutNoMaximum execution time in milliseconds (max 30s)
workingDirNoWorking directory for command execution

TDQS

B3.2/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: security validation, safety checks, and output detail. However, it lacks specifics on what security restrictions apply, what constitutes 'basic' operations, error handling, or permission requirements. The description adds value but leaves significant behavioral aspects undefined.

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 that each add value: purpose, validation, and scope. It's front-loaded with the core functionality. No redundant or wasted language, though it could be slightly more structured for clarity.

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 command execution tool with 4 parameters, no annotations, and no output schema, the description provides adequate but incomplete context. It covers purpose and security aspects but lacks details on output format, error responses, exact security limitations, and comparison with sibling tools. Given the complexity and absence of structured fields, it should do more 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 fully documents all 4 parameters. The description adds no parameter-specific information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the 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 purpose as executing system commands with security restrictions and validation. It specifies 'basic system operations' which distinguishes it from more specialized siblings like curl_request or edit_file, though it doesn't explicitly contrast with bash_execute which appears similar.

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 mentions 'security restrictions' and 'limited to basic system operations' which provides some context, but offers no explicit guidance on when to use this tool versus alternatives like bash_execute or bash_pipe. No prerequisites, exclusions, or comparative usage scenarios are provided.

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

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 mentions the tool is read-only ('without reading the actual content') and includes a constraint ('Only works within allowed directories'), which adds useful context. However, it lacks details on error handling, permissions needed, or rate limits, leaving gaps for a tool that interacts with file systems.

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 value: detailing returned information, clarifying use case, and specifying constraints. There is no wasted text, making it efficient and easy to parse.

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 moderate complexity (file system interaction) and no output schema, the description provides a good overview of what information is returned and usage constraints. However, it lacks details on output format, error cases, or dependencies on other tools like list_allowed_directories, which could enhance completeness 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 input schema has 100% description coverage, with the 'path' parameter clearly documented. The description does not add any additional meaning beyond the schema, such as format examples or constraints on the path. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description does not compensate but also does not detract.

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 ('Retrieve') and resource ('detailed metadata about a file or directory'), distinguishing it from siblings like read_file (which reads content) and list_directory (which lists contents). It specifies the type of information returned (size, creation time, etc.), making the purpose 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 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'), which helps differentiate it from tools like read_file. However, it does not explicitly name alternatives or specify when not to use it, such as comparing to list_directory for directory contents versus metadata.

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.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool is 'useful for monitoring and debugging,' which hints at read-only behavior, but fails to specify critical details like whether it requires authentication, has rate limits, returns real-time or historical data, or what format the metrics are in. This leaves significant gaps for an agent to understand how to invoke it effectively.

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 highly concise with two sentences that directly state the tool's function and utility. Every word earns its place, with no redundant or vague language. It is front-loaded with the core purpose, making it efficient for an agent to parse.

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 has no parameters and no output schema, the description provides a basic purpose and usage hint. However, for a tool returning performance metrics—which could involve complex data like CPU usage or response times—the lack of behavioral details (e.g., data format, update frequency) and no output schema means the description is minimally adequate but leaves gaps in understanding what to expect from the tool's output.

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 the schema description coverage is 100%, meaning no parameters need documentation. The description does not add parameter-specific information, which is appropriate here. A baseline score of 4 is applied for zero-parameter tools, as no compensation is needed for schema gaps.

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 like 'get_file_info' or 'list_directory' by focusing on server metrics rather than file operations. However, it doesn't explicitly differentiate from all siblings, such as hypothetical monitoring tools, keeping it from a perfect score.

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 to use this tool. However, it lacks explicit guidance on when not to use it or alternatives among siblings, such as whether to use 'execute_command' for real-time checks instead. This makes the guidance incomplete but not absent.

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

A4.4/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 discloses the tool's read-only nature ('Returns the list') and its purpose for permission checking, but lacks details on behavioral traits like rate limits, authentication needs, or error conditions. The description adds some context but is not comprehensive.

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?

Two sentences with zero waste: the first states the purpose, the second provides usage guidance. It is front-loaded with the core functionality and appropriately sized for a simple tool with no parameters.

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 simplicity (0 parameters, no output schema, no annotations), the description is complete enough for its context. It explains what the tool does and when to use it, though it could benefit from mentioning output format or behavioral details. The lack of output schema is a minor gap.

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 no parameter documentation is needed. The description appropriately does not discuss parameters, focusing instead on the tool's purpose and usage. A baseline of 4 is applied as it efficiently handles the lack of parameters.

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 ('Returns the list') and resource ('directories that this server is allowed to access'), distinguishing it from siblings like list_directory (which lists contents of a specific directory) or directory_tree (which shows hierarchical structure). The purpose is precise 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 Guidelines5/5

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

Explicitly states when to use this tool: 'Use this to understand which directories are available before trying to access files.' This provides clear context for its application relative to file-access siblings like read_file, write_file, or list_directory, guiding the agent to check permissions first.

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.8/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 like output formatting ('[FILE] and [DIR] prefixes') and access restrictions ('Only works within allowed directories'), but lacks details on error handling, pagination, or performance limits, leaving gaps for a tool with no annotation coverage.

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 are front-loaded (purpose first, then details, then restriction). However, the third sentence ('This tool is essential...') is somewhat redundant with the first, slightly reducing efficiency.

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 moderate complexity (single parameter, no output schema, no annotations), the description covers purpose, output format, and restrictions adequately but lacks details on return values (e.g., structure of the listing) and error cases, making it minimally viable but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the 'path' parameter fully. The description adds no additional meaning beyond what the schema provides, such as format examples or constraints, resulting in a baseline score of 3.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Get a detailed listing') and resources ('files and directories in a specified path'), and distinguishes it from siblings like 'directory_tree' (which might show hierarchical structure) and 'list_allowed_directories' (which lists allowed paths rather than contents).

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 with 'Only works within allowed directories' and implies usage for 'understanding directory structure and finding specific files,' but doesn't explicitly state when to use alternatives like 'search_files' for filtering or 'directory_tree' for hierarchical views, missing explicit exclusions or comparisons.

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
destinationYesDestination path where to move the file or directory
sourceYesSource path of the file or directory to move

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 helpfully states that the operation fails if the destination exists and that both paths must be within allowed directories. However, it doesn't mention permissions needed, whether the operation is atomic, what happens on partial failures, or if there are rate limits.

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 three sentences that each earn their place: first states the core functionality, second adds important behavioral constraints, third provides scope limitations. No wasted words or redundant information.

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 basic operation and some constraints, but doesn't describe the return value, error conditions beyond destination existence, or what 'allowed directories' means in practice.

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 adequately. The description adds minimal value beyond the schema by implying the relationship between source and destination parameters, but doesn't provide additional syntax, format details, 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 ('move or rename') and resources ('files and directories'), distinguishing it from siblings like 'create_directory', 'edit_file', or 'write_file'. It explicitly mentions the dual functionality of moving between directories and renaming within the same directory.

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 ('move files between directories and rename them'), but doesn't explicitly state when not to use it or name alternatives. For example, it doesn't clarify if 'rename_file' is a separate tool or if this should be used over 'edit_file' for renaming.

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
encodingNoFile encodingutf-8
pathYesPath to the file to read

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 adds valuable context beyond basic functionality: it mentions handling 'various text encodings', providing 'detailed error messages', and the constraint 'Only works within allowed directories'. However, it lacks details on performance aspects like file size limits or memory usage, which could be relevant for large files.

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 in the first sentence, followed by additional context in subsequent sentences. Each sentence adds value: the first states the action, the second adds behavioral traits, and the third provides usage guidelines and constraints. There is no redundant or wasted information, making it efficiently structured.

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 (read operation with encoding support), no annotations, and no output schema, the description is mostly complete. It covers purpose, behavioral traits, and usage constraints. However, it lacks details on the return format (e.g., content as string or structured data) and error handling specifics, which would be helpful since there's no output schema.

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

Parameters3/5

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

The input schema has 100% description coverage, with clear documentation for both parameters ('path' and 'encoding'), including enum values and defaults. The description does not add any parameter-specific details beyond what the schema provides, such as examples or format requirements for 'path'. Thus, it meets the baseline for high schema coverage without compensating with extra insights.

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 of a file') and resource ('from the file system'), distinguishing it from siblings like 'read_multiple_files' (single vs. multiple files), 'get_file_info' (metadata vs. content), and 'edit_file' (read vs. modify). It explicitly mentions the scope ('Only works within allowed directories'), which further differentiates it.

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 ('when you need to examine the contents of a single file') and includes a constraint ('Only works within allowed directories'), but it does not explicitly name alternatives or specify when not to use it. For example, it doesn't mention 'read_multiple_files' for batch operations or 'get_file_info' for metadata only.

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
encodingNoFile encodingutf-8
pathsYesList of file paths to read

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: partial failure tolerance ('Failed reads for individual files won't stop the entire operation'), directory restrictions ('Only works within allowed directories'), and output structure ('Each file's content is returned with its path as a reference'). It lacks details on error handling or performance characteristics, but covers essential operational 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, followed by efficiency rationale, output format, failure behavior, and constraints—all in four concise sentences. Each sentence adds distinct value without redundancy, making it highly efficient and well-structured.

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 no annotations and no output schema, the description does a good job covering purpose, usage, behavior, and constraints. It could be more complete by detailing error responses or performance limits, but it provides sufficient context for a read operation with partial failures and directory restrictions.

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 fully documents both parameters. The description does not add any parameter-specific semantics beyond what the schema provides (e.g., it doesn't explain path formatting or encoding implications). This meets the baseline for high schema coverage without extra value.

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'), identifies the resource ('files'), and distinguishes it from the sibling tool 'read_file' by emphasizing batch efficiency and partial failure tolerance. It explicitly contrasts with reading files one by one, making the purpose distinct and well-defined.

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 ('when you need to analyze or compare multiple files') and mentions efficiency benefits over the sibling 'read_file'. However, it does not explicitly state when not to use it or name specific alternatives beyond the implied contrast, leaving some guidance gaps.

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
excludePatternsNoPatterns to exclude from search results
pathYesRoot path to start searching from
patternYesPattern to match against filenames and directories

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-insensitivity, partial name matching, and restriction to allowed directories. However, it does not cover aspects like performance implications (e.g., time for deep searches), error handling (e.g., invalid paths), or output format details (e.g., how results are structured), leaving some gaps for a tool with no annotations.

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 functionality in the first sentence, followed by supporting details in concise sentences. Each sentence adds value: recursive nature, search scope, matching behavior, return value, usage scenario, and constraints. There is no wasted text, making it highly efficient and well-structured.

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 is largely complete. It covers purpose, behavior, and constraints adequately. However, without an output schema, it could benefit from more detail on the return format (e.g., structure of results, error cases), slightly reducing completeness for a search tool with no structured output documentation.

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 description coverage is 100%, so the schema already documents all parameters (path, pattern, excludePatterns) with clear descriptions. The description adds no additional parameter-specific information beyond what the schema provides, such as examples of pattern syntax or details on excludePatterns usage. 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.

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 ('search for files and directories matching a pattern') and resources ('files and directories'), distinguishing it from siblings like list_directory (which lists without searching) or get_file_info (which gets metadata for a known file). It explicitly mentions the recursive nature and case-insensitive partial matching, which further differentiates its functionality.

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 ('Great for finding files when you don't know their exact location') and mentions constraints ('Only searches within allowed directories'), but it does not explicitly name alternatives or specify when not to use it compared to siblings like list_directory or directory_tree. The guidance is helpful but lacks explicit sibling differentiation.

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
contentYesContent to write to the file
encodingNoFile encodingutf-8
pathYesPath where to write the file

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: the destructive overwrite nature ('overwrite existing files without warning'), content handling ('Handles text content with proper encoding'), and security constraints ('Only works within allowed directories'). This covers safety, scope, and limitations well for a mutation tool.

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

Conciseness5/5

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

The description is efficiently structured in three sentences: purpose, warning, and constraints. Each sentence adds distinct value without redundancy, making it easy to parse and understand the tool's core functionality and limitations.

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, destructive behavior, encoding support, and directory restrictions. However, it doesn't mention error handling, file size limits, or return values, leaving some gaps in 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 the schema already documents all three parameters thoroughly. The description adds minimal parameter semantics beyond the schema, only implying that 'content' is text and 'path' must be within allowed directories. 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 verb ('Create' and 'overwrite') and resource ('file'), specifying it handles both new file creation and complete overwriting of existing files. It distinguishes from sibling tools like 'edit_file' by emphasizing complete overwriting rather than partial modification.

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 ('Create a new file or completely overwrite an existing file') and includes a caution about overwriting. However, it doesn't explicitly mention when NOT to use or name specific alternatives like 'edit_file' for partial modifications, which would be helpful for 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 updatesv1.0.0
    • 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.8/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 about when to use each. The descriptions help differentiate them, but the boundaries are not entirely clear, especially between bash_execute and execute_command.

Naming Consistency5/5

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

Tool Count4/5

With 16 tools, the count is slightly high but reasonable for a filesystem server covering operations like file management, directory handling, and system commands. It includes essential tools without being overly bloated, though some consolidation might improve efficiency.

Completeness5/5

The tool set provides comprehensive coverage for filesystem operations, including CRUD for files and directories, metadata retrieval, searching, editing, and system command execution. There are no obvious gaps; agents can perform typical filesystem tasks without dead ends.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that allows AI models to safely access and interact with local file systems, enabling reading file contents, listing directories, and retrieving file metadata.
    19
    10
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    A Model Context Protocol server that provides secure and intelligent interaction with files and filesystems, offering smart context management and token-efficient operations for working with large files and complex directory structures.
    21
    66
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides secure filesystem access for AI models through the Model Context Protocol with strict path validation, file operations, directory management, and system command execution within predefined directories.
    16
    33
    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/gabrielmaialva33/mcp-filesystem'

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