MCP Filesystem Server
Provides containerized deployment of the MCP server, with support for mounting host directories as read-only or read-write volumes, allowing secure file operations from within Docker containers.
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 the 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 | |
| env | No | Additional environment variables for the command | |
| timeout | No | Maximum execution time in milliseconds (max 60s) | |
| workingDir | No | Working directory for command execution |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | Array of commands to pipe together | |
| env | No | Additional environment variables for the command | |
| timeout | No | Maximum execution time in milliseconds (max 60s) | |
| workingDir | No | Working directory for command execution |
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 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.
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.
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.
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.
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.
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.
| 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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Data to send in the request body | |
| followRedirects | No | Whether to follow redirects | |
| headers | No | HTTP headers to include in the request | |
| insecure | No | Whether to skip SSL certificate verification (use with caution) | |
| method | No | HTTP method | GET |
| timeout | No | Request timeout in seconds | |
| url | Yes | Full URL to send the request to |
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 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.
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.
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.
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.
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.
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.
| 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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview changes using git-style diff format | |
| edits | Yes | List of edit operations to perform | |
| path | Yes | Path to the file to edit |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| captureOutput | No | Whether to capture and return command output | |
| command | Yes | The command to execute | |
| timeout | No | Maximum execution time in milliseconds (max 30s) | |
| workingDir | No | Working directory for command execution |
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: 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.
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.
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.
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.
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.
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.
| 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 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.
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.
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.
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.
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.
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.
| 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 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.
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.
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.
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.
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.
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.
| 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 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.
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.
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.
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.
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.
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.
| 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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| destination | Yes | Destination path where to move the file or directory | |
| source | Yes | Source path of the file or directory to move |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| encoding | No | File encoding | utf-8 |
| path | Yes | Path to the file to read |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| encoding | No | File encoding | utf-8 |
| paths | Yes | List of file paths to read |
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: 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| excludePatterns | No | Patterns to exclude from search results | |
| path | Yes | Root path to start searching from | |
| pattern | Yes | Pattern to match against filenames and directories |
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-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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Content to write to the file | |
| encoding | No | File encoding | utf-8 |
| path | Yes | Path where to write the file |
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: 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.
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.
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.
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.
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.
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.
16 tool updates
v1.0.0- 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 about when to use each. The descriptions help differentiate them, but the boundaries are not entirely clear, especially between bash_execute and execute_command.
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.
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.
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
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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.1910MIT
- AlicenseAqualityFmaintenanceA 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.2166MIT
- 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
- AlicenseAqualityDmaintenanceProvides 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.1633MIT
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/gabrielmaialva33/mcp-filesystem'
If you have feedback or need assistance with the MCP directory API, please join our Discord server