A Model Context Protocol (MCP) server that provides constraint solving capabilities using MiniZinc. This server exposes a single powerful tool for solving constraint satisfaction and optimization problems.
The server provides one core tool:
- solve_constraint - General purpose constraint solver that accepts any MiniZinc model with optional data parameters, solver selection, and timeout configuration
The easiest way to get started is using our free hosted version at:
https://minizinc-mcp.up.railway.app/sse
Build and run locally:
git clone <repository-url>
cd ccake
docker build -t minizinc-mcp .
docker run -p 8000:8000 minizinc-mcpPrerequisites:
- Python 3.11+
- MiniZinc 2.8+ (install from https://www.minizinc.org/software.html)
git clone https://github.com/r33drichards/minizinc-mcp
cd minizinc-mcp
pip install -r requirements.txt
python main.pygot to the connectors settings page
click Add Custom Connector button
for name use "minizinc mcp"
for url use:
https://minizinc-mcp.up.railway.app/sse
Once configured, you can ask Claude to solve constraint problems:
"Solve the 4-Queens problem where 4 queens must be placed on a 4x4 chessboard so that no two queens attack each other"
"Find the optimal solution to a knapsack problem with items having weights [2,3,4,5] and values [3,4,5,6] and capacity 7"
"Solve this custom constraint: I need two variables x and y between 1 and 10 where x + y = 15 and x < y"
The solve_constraint tool returns a SolveResult object containing:
solutions: List of solutions foundstatus: Solving status (SATISFIED, OPTIMAL, UNSATISFIABLE, etc.)solve_time: Time taken to solve in secondsnum_solutions: Number of solutions founderror: Error message if solving failed
Each solution contains:
variables: Dictionary of variable names to valuesobjective: Objective value for optimization problemsis_optimal: Whether the solution is optimal
MIT License - see LICENSE file for details.
claude mcp add minizinc -t sse https://minizinc-mcp.up.railway.app/sse
then to test run the command
claude
in the input window prompt:
Solve the 4-Queens problem where 4 queens must be placed on a 4x4 chessboard so that no two queens attack each other
and you should see an output similar to this: