Skip to main content
Glama

モーダルMCPサーバー

モーダル ボリュームと対話し、カーソル内からモーダル アプリケーションを展開するための MCP サーバー実装。

インストール

  1. このリポジトリをクローンします:

git clone https://github.com/smehmood/modal-mcp-server.git
cd modal-mcp-server
  1. uvを使用して依存関係をインストールします。

uv sync

Related MCP server: Outsource MCP

構成

Cursor でこの MCP サーバーを使用するには、 ~/.cursor/mcp.jsonに次の構成を追加します。

{
  "mcpServers": {
    "modal-mcp-server": {
      "command": "uv",
      "args": [
        "--project", "/path/to/modal-mcp-server",
        "run", "/path/to/modal-mcp-server/src/modal_mcp/server.py"
      ]
    }
  }
}

/path/to/modal-mcp-serverクローンしたリポジトリへの絶対パスに置き換えます。

要件

  • Python 3.11以上

  • uvパッケージマネージャー

  • 有効な資格情報で構成されたモーダル CLI

  • モーダルデプロイのサポート:

    • デプロイされるプロジェクトは依存関係の管理にuvを使用する必要があります

    • モーダルはプロジェクトの仮想環境にインストールする必要があります

サポートされているツール

モーダルボリューム操作

  1. モーダルボリュームの一覧表示( list_modal_volumes )

    • 環境内のすべてのモーダルボリュームを一覧表示します

    • JSON形式のボリューム情報を返します

    • パラメータ: なし

  2. ボリュームの内容の一覧表示( list_modal_volume_contents )

    • モーダルボリューム内のファイルとディレクトリを一覧表示します

    • パラメータ:

      • volume_name : モーダルボリュームの名前

      • path : ボリューム内のパス(デフォルト: "/")

  3. ファイルのコピー( copy_modal_volume_files )

    • モーダルボリューム内のファイルをコピーします

    • パラメータ:

      • volume_name : モーダルボリュームの名前

      • paths : 最後のパスが宛先であるパスのリスト

    • 例: ["source.txt", "dest.txt"]または["file1.txt", "file2.txt", "dest_dir/"]

  4. ファイルを削除( remove_modal_volume_file )

    • モーダルボリュームからファイルまたはディレクトリを削除します

    • パラメータ:

      • volume_name : モーダルボリュームの名前

      • remote_path : 削除するファイル/ディレクトリへのパス

      • recursive : 再帰削除のブールフラグ(デフォルト: false)

  5. ファイルのアップロード( put_modal_volume_file )

    • ファイルまたはディレクトリをモーダルボリュームにアップロードします

    • パラメータ:

      • volume_name : モーダルボリュームの名前

      • local_path : アップロードするローカルファイル/ディレクトリへのパス

      • remote_path : アップロード先のボリューム内のパス(デフォルト: "/")

      • force : 既存のファイルを上書きするためのブールフラグ(デフォルト: false)

  6. ファイルをダウンロード( get_modal_volume_file )

    • モーダルボリュームからファイルをダウンロードします

    • パラメータ:

      • volume_name : モーダルボリュームの名前

      • remote_path : ダウンロードするボリューム内のファイル/ディレクトリへのパス

      • local_destination : ダウンロードしたファイルを保存するローカルパス(デフォルト: 現在のディレクトリ)

      • force : 既存のファイルを上書きするためのブールフラグ(デフォルト: false)

    • 注: ファイルの内容を標準出力に書き込むには、 local_destinationとして "-" を使用します。

モーダル展開

  1. モーダルアプリをデプロイする( deploy_modal_app )

    • モーダルアプリケーションを展開する

    • パラメータ:

      • absolute_path_to_app : モーダルアプリケーションファイルへの絶対パス

    • 注: モーダル アプリを含むプロジェクトでは次の条件を満たす必要があります。

      • 依存関係の管理にはuvを使用する

      • modal CLIを仮想環境にインストールする

応答フォーマット

すべてのツールは、操作の種類に応じて若干の違いはあるものの、標準化された形式で応答を返します。

# JSON operations (list volumes, list contents):
{
    "success": True,
    "data": {...}  # JSON data from Modal CLI
}

# File operations (put, get, copy, remove):
{
    "success": True,
    "message": "Operation successful message",
    "command": "executed command string",
    "stdout": "command output",  # if any
    "stderr": "error output"     # if any
}

# Error case (all operations):
{
    "success": False,
    "error": "Error message describing what went wrong",
    "command": "executed command string",  # for file operations
    "stdout": "command output",  # if available
    "stderr": "error output"     # if available
}

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。

Available Tools

7 tools
copy_modal_volume_filesA
Copy files within a Modal volume. Can copy a source file to a destination file
or multiple source files to a destination directory.

Args:
    volume_name: Name of the Modal volume to perform copy operation in.
    paths: List of paths for the copy operation. The last path is the destination,
          all others are sources. For example: ["source1.txt", "source2.txt", "dest_dir/"]

Returns:
    A dictionary containing the result of the copy operation.

Raises:
    Exception: If the copy operation fails for any reason.
ParametersJSON Schema
NameRequiredDescriptionDefault
volume_nameYes
pathsYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses the operation type (copy) and mentions failure cases ('Raises: Exception'), but doesn't cover permissions needed, rate limits, or what happens with existing destination files. It adds some context but lacks comprehensive behavioral details.

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 well-structured with clear sections (Args, Returns, Raises), front-loaded purpose statement, and no wasted sentences. Each part earns its place by providing essential information efficiently.

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 2 parameters with 0% schema coverage and no output schema, the description does well by fully explaining parameters and return format. However, as a mutation tool with no annotations, it could better cover behavioral aspects like idempotency or error specifics for completeness.

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?

Schema description coverage is 0%, so the description must compensate. It fully explains both parameters: 'volume_name' as the Modal volume name, and 'paths' with detailed semantics including source/destination roles and an example. This adds significant value beyond the bare schema.

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

Purpose5/5

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

The description clearly states the verb ('Copy files') and resource ('within a Modal volume'), specifying it can copy single files or multiple files to directories. It distinguishes from siblings like 'get_modal_volume_file' (read) and 'put_modal_volume_file' (upload).

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

Usage Guidelines4/5

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

The description implies usage for copying files within a Modal volume, but doesn't explicitly state when to use this vs. alternatives like 'put_modal_volume_file' for uploading external files or 'remove_modal_volume_file' for deletion. It provides clear context but lacks explicit exclusions.

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

deploy_modal_appC
Deploy a Modal application using the provided parameters.

Args:
    absolute_path_to_app: The absolute path to the Modal application to deploy.

Returns:
    A dictionary containing deployment results.

Raises:
    Exception: If deployment fails for any reason.
ParametersJSON Schema
NameRequiredDescriptionDefault
absolute_path_to_appYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that deployment can fail and raises exceptions, but doesn't describe what 'deploy' actually does (e.g., creates resources, starts services), what permissions are required, whether it's idempotent, or any rate limits. For a deployment tool with zero annotation coverage, this is insufficient.

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

Conciseness4/5

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

The description is appropriately sized with clear sections (Args, Returns, Raises). It's front-loaded with the core purpose statement. However, the 'Raises' section could be more specific than just 'Exception'.

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

Completeness2/5

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

For a deployment tool with no annotations, no output schema, and minimal parameter documentation, the description is incomplete. It doesn't explain what deployment entails, what the return dictionary contains, or provide sufficient context for safe and effective use. The sibling tools suggest this operates in a Modal environment, but that context isn't leveraged.

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 the description must compensate. It adds that the parameter is 'The absolute path to the Modal application to deploy' which provides basic semantics, but doesn't explain what constitutes a 'Modal application' (e.g., a directory, a specific file format), path format requirements, or validation rules. This provides minimal compensation for the schema gap.

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

Purpose3/5

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

The description states the tool 'Deploy a Modal application' which provides a clear verb+resource combination. However, it doesn't differentiate from sibling tools (which all deal with Modal volumes/files, not deployments), making the purpose clear but lacking sibling 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?

No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites, when deployment is appropriate, or what alternatives might exist for similar operations.

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

get_modal_volume_fileA
Download files from a Modal volume.

Args:
    volume_name: Name of the Modal volume to download from.
    remote_path: Path to the file or directory in the volume to download.
    local_destination: Local path to save the downloaded file(s). Defaults to current directory.
                     Use "-" to write file contents to stdout.
    force: If True, overwrite existing files. Defaults to False.

Returns:
    A dictionary containing the result of the download operation.

Raises:
    Exception: If the download operation fails for any reason.
ParametersJSON Schema
NameRequiredDescriptionDefault
volume_nameYes
remote_pathYes
local_destinationNo.
forceNo

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it's a download operation (implies read-only but not explicitly stated), can overwrite files with 'force', supports stdout output, and may raise exceptions on failure. However, it doesn't mention rate limits, authentication needs, or detailed error handling beyond generic exceptions.

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 well-structured and front-loaded with the core purpose. Each sentence earns its place: the opening statement sets context, the Args section details parameters efficiently, and the Returns/Raises sections provide necessary completion info without redundancy. No wasted words.

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

Completeness4/5

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

Given no annotations and no output schema, the description does a good job covering the tool's complexity. It explains parameters thoroughly, hints at behavior (overwrite, stdout), and mentions error handling. However, it could be more complete by explicitly stating read-only nature or contrasting with upload/list siblings more directly.

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?

Schema description coverage is 0%, so the description must compensate fully. It provides detailed semantics for all 4 parameters: explains what 'volume_name' and 'remote_path' are, clarifies 'local_destination' defaults and special case ('-'), and defines 'force' behavior. This adds significant value beyond the bare schema.

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

Purpose5/5

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

The description clearly states the specific action ('Download files from a Modal volume') and distinguishes it from siblings like 'list_modal_volume_contents' (which lists contents) and 'put_modal_volume_file' (which uploads). It specifies the resource (Modal volume) and verb (download) precisely.

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

Usage Guidelines4/5

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

The description implies usage context by mentioning downloading from a volume, but does not explicitly state when to use this tool versus alternatives like 'copy_modal_volume_files' or 'list_modal_volume_contents'. It provides clear parameter defaults and behavior hints (e.g., using '-' for stdout), 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.

list_modal_volume_contentsB
List files and directories in a Modal volume.

Args:
    volume_name: Name of the Modal volume to list contents from.
    path: Path within the volume to list contents from. Defaults to root ("/").

Returns:
    A dictionary containing the parsed JSON output of the volume contents.
ParametersJSON Schema
NameRequiredDescriptionDefault
volume_nameYes
pathNo/

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the return format ('A dictionary containing the parsed JSON output'), which adds some value, but fails to address critical aspects like read-only nature, error conditions, pagination, or rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is well-structured and concise, with a clear purpose statement followed by separate 'Args' and 'Returns' sections. Each sentence adds value without redundancy, making it easy to parse and understand quickly. The formatting enhances readability without unnecessary 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 the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and parameters but lacks usage guidelines, behavioral details, and output specifics. While it meets a minimum viable standard, it doesn't fully equip an agent for optimal tool selection and invocation in context with siblings.

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 description adds meaningful context for both parameters: 'volume_name' is explained as 'Name of the Modal volume to list contents from,' and 'path' as 'Path within the volume to list contents from. Defaults to root ("/").' This compensates for the 0% schema description coverage by clarifying the purpose and default value, though it doesn't detail constraints or examples.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'List files and directories in a Modal volume.' It specifies the verb ('List') and resource ('files and directories in a Modal volume'), making the action and target explicit. However, it does not differentiate this tool from its sibling 'list_modal_volumes', which might cause confusion without additional context.

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. It lacks context such as prerequisites, when to choose this over 'list_modal_volumes' (which lists volumes themselves), or how it relates to other siblings like 'get_modal_volume_file'. This absence of usage instructions leaves the agent without clear direction.

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

list_modal_volumesB
List all Modal volumes using the Modal CLI with JSON output.

Returns:
    A dictionary containing the parsed JSON output of the Modal volumes list.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions JSON output format but lacks critical details: whether this requires authentication, has rate limits, returns paginated results, or what happens on errors. For a list operation with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness4/5

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

The description is appropriately concise with two focused sentences. The first sentence states the core action and implementation, while the second describes the return format. There's no wasted text, though it could be slightly more structured with clearer separation of concerns.

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 (0 parameters, no output schema, no annotations), the description provides adequate but minimal context. It covers what the tool does and the return format, but lacks behavioral details that would be helpful for an agent. For a read-only list operation, this is minimally viable but leaves room for improvement.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the empty parameter set. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose and output. This meets the baseline expectation for parameterless tools.

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 ('List') and resource ('Modal volumes') with specific implementation details ('using the Modal CLI with JSON output'). It distinguishes from siblings like 'list_modal_volume_contents' by focusing on volumes themselves rather than contents. However, it doesn't explicitly contrast with other volume-related tools like 'copy_modal_volume_files'.

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 is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites, appropriate contexts, or compare it to sibling tools like 'list_modal_volume_contents' for different use cases. The agent receives no usage direction beyond the basic function.

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

put_modal_volume_fileA
Upload a file or directory to a Modal volume.

Args:
    volume_name: Name of the Modal volume to upload to.
    local_path: Path to the local file or directory to upload.
    remote_path: Path in the volume to upload to. Defaults to root ("/").
                If ending with "/", it's treated as a directory and the file keeps its name.
    force: If True, overwrite existing files. Defaults to False.

Returns:
    A dictionary containing the result of the upload operation.

Raises:
    Exception: If the upload operation fails for any reason.
ParametersJSON Schema
NameRequiredDescriptionDefault
volume_nameYes
local_pathYes
remote_pathNo/
forceNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the upload operation, overwrite behavior via the 'force' parameter, and error handling ('Raises: Exception'), but doesn't cover aspects like authentication requirements, rate limits, or what specific data the return dictionary contains.

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 well-structured with clear sections (Args, Returns, Raises) and front-loaded purpose statement. It's appropriately sized for a 4-parameter tool, though the 'Raises' section could be more specific than 'Exception' to be fully optimal.

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 no annotations and no output schema, the description provides adequate coverage for core functionality but has gaps. It explains parameters well and mentions return type (dictionary) and error handling, but doesn't detail the dictionary structure or other behavioral aspects like side effects or prerequisites, leaving some context incomplete.

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?

The description adds significant semantic value beyond the input schema, which has 0% description coverage. It explains all four parameters clearly: volume_name identifies the target, local_path specifies the source, remote_path defines the destination with default and directory-handling rules, and force controls overwrite behavior. This fully compensates for the schema's lack of 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 the specific action ('Upload a file or directory') and target resource ('to a Modal volume'), distinguishing it from sibling tools like get_modal_volume_file (download) or remove_modal_volume_file (delete). It uses precise terminology that matches the tool name without being tautological.

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

Usage Guidelines3/5

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

The description implies usage for uploading files to Modal volumes but doesn't explicitly state when to use this tool versus alternatives like copy_modal_volume_files or when not to use it (e.g., for downloading). It provides some context through parameter explanations but lacks explicit guidance on tool selection.

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

remove_modal_volume_fileB
Delete a file or directory from a Modal volume.

Args:
    volume_name: Name of the Modal volume to delete from.
    remote_path: Path to the file or directory to delete.
    recursive: If True, delete directories recursively. Required for deleting directories.

Returns:
    A dictionary containing the result of the delete operation.

Raises:
    Exception: If the delete operation fails for any reason.
ParametersJSON Schema
NameRequiredDescriptionDefault
volume_nameYes
remote_pathYes
recursiveNo

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool performs a delete operation and mentions potential failure ('Raises: Exception: If the delete operation fails for any reason'), which is useful. However, it lacks details on permissions required, whether deletions are permanent or reversible, rate limits, or what the result dictionary contains. For a destructive tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is appropriately sized and well-structured. It starts with a clear purpose statement, followed by organized sections for 'Args', 'Returns', and 'Raises'. Each sentence adds value without redundancy, making it easy to scan and understand. The formatting enhances readability without unnecessary 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 the tool's complexity (destructive operation with 3 parameters), no annotations, and no output schema, the description is moderately complete. It covers the basic purpose and parameters but lacks details on behavioral aspects like safety warnings, output structure, or error handling specifics. For a delete tool, more context on irreversible actions or confirmation steps would improve completeness, but it meets minimum viable standards.

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 description adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains each parameter: 'volume_name' as 'Name of the Modal volume to delete from', 'remote_path' as 'Path to the file or directory to delete', and 'recursive' with specific usage context ('If True, delete directories recursively. Required for deleting directories'). This compensates well for the schema's lack of descriptions, though it doesn't cover all potential edge cases.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Delete a file or directory from a Modal volume.' It specifies the verb ('Delete') and resource ('file or directory from a Modal volume'), distinguishing it from siblings like 'copy_modal_volume_files' or 'get_modal_volume_file'. However, it doesn't explicitly differentiate from other destructive operations like 'deploy_modal_app' beyond the resource scope.

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

Usage Guidelines3/5

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

The description implies usage context through the 'recursive' parameter explanation ('Required for deleting directories'), suggesting when to set this flag. It doesn't provide explicit guidance on when to use this tool versus alternatives like 'list_modal_volume_contents' for checking before deletion or mention any prerequisites. The guidance is functional but not comprehensive.

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. 7 tool updates
    • First observedcopy_modal_volume_files
    • First observeddeploy_modal_app
    • First observedget_modal_volume_file
    • First observedlist_modal_volume_contents
    • First observedlist_modal_volumes
    • First observedput_modal_volume_file
    • First observedremove_modal_volume_file

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no overlap: copy, deploy, get (download), list contents, list volumes, put (upload), and remove (delete) are all unique operations. The descriptions clearly differentiate between volume operations and app deployment, making tool selection straightforward for an agent.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'modal' as a prefix (e.g., copy_modal_volume_files, deploy_modal_app, get_modal_volume_file). The naming is uniform throughout, using snake_case and clear action-object pairs, making the set predictable and easy to understand.

Tool Count5/5

With 7 tools, this server is well-scoped for managing Modal volumes and applications. Each tool serves a specific, necessary function (e.g., CRUD operations for volumes, listing, and deployment), and there are no redundant or missing tools for the apparent domain, making the count ideal.

Completeness5/5

The tool surface provides complete coverage for Modal volume management (create via put, read via get and list, update via copy, delete via remove) and app deployment. There are no obvious gaps; agents can perform all core workflows without dead ends, ensuring effective operation within the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers