MCP-1st-Birthday/cuopt-modal
NVIDIA released cuOpt, a powerful tool for solving LP/MILP problems. Though, not everyone has access to strong GPUs, some of us also have Macs as development environment. Nevertheless, we still want to leverage cuOpt's capabilities.
This application allows you to upload an MPS file defining a linear programming (LP) or mixed-integer linear programming (MILP) problem and solve it using NVIDIA's cuOpt solver via Modal. The library imports the MPS file via PuLP, sets up a Modal application with the necessary resources (GPU, CPU, memory), executes the optimization remotely, and finally returns the results.
You can use this library (vollender) as a standalone tool via PyPi or Github, as an MCP server (Gradio or FastMCP) or through Gradio interface. License for this library is Apache-2.0 but its dependents might have other licenses.
For public demo purposes, the resource settings are fixed and cannot be changed. To use custom resource settings, please run the application locally after setting your Modal credentials in the environment variables MODAL_TOKEN_ID and MODAL_TOKEN_SECRET.
vollender
Vollender is a library for handling optimization problems using NVIDIA cuOpt and Modal. It also contains an MCP Server and a Gradio UI. This project is developed for Hugging Face's MCP Hackathon 2025.
AI Agent Support
Vollender is designed to be agent-friendly.
- [agents.md](agents.md): General guide for AI agents.
- [agent-instructions.md](agent-instructions.md): Step-by-step instructions for agents.
- [CLAUDE.md](CLAUDE.md): Context for Claude.
MCP Servers
Vollender provides two MCP server implementations:
FastMCP
Located in mcp/fastmcp/.
To run:
uv run fastmcp run mcp/fastmcp/server.py:mcpGradio MCP
Located in mcp/gradio/.
To run:
uv run python mcp/gradio/server.pyHugging Face Spaces
This project is configured to be deployed to Hugging Face Spaces.
- Create a new Space on Hugging Face.
- Select Gradio as the SDK.
- Upload the contents of this repository (or push via Git).
- Important: Go to Settings > Variables and secrets in your Space and add the following secrets:
MODAL_TOKEN_IDMODAL_TOKEN_SECRET
These are required for the Modal integration to work.
