MCP-ORTools
About
Model Context Protocol (MCP) server implementation using Google OR-Tools for constraint solving
Details
- Author
- MCP-Reasoner
- Downloads
- 97
- Categories
- Other
Jump to
- Full OR-Tools CP-SAT solver support
- JSON-based model specification
- Integer and boolean variable domains
- Linear constraints using OR-Tools method syntax
- Linear optimization objectives with maximize/minimize
- Support for timeouts and solver parameters
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
MCP-ORToolsCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install the package via pip install git+https://github.com/Jacck/mcp-ortools.git, then configure Claude Desktop by adding an ortools MCP server entry pointing to python -m mcp_ortools.server in the MCP configuration file. Submit constraint models in JSON format with variables, constraints, and optional objective sections.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mcp-ortools": {
"ortools": {
"command": "python",
"args": [
"-m",
"mcp_ortools.server"
]
}
}
}
}
McpServers
{
"ortools": {
"command": "python",
"args": [
"-m",
"mcp_ortools.server"
]
}
}
MCP-ORTools
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.
Overview
MCP-ORTools integrates Google's OR-Tools constraint programming solver with Large Language Models through the Model Context Protocol, enabling AI models to:
- Submit and validate constraint models
- Set model parameters
- Solve constraint satisfaction and optimization problems
- Retrieve and analyze solutions
Installation
1. Install the package:
pip install git+https://github.com/Jacck/mcp-ortools.git
2. Configure Claude Desktop
Create the configuration file at %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"]
}
}
}
Model Specification
Models are specified in JSON format with three main sections:
- variables: Define variables and their domains
- constraints: List of constraints using OR-Tools methods
- objective: Optional optimization objective
Constraint Syntax
Constraints must use OR-Tools method syntax:
- .__le__() for less than or equal (<=)
- .__ge__() for greater than or equal (>=)
- .__eq__() for equality (==)
- .__ne__() for not equal (!=)
Usage Examples
Simple Optimization Model
{
"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
}
}
Knapsack Problem
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": [
"(2p0 + 2p1 + p2 + p3).__le__(2)"
],
"objective": {
"expression": "3p0 + p1 + 2p2 + 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
]
}
Features
- Full OR-Tools CP-SAT solver support
- JSON-based model specification
- Support for:
- Integer and boolean variables (domain: [min, max])
- Linear constraints using OR-Tools method syntax
- Linear optimization objectives
- Timeouts and solver parameters
- Binary constraints and relationships
- Portfolio selection problems
- Knapsack problems
Supported Operations in Constraints
- Basic arithmetic: +, -, - Comparisons: .__le__(), .__ge__(), .__eq__(), .__ne__() - Linear combinations of variables - Binary logic through combinations of constraintsDevelopment
To setup for development:
git clone https://github.com/Jacck/mcp-ortools.git
cd mcp-ortools
pip install -e .
Model Response Format
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:
- OPTIMAL: Found optimal solution
- FEASIBLE: Found feasible solution
- INFEASIBLE: No solution exists
- UNKNOWN: Could not determine solution
License
MIT License - see LICENSE file for details
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



