Modal MCP Server について
Modal MCP Server は、Cursor から Modal のボリューム管理やアプリのデプロイを行うためのサーバーです。ボリュームのファイル操作とアプリのデプロイを MCP ツールとして提供します。
主な機能
- 01ボリュームと内容の一覧表示
- 02ファイルのコピー、削除、アップロード、ダウンロード
- 03Modal アプリのデプロイ
活用シーン
- 01Modal ボリューム内のファイル確認
- 02ボリュームファイルの転送や整理
- 03uv を使うプロジェクトからのアプリのデプロイ
MCP 対応
Cursor などの MCP クライアントに、Modal ボリューム操作とアプリのデプロイ用ツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Modal MCP サーバー
Cursor 内から Modal ボリュームを操作し、Modal アプリケーションをデプロイするための MCP サーバー実装です。
インストール
- このリポジトリをクローンします:
git clone https://github.com/smehmood/modal-mcp-server.git
cd modal-mcp-server
uvを使用して依存関係をインストールします:
uv sync
設定
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パッケージマネージャー- 有効な認証情報で設定された Modal CLI
- Modal のデプロイをサポートする場合:
- デプロイするプロジェクトで、依存関係の管理に
uvを使用する必要があります - プロジェクトの仮想環境に Modal がインストールされている必要があります
- デプロイするプロジェクトで、依存関係の管理に
サポートされているツール
Modal ボリューム操作
-
Modal ボリュームの一覧表示(
list_modal_volumes)- 環境内のすべての Modal ボリュームを一覧表示します
- ボリューム情報を JSON 形式で返します
- パラメーター:なし
-
ボリュームの内容を一覧表示(
list_modal_volume_contents)- Modal ボリューム内のファイルとディレクトリを一覧表示します
- パラメーター:
volume_name:Modal ボリュームの名前path:ボリューム内のパス(デフォルト:「/」)
-
ファイルのコピー(
copy_modal_volume_files)- Modal ボリューム内のファイルをコピーします
- パラメーター:
volume_name:Modal ボリュームの名前paths:最後のパスをコピー先とするパスのリスト
- 例:
["source.txt", "dest.txt"]または["file1.txt", "file2.txt", "dest_dir/"]
-
ファイルの削除(
remove_modal_volume_file)- Modal ボリュームからファイルまたはディレクトリを削除します
- パラメーター:
volume_name:Modal ボリュームの名前remote_path:削除するファイルまたはディレクトリのパスrecursive:再帰的に削除するかどうかを示すブール値(デフォルト:false)
-
ファイルのアップロード(
put_modal_volume_file)- Modal ボリュームにファイルまたはディレクトリをアップロードします
- パラメーター:
volume_name:Modal ボリュームの名前local_path:アップロードするローカルファイルまたはディレクトリのパスremote_path:アップロード先のボリューム内パス(デフォルト:「/」)force:既存のファイルを上書きするかどうかを示すブール値(デフォルト:false)
-
ファイルのダウンロード(
get_modal_volume_file)- Modal ボリュームからファイルをダウンロードします
- パラメーター:
volume_name:Modal ボリュームの名前remote_path:ダウンロードするボリューム内のファイルまたはディレクトリのパスlocal_destination:ダウンロードしたファイルを保存するローカルパス(デフォルト:現在のディレクトリ)force:既存のファイルを上書きするかどうかを示すブール値(デフォルト:false)
- 注:
local_destinationに「-」を指定すると、ファイルの内容を標準出力に書き込みます
Modal のデプロイ
- Modal アプリのデプロイ(
deploy_modal_app)- Modal アプリケーションをデプロイします
- パラメーター:
absolute_path_to_app:Modal アプリケーションファイルの絶対パス
- 注:Modal アプリを含むプロジェクトには、以下が必要です:
- 依存関係の管理に
uvを使用すること - 仮想環境に
modalCLI がインストールされていること
- 依存関係の管理に
レスポンス形式
すべてのツールは、操作の種類に応じて多少異なる、標準化された形式でレスポンスを返します:
# 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 ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。