MCP-ORTools integrates Google's OR-Tools constraint programming solver with Large Language Models through the MCP, enabling AI models to: Submit and validate constraint models Set model parameters Solve constraint satisfaction and optimization problems Retrieve and analyze solution
A Model Context Protocol (MCP) server implementation using Google OR-Tools for constraint solving. Designed for use with Large Language Models through standardized constraint model specification.
MCP-ORTools integrates Google's OR-Tools constraint programming solver with Large Language Models through the Model Context Protocol, enabling AI models to:
pip install git+https://github.com/Jacck/mcp-ortools.git
%APPDATA%\Claude\claude_desktop_config.json
(Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS):{ "mcpServers": { "ortools": { "command": "python", "args": ["-m", "mcp_ortools.server"] } } }
Models are specified in JSON format with three main sections:
variables
: Define variables and their domainsconstraints
: List of constraints using OR-Tools methodsobjective
: Optional optimization objectiveConstraints must use OR-Tools method syntax:
.__le__()
for less than or equal (=).__eq__()
for equality (==).__ne__()
for not equal (!=){ "variables": [ {"name": "x", "domain": [0, 10]}, {"name": "y", "domain": [0, 10]} ], "constraints": [ "(x + y).__le__(15)", "x.__ge__(2 * y)" ], "objective": { "expression": "40 * x + 100 * y", "maximize": true } }
Example: Select items with values [3,1,2,1] and weights [2,2,1,1] with total weight limit of 2.
{ "variables": [ {"name": "p0", "domain": [0, 1]}, {"name": "p1", "domain": [0, 1]}, {"name": "p2", "domain": [0, 1]}, {"name": "p3", "domain": [0, 1]} ], "constraints": [ "(2*p0 + 2*p1 + p2 + p3).__le__(2)" ], "objective": { "expression": "3*p0 + p1 + 2*p2 + p3", "maximize": true } }
Additional constraints example:
{ "constraints": [ "p0.__eq__(1)", // Item p0 must be selected "p1.__ne__(p2)", // Can't select both p1 and p2 "(p2 + p3).__ge__(1)" // Must select at least one of p2 or p3 ] }
To setup for development:
git clone https://github.com/Jacck/mcp-ortools.git cd mcp-ortools pip install -e .
The solver returns solutions in JSON format:
{ "status": "OPTIMAL", "solve_time": 0.045, "variables": { "p0": 0, "p1": 0, "p2": 1, "p3": 1 }, "objective_value": 3.0 }
Status values:
MIT License - see LICENSE file for details
Discover shared experiences
Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!