MCP Filesystem Server
Enables HTTP requests to external APIs with support for various methods, headers, and authentication (coming in v1.2.0)
Provides secure filesystem access with tools for reading, writing, editing files, managing directories, searching files, and executing system commands within predefined allowed directories
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Filesystem Serverlist files in my Documents folder"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
: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:
Node.js (>=18.0.0)
pnpm (>=8.0.0)
Docker (optional)
Docker Compose (optional)
: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.jsonUsing 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.jsonUsing 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.jsonUsing 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:
Using Local Installation (Recommended)
{
"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-filesystemUsing 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.jsonExample 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
Available Tools
16 toolsbash_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.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The bash command to execute | |
| workingDir | No | Working directory for command execution | |
| timeout | No | Maximum execution time in milliseconds (max 60s) | |
| env | No | Additional environment variables for the command |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | Array of commands to pipe together | |
| workingDir | No | Working directory for command execution | |
| timeout | No | Maximum execution time in milliseconds (max 60s) | |
| env | No | Additional environment variables for the command |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path of the directory to create |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL to send the request to | |
| method | No | HTTP method | GET |
| headers | No | HTTP headers to include in the request | |
| data | No | Data to send in the request body | |
| timeout | No | Request timeout in seconds | |
| followRedirects | No | Whether to follow redirects | |
| insecure | No | Whether to skip SSL certificate verification (use with caution) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path of the directory to create a tree view for |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the file to edit | |
| edits | Yes | List of edit operations to perform | |
| dryRun | No | Preview changes using git-style diff format |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The command to execute | |
| workingDir | No | Working directory for command execution | |
| timeout | No | Maximum execution time in milliseconds (max 30s) | |
| captureOutput | No | Whether to capture and return command output |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the file or directory to get information about |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path of the directory to list |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Source path of the file or directory to move | |
| destination | Yes | Destination path where to move the file or directory |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the file to read | |
| encoding | No | File encoding | utf-8 |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | List of file paths to read | |
| encoding | No | File encoding | utf-8 |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Root path to start searching from | |
| pattern | Yes | Pattern to match against filenames and directories | |
| excludePatterns | No | Patterns to exclude from search results |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path where to write the file | |
| content | Yes | Content to write to the file | |
| encoding | No | File encoding | utf-8 |
TDQS
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.
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.
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.
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.
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.
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.
16 tool updates
- First observed
bash_execute - First observed
bash_pipe - First observed
create_directory - First observed
curl_request - First observed
directory_tree - First observed
edit_file - First observed
execute_command - First observed
get_file_info - First observed
get_metrics - First observed
list_allowed_directories - First observed
list_directory - First observed
move_file - First observed
read_file - First observed
read_multiple_files - First observed
search_files - First observed
write_file
TDQS
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.
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.
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.
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
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
Securely search and manage workspace context files for AI agents and teams.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Browse and manage files in your Moxt AI workspace from any MCP client.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- FlicenseDqualityDmaintenanceEnables AI models to perform file system operations (reading, creating, and listing files) on a local file system through a standardized Model Context Protocol interface.3-
- AlicenseAqualityCmaintenanceA secure Model Context Protocol server that provides controlled filesystem access within predefined directories, enabling AI models to perform file and directory operations with strict path validation.16337MIT
- AlicenseAqualityFmaintenanceA Model Context Protocol server that provides AI agents with secure access to local filesystem operations, enabling reading, writing, and managing files through a standardized interface.103250Apache 2.0
- FlicenseNot gradedqualityNot gradedmaintenanceProvides remote filesystem operations, git repository management, and process execution capabilities for AI agents through the Model Context Protocol.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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