Modal MCP Server
Interaja com volumes Modal e implante aplicações Modal diretamente do Cursor.
Documentação
Modal MCP Server
Uma implementação de servidor MCP para interagir com volumes Modal e implantar aplicações Modal a partir do Cursor.
Instalação
- Clone este repositório:
git clone https://github.com/smehmood/modal-mcp-server.git
cd modal-mcp-server
- Instale as dependências usando
uv:
uv sync
Configuração
Para usar este servidor MCP no Cursor, adicione a seguinte configuração ao seu ~/.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"
]
}
}
}
Substitua /path/to/modal-mcp-server pelo caminho absoluto para o seu repositório clonado.
Requisitos
- Python 3.11 ou superior
- Gerenciador de pacotes
uv - CLI Modal configurada com credenciais válidas
- Para suporte a implantação Modal:
- O projeto sendo implantado deve usar
uvpara gerenciamento de dependências - O Modal deve estar instalado no ambiente virtual do projeto
- O projeto sendo implantado deve usar
Ferramentas Suportadas
Operações de Volume Modal
-
Listar Volumes Modal (
list_modal_volumes)- Lista todos os volumes Modal no seu ambiente
- Retorna informações de volume formatadas em JSON
- Parâmetros: Nenhum
-
Listar Conteúdo do Volume (
list_modal_volume_contents)- Lista arquivos e diretórios em um volume Modal
- Parâmetros:
volume_name: Nome do volume Modalpath: Caminho dentro do volume (padrão: "/")
-
Copiar Arquivos (
copy_modal_volume_files)- Copia arquivos dentro de um volume Modal
- Parâmetros:
volume_name: Nome do volume Modalpaths: Lista de caminhos onde o último caminho é o destino
- Exemplo:
["source.txt", "dest.txt"]ou["file1.txt", "file2.txt", "dest_dir/"]
-
Remover Arquivos (
remove_modal_volume_file)- Exclui um arquivo ou diretório de um volume Modal
- Parâmetros:
volume_name: Nome do volume Modalremote_path: Caminho para o arquivo/diretório a ser excluídorecursive: Flag booleano para exclusão recursiva (padrão: false)
-
Enviar Arquivos (
put_modal_volume_file)- Envia um arquivo ou diretório para um volume Modal
- Parâmetros:
volume_name: Nome do volume Modallocal_path: Caminho para o arquivo/diretório local a ser enviadoremote_path: Caminho no volume para onde enviar (padrão: "/")force: Flag booleano para sobrescrever arquivos existentes (padrão: false)
-
Baixar Arquivos (
get_modal_volume_file)- Baixa arquivos de um volume Modal
- Parâmetros:
volume_name: Nome do volume Modalremote_path: Caminho para o arquivo/diretório no volume a ser baixadolocal_destination: Caminho local para salvar os arquivos baixados (padrão: diretório atual)force: Flag booleano para sobrescrever arquivos existentes (padrão: false)
- Nota: Use "-" como
local_destinationpara escrever o conteúdo do arquivo na saída padrão
Implantação Modal
- Implantar Aplicação Modal (
deploy_modal_app)- Implanta uma aplicação Modal
- Parâmetros:
absolute_path_to_app: Caminho absoluto para o arquivo da aplicação Modal
- Nota: O projeto que contém a aplicação Modal deve:
- Usar
uvpara gerenciamento de dependências - Ter a CLI
modalinstalada em seu ambiente virtual
- Usar
Formato de Resposta
Todas as ferramentas retornam respostas em um formato padronizado, com pequenas variações dependendo do tipo de operação:
# 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
}
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para mais detalhes.