cuopt_mcp: add VRP/routing support
@Iroy30 is already working on this.
Since Sep 18, 2026.
- Dominant language
- Cuda
- Stars
- 1k
- Forks
- 233
- Avg merge
- 4d 4h
- Merged PRs (30d)
- 95
Description
cuopt_mcp (#1916) currently exposes LP and MILP solving only (cuopt_solve_lp/cuopt_solve_milp), backed by cuopt.grpc.client.grpc_client.Client. Routing/VRP isn't wired in.
Why this is bigger than adding another tool
LP/MILP submission is file-based — problem_path works because MPS/LP are standard formats Read() parses directly. VRP has no file-format equivalent: a routing problem is built programmatically via DataModel calls (fleet size, cost matrix or coordinates, demand, capacity, time windows, breaks, etc.). A cuopt_solve_vrp tool needs a structured JSON input schema covering that construction surface instead of a problem_path string — real design work, not just plumbing.
What's already reusable
RoutingClient (merged into the same cuopt.grpc.client.grpc_client extension module as Client) has a near-identical shape — submit/status/wait/cancel/result/delete — so the tool-calling pattern this PR established (async submit, _guard-shaped errors, generated settings catalogue) should carry over cleanly once the input schema exists.
Gaps to close
- Design a JSON Schema for VRP problem construction (fleet, tasks, time windows, matrices, etc.) to replace
problem_path. cpp/src/grpc/codegen/field_registry.yamlonly haspdlp_settings/mip_settings— no routing settings section, socuopt_list_settings-style generated discovery doesn't cover routing yet. Extending codegen to routing settings (or hand-writing a schema, which the existing settings catalogue deliberately avoids) is its own piece of work.- New tools:
cuopt_solve_vrp, plus routing-appropriatecuopt_resultshaping (route sequences/vehicle assignments look nothing like an LP variable vector).
Scoped as a follow-up to #1916, not part of it.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.