Skip to main content
Glama
vaayne

omni-fs-mcp

by vaayne

Omni-FS MCP Server

An MCP server that provides unified access to multiple file systems simultaneously through OpenDAL.

Installation

pip install omni-fs-mcp

Related MCP server: MinIO Model-Context Protocol (MCP) Server

Quick Start

Single Backend

# Local filesystem
omni-fs-mcp "fs://"

# S3
omni-fs-mcp --transport http "s3://bucket?region=us-east-1&access_key_id=xxx&secret_access_key=yyy"

# WebDAV
omni-fs-mcp "webdav://server.com/path?username=user&password=pass"

# Memory (testing)
omni-fs-mcp "memory://"

Multi-Backend with Config File

Create backends.json:

{
  "backends": [
    {
      "name": "local",
      "url": "fs://",
      "description": "Local filesystem",
      "default": true
    },
    {
      "name": "s3-prod",
      "url": "s3://bucket?region=us-east-1&access_key_id=...",
      "description": "Production S3"
    }
  ]
}

Run with config:

# Stdio (default)
omni-fs-mcp backends.json

# HTTP
omni-fs-mcp --transport http --config backends.json --port 8080

Usage

Command Options

omni-fs-mcp [OPTIONS] [URL_OR_CONFIG]

Options:
  --config FILE         JSON configuration file
  --transport TYPE      stdio (default) or http
  --port PORT          HTTP port (default: 8000)
  --host HOST          HTTP host (default: localhost)

Available Tools

File Operations:

  • list_files(path, backend=None) - List files and directories

  • read_file(path, backend=None) - Read file contents

  • write_file(path, content, backend=None) - Write to file

  • copy_file(src, dst, src_backend=None, dst_backend=None) - Copy files

  • rename_file(src, dst, backend=None) - Rename/move files

  • create_dir(path, backend=None) - Create directory

  • stat_file(path, backend=None) - Get file metadata

Backend Management:

  • register_backend(name, url, ...) - Add new backend

  • list_backends() - Show all backends

  • set_default_backend(name) - Set default backend

  • remove_backend(name) - Remove backend

  • check_backend_health(backend=None) - Check connectivity

Supported Backends

Type

URL Example

Local

fs://

S3

s3://bucket?region=us-east-1&access_key_id=...

WebDAV

webdav://server.com/path?username=user&password=pass

Memory

memory://

FTP

ftp://server.com?username=user&password=pass

HTTP

https://api.example.com

Examples

Cross-Backend Copy

# Backup to S3
copy_file("/local/file.txt", "/backup/file.txt",
          src_backend="local", dst_backend="s3-backup")

Runtime Backend Management

# Add temporary backend
register_backend("temp", "memory://", description="Temp storage")

# Use it
write_file("/test.txt", "content", backend="temp")

Development

git clone <repo>
cd omni-fs-mcp
uv sync

# Run locally
uv run omni-fs-mcp "memory://"

License

MIT

Available Tools

13 tools
check_backend_healthB
Check the health status of backends by attempting basic operations.

Args:
    backend: Specific backend to check (checks all if not specified)

Returns:
    Dictionary mapping backend names to their health status (True/False)
ParametersJSON Schema
NameRequiredDescriptionDefault
backendNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Without annotations, the description carries the burden of disclosure. It conveys that the tool 'attempts basic operations' to check health, indicating it performs actions, but does not specify what operations, side effects, or permission requirements exist.

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

Conciseness4/5

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

The description is concise and well-structured with a brief intro followed by parameter/return documentation. No unnecessary details, though it could be slightly more streamlined (e.g., avoid docstring format).

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

Completeness4/5

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

Given the simple tool (1 optional parameter, no required fields) and explicit return description (dictionary of health statuses), the description covers the essential behavior. Missing potential error handling for invalid backends, but acceptable for a health check.

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

Parameters4/5

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

With 0% schema description coverage, the description provides crucial semantics: the 'backend' parameter specifies which backend to check, and defaults to checking all if omitted. This adds value beyond the schema's type and default.

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

Purpose4/5

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

The description clearly states the verb 'check' and resource 'health status of backends', distinguishing it from sibling tools like 'list_backends' and 'get_backend_stats' which focus on listing or statistics rather than active health verification via basic operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., 'get_backend_stats'). The description is functional but lacks context about prerequisites or when not to use it.

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

copy_fileB
Copy a file between backends or within the same backend.

Args:
    src: Source file path
    dst: Destination file path
    src_backend: Source backend name (uses default if not specified)
    dst_backend: Destination backend name (uses default if not specified)

Returns:
    Success message
ParametersJSON Schema
NameRequiredDescriptionDefault
srcYes
dstYes
src_backendNo
dst_backendNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose key behavioral traits such as overwrite behavior, source existence checks, authentication requirements, or whether the operation is atomic. The only behavioral claim is a success message return.

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

Conciseness4/5

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

The description is concise and uses a standard docstring format with an Args section. It conveys the essential information without unnecessary verbosity, though it could be slightly more compact.

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

Completeness3/5

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

Given the tool performs a file copy operation across backends, the description lacks details on overwrite policy, error handling, and backend-specific behaviors. The output schema exists but the description only mentions 'Success message,' which is minimal.

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

Parameters3/5

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

The description lists parameters with brief explanations, adding 'uses default if not specified' for backend parameters—information not present in the schema. However, coverage is low (0%), and most descriptors are redundant with the schema titles.

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

Purpose5/5

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

The description clearly states 'Copy a file between backends or within the same backend,' which specifies the action (copy), resource (file), and scope (backends). This distinguishes it from siblings like rename_file, which performs a different operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives. It implies copying but does not mention when not to use it or compare with rename_file or other file operations.

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

create_dirB
Create a directory on the specified backend.

Args:
    path: Directory path to create
    backend: Backend name to use (uses default backend if not specified)

Returns:
    Success message
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
backendNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Only states it creates a directory and returns success; no info on overwrite behavior, permissions, idempotency, or 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.

Conciseness4/5

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

Short and front-loaded with purpose. Every sentence adds value, though the Args/Returns section could be integrated more concisely.

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

Completeness3/5

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

Adequate for a simple directory creation with 2 params and no annotations, but lacks behavioral details that would help an agent anticipate side effects or prerequisites.

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

Parameters3/5

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

Schema description coverage is 0%, so description adds basic meaning: path is directory path, backend can be omitted for default. However, lacks details like path format or backend selection logic.

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

Purpose5/5

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

Clearly states 'Create a directory on the specified backend', which is a specific verb-resource pair. Distinguishes from sibling tools like copy_file or read_file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like list_files or copy_file. Does not mention prerequisites or context for creation.

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

get_backend_statsA
Get statistics and information about the backend manager.

Returns:
    Dictionary with total backends, default backend, healthy backends count, etc.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the return value structure (dictionary with total backends, default backend, healthy backends count). However, it does not mention any side effects or access requirements, which is acceptable for a read-only operation.

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

Conciseness5/5

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

The description is extremely concise: two sentences front-loading the purpose and return value. No redundant information, every sentence earns its place.

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

Completeness5/5

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

Given zero parameters and the presence of an output schema, the description adequately explains the return content. For a simple stats retrieval tool, this is fully complete.

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

Parameters4/5

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

The tool has zero parameters, and the schema description coverage is 100% (empty). With no parameters, a baseline score of 4 applies as the description need not add parameter details.

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

Purpose5/5

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

The description clearly states the tool retrieves 'statistics and information about the backend manager' with a specific verb and resource. It distinguishes from siblings like check_backend_health (health of a specific backend) and list_backends (listing backends).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for getting general backend stats but does not explicitly state when to use this tool versus alternatives like check_backend_health or list_backends. No exclusion criteria or contextual guidance is provided.

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

list_backendsA
List all registered backends with their configurations and status.

Returns:
    List of backend information including name, URL, description,
    readonly status, default status, and health status
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, and the description only states the return fields. It does not disclose behavioral traits like caching, freshness, rate limits, or authentication requirements. Minimal behavioral context beyond the output schema.

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

Conciseness5/5

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

The description is extremely concise with one line for purpose and a structured return description. Front-loads the action. Every sentence serves a clear purpose.

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

Completeness4/5

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

For a simple zero-parameter list tool with a provided output schema, the description covers the essential return fields. However, it lacks context on potential size, ordering, or performance implications. Nearly complete.

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

Parameters4/5

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

The tool has no parameters, so the description does not need to add parameter meaning. Schema coverage is trivially 100%. Baseline score of 4 for zero parameters is appropriate.

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

Purpose5/5

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

The description clearly states the verb ('List'), resource ('registered backends'), and scope ('all'). It distinguishes from siblings like 'check_backend_health' and 'get_backend_stats' by specifying the comprehensive listing purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for listing all backends but provides no explicit guidance on when to use this tool over alternatives. No exclusions or conditions are mentioned. Sibling tools are listed but not compared.

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

list_filesB
List files and directories in the specified path.

Args:
    path: The directory path to list (default: "/")
    backend: Backend name to use (uses default backend if not specified)

Returns:
    List of entries with their metadata
ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo/
backendNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only mentions returning a list with metadata but does not specify behavior like recursion, error handling, or authentication needs.

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

Conciseness4/5

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

The description is concise with a clear structure: a brief sentence followed by an Args list and Returns note. However, the Args section could be omitted if the schema were documented, making it slightly verbose.

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

Completeness3/5

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

Given the output schema exists, the description need not detail return values. However, lack of information about listing behavior (recursive?), edge cases, or performance makes it incomplete for a tool among many siblings.

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

Parameters3/5

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

The description explains the two parameters (path and backend) but lacks details on path format, valid values, or how backend connects to other tools. It adds basic meaning beyond the schema, which has 0% coverage.

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

Purpose5/5

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

The description clearly states the tool's function: 'List files and directories in the specified path.' It uses a specific verb and resource, and distinguishes from sibling tools like read_file or stat_file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description does not provide guidance on when to use this tool versus alternatives. It implies usage through the list of arguments but lacks explicit context or exclusions.

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

read_fileC
Read file contents from the specified backend.

Args:
    path: File path to read
    backend: Backend name to use (uses default backend if not specified)

Returns:
    File contents as string
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
backendNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It mentions reading file contents and returning a string, but omits details like error handling, permissions needed, binary file handling, or any side effects.

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

Conciseness4/5

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

The description is concise with no fluff, using a clear Args/Returns structure. Every sentence serves a purpose, though the Returns section could be integrated into the main description.

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

Completeness3/5

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

Given the tool's simplicity and the presence of an output schema, the description covers the basics. However, it lacks details on encoding, error behavior, or limitations, which would help in complex use cases.

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

Parameters2/5

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

Schema coverage is 0%, so the description should add meaning. It names the parameters (path, backend) and their roles, but provides no additional context like path format, accepted backends, or examples. This is minimally helpful.

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

Purpose4/5

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

The description clearly states the tool reads file contents from a specified backend, using a specific verb and resource. It distinguishes itself from sibling tools like write_file or list_files, though it could be more specific about the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., when to use stat_file or list_files instead). It only states what it does, leaving the agent to infer usage context.

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

register_backendA
Register a new backend with the given configuration.

Args:
    name: Unique identifier for the backend (alphanumeric, hyphens, underscores only)
    url: Backend connection URL (e.g., "fs:///", "s3://bucket", "memory:///")
    description: Human-readable description of the backend
    readonly: Whether this backend should be treated as read-only
    timeout: Connection timeout in seconds
    retry_attempts: Number of retry attempts for failed operations
    set_as_default: Whether to set this as the default backend
    validate_connection: Whether to validate the connection during registration

Returns:
    Success or failure message
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
urlYes
descriptionNo
readonlyNo
timeoutNo
retry_attemptsNo
set_as_defaultNo
validate_connectionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description must carry the full burden. It mentions connection validation and default setting but lacks details on side effects, error handling, or idempotency.

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

Conciseness4/5

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

The description is structured with a summary, Args list, and Returns. It is mostly concise, though bullet points for each parameter add slight verbosity.

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

Completeness3/5

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

Given 8 parameters, no annotations, and an output schema, the description covers parameter semantics well but lacks important behavioral context like side effects and error handling.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining each parameter, including validation rules for 'name' and examples for 'url'.

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

Purpose5/5

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

The description clearly states 'Register a new backend with the given configuration,' using a specific verb and resource. It distinguishes from siblings like remove_backend and list_backends.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description does not provide guidance on when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it.

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

remove_backendA
Remove a backend from the manager.

Args:
    name: Name of the backend to remove
    force: Force removal even if it's the default backend

Returns:
    Success message
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description bears full burden. It mentions the force parameter behavior, adding some transparency, but fails to disclose side effects, irreversibility, or failure conditions.

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

Conciseness5/5

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

Extremely concise: two sentences plus Args/Returns. Front-loaded with purpose. No unnecessary fluff.

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

Completeness3/5

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

Covers basic purpose and parameters, but misses prerequisites (e.g., backend must be registered) and permanence of removal. Output schema exists but description also mentions return, so partially complete.

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

Parameters4/5

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

Schema has 0% description coverage, but the description explains both parameters: 'name' as the backend name, and 'force' for forced removal. This adds essential meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'Remove a backend from the manager.' with a specific verb (remove) and resource (backend). It distinguishes well from sibling tools like register_backend, set_default_backend, and list_backends.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., register_backend, set_default_backend). Missing prerequisites, such as the backend existing before removal.

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

rename_fileB
Rename or move a file within a backend.

Args:
    src: Source file path
    dst: Destination file path
    backend: Backend name to use (uses default backend if not specified)

Returns:
    Success message
ParametersJSON Schema
NameRequiredDescriptionDefault
srcYes
dstYes
backendNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

The description does not disclose behavioral traits such as whether the source is deleted after rename, handling of existing destinations, or permission requirements. With no annotations, more detail is needed.

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

Conciseness5/5

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

The description is very concise, structured with Args and Returns sections, and contains no unnecessary words. It is appropriately sized for the task.

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

Completeness3/5

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

The description covers basic purpose and parameters but lacks details on path formats, error conditions, and the exact return value. Although an output schema exists, it is not provided.

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

Parameters3/5

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

The description adds value for the backend parameter (explains default behavior), but for src and dst, it merely restates the parameter names without additional detail. With 0% schema description coverage, it partially compensates.

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

Purpose4/5

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

The description clearly states 'Rename or move a file within a backend,' specifying the verb and resource. It implicitly distinguishes from sibling tools like copy_file, but lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like copy_file, move, or other file operations. No prerequisites or context are mentioned.

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

set_default_backendB
Set the default backend for operations when no backend is specified.

Args:
    name: Name of the backend to set as default

Returns:
    Success message
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavioral traits. It indicates mutation ('set') and a return value, but does not mention failure scenarios (e.g., if the backend doesn't exist), side effects, or error conditions. This is insufficient for a write operation.

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

Conciseness4/5

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

The description is short and to the point, with two clear paragraphs. It is front-loaded with the purpose. Minor improvement could be combining the Args and Returns into a single sentence, but it is still efficient.

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

Completeness2/5

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

Given the tool has one required parameter and an output schema, the description is incomplete. It does not explain how to find available backends (e.g., use list_backends) or that the backend must be registered first. For a simple tool, more context is needed for correct invocation.

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

Parameters2/5

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

The schema has 0% description coverage, so the description should add meaning beyond the property title. However, the Args section merely restates the schema: 'name: Name of the backend to set as default'. It adds no constraints or context (e.g., must be a registered backend).

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

Purpose5/5

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

The description clearly states the tool's action: setting the default backend. It specifies the resource ('default backend for operations') and the condition ('when no backend is specified'), which distinguishes it from sibling tools like register_backend or check_backend_health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage when you want to set a default backend, but it does not provide explicit guidance on when not to use this tool or mention alternatives. It lacks context such as prerequisites (e.g., the backend must already be registered).

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

stat_fileA
Get metadata/statistics for a file or directory.

Args:
    path: Path to get statistics for
    backend: Backend name to use (uses default backend if not specified)

Returns:
    File metadata object
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
backendNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description must disclose behavioral traits. It states it gets metadata and returns a file metadata object, suggesting a read-only operation. However, it fails to mention behavior for missing paths, invalid backends, or potential side effects, which are important for safe invocation.

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

Conciseness5/5

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

The description is extremely concise, using a single sentence for purpose followed by structured Args and Returns sections. Every sentence adds value without redundancy, and the front-loaded format aids quick comprehension.

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

Completeness2/5

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

Despite low complexity (2 params, no enums), the description omits details about the returned 'File metadata object'—its fields or structure—and the valid backend values. Without an output schema, an agent lacks sufficient information to interpret results or handle errors, leaving significant gaps.

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

Parameters4/5

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

With 0% schema coverage, the description provides crucial parameter explanations: 'path: Path to get statistics for' and 'backend: Backend name to use (uses default backend if not specified).' This adds meaningful context beyond bare schema types, compensating well for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states 'Get metadata/statistics for a file or directory,' providing a specific verb and resource. It naturally distinguishes from sibling tools like read_file (content) and list_files (names), making the tool's purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for retrieving file metadata but gives no explicit when-to-use or when-not-to-use guidance. It does not reference alternative tools for similar tasks, such as list_files for directory listings or read_file for content, leaving the selection partially to inference.

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

write_fileA
Write content to a file on the specified backend.

Args:
    path: File path to write to
    content: Content to write to the file
    backend: Backend name to use (uses default backend if not specified)

Returns:
    Success message
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes
backendNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral traits. It discloses the write operation but omits critical details like whether the file is overwritten or appended, whether paths are created automatically, permissions, or error handling. For a file-writing tool, this is insufficient transparency.

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

Conciseness4/5

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

The description is reasonably concise but includes a redundant 'Args:' section since the schema already defines parameters. The structure is clear, but could be more streamlined by removing the label and integrating the parameter explanations.

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

Completeness3/5

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

Given the tool's simplicity and presence of an output schema, the description is adequate but not complete. It mentions a success message return but does not detail the output format or potential error states. The sibling tools list is large, yet no comparisons are provided, leaving the agent to infer boundaries.

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

Parameters4/5

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

With 0% schema description coverage, the description adds meaningful semantics for all three parameters: path, content, and backend. It clarifies that backend is optional with a default, which is not evident from the schema alone. However, it lacks details on path format or content encoding.

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

Purpose5/5

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

The description clearly states the action ('Write content') and the resource ('to a file'), and distinguishes from sibling tools like 'read_file' and 'copy_file'. The mention of 'on the specified backend' adds context that differentiates it from generic file operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description mentions the default backend behavior but provides no explicit guidance on when to use this tool versus alternatives like 'copy_file' or 'create_dir'. The agent must infer usage from the tool name and basic purpose, lacking when-not-to-use or prerequisite information.

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.

  1. 13 tool updatesv0.1.8
    • First observedcheck_backend_health
    • First observedcopy_file
    • First observedcreate_dir
    • First observedget_backend_stats
    • First observedlist_backends
    • First observedlist_files
    • First observedread_file
    • First observedregister_backend
    • First observedremove_backend
    • First observedrename_file
    • First observedset_default_backend
    • First observedstat_file
    • First observedwrite_file

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation5/5

Each tool targets a distinct operation: file reading, writing, copying, renaming, listing, directory creation, and backend management. No overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (e.g., write_file, list_backends), making them predictable and easy to understand.

Tool Count5/5

With 13 tools, the server covers both file operations and backend management comprehensively without being bloated.

Completeness3/5

The file operations cover most CRUD but are missing a delete file tool, which is a significant gap for a file system server. Backend management seems complete.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides a standardized way to interact with MinIO object storage, allowing access to text files, binary files, and bucket contents while supporting operations like listing buckets/objects, retrieving objects, and uploading files.
    6
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides unified access to multiple cloud object storage services (Huawei OBS, Alibaba OSS, AWS S3, MinIO) enabling AI assistants to list, search, retrieve, and manage unstructured data across different storage providers.
    -
  • F
    license
    A
    quality
    Not graded
    maintenance
    Enables unified access to both structured databases (PostgreSQL, MySQL, SQLite, etc.) and unstructured object storage (AWS S3, Alibaba OSS, Huawei OBS, etc.) through a single interface.
    7
    -