Skip to main content
Glama

Modal MCP Server

An MCP server implementation for interacting with Modal volumes and deploying Modal applications from within Cursor.

Installation

  1. Clone this repository:

git clone https://github.com/smehmood/modal-mcp-server.git cd modal-mcp-server
  1. Install dependencies using uv:

uv sync

Related MCP server: MCP Shell Server

Configuration

To use this MCP server in Cursor, add the following configuration to your ~/.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" ] } } }

Replace /path/to/modal-mcp-server with the absolute path to your cloned repository.

Requirements

  • Python 3.11 or higher

  • uv package manager

  • Modal CLI configured with valid credentials

  • For Modal deploy support:

    • Project being deployed must use uv for dependency management

    • Modal must be installed in the project's virtual environment

Supported Tools

Modal Volume Operations

  1. List Modal Volumes (list_modal_volumes)

    • Lists all Modal volumes in your environment

    • Returns JSON-formatted volume information

    • Parameters: None

  2. List Volume Contents (list_modal_volume_contents)

    • Lists files and directories in a Modal volume

    • Parameters:

      • volume_name: Name of the Modal volume

      • path: Path within volume (default: "/")

  3. Copy Files (copy_modal_volume_files)

    • Copies files within a Modal volume

    • Parameters:

      • volume_name: Name of the Modal volume

      • paths: List of paths where last path is destination

    • Example: ["source.txt", "dest.txt"] or ["file1.txt", "file2.txt", "dest_dir/"]

  4. Remove Files (remove_modal_volume_file)

    • Deletes a file or directory from a Modal volume

    • Parameters:

      • volume_name: Name of the Modal volume

      • remote_path: Path to file/directory to delete

      • recursive: Boolean flag for recursive deletion (default: false)

  5. Upload Files (put_modal_volume_file)

    • Uploads a file or directory to a Modal volume

    • Parameters:

      • volume_name: Name of the Modal volume

      • local_path: Path to local file/directory to upload

      • remote_path: Path in volume to upload to (default: "/")

      • force: Boolean flag to overwrite existing files (default: false)

  6. Download Files (get_modal_volume_file)

    • Downloads files from a Modal volume

    • Parameters:

      • volume_name: Name of the Modal volume

      • remote_path: Path to file/directory in volume to download

      • local_destination: Local path to save downloaded files (default: current directory)

      • force: Boolean flag to overwrite existing files (default: false)

    • Note: Use "-" as local_destination to write file contents to stdout

Modal Deployment

  1. Deploy Modal App (deploy_modal_app)

    • Deploys a Modal application

    • Parameters:

      • absolute_path_to_app: Absolute path to the Modal application file

    • Note: The project containing the Modal app must:

      • Use uv for dependency management

      • Have the modal CLI installed in its virtual environment

Response Format

All tools return responses in a standardized format, with slight variations depending on the operation type:

# 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 }

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/smehmood/modal-mcp-server'

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