About MCP-ORTools
MCP-ORTools is an MCP server that exposes Google OR-Tools constraint solving to language models. It targets users who want models to submit constraint problems in a standardized JSON format and receive solver results.
Key features
- 01JSON-based constraint model specification
- 02Integer and boolean variables with domains
- 03Linear constraints and linear objectives
- 04CP-SAT solver with timeout parameters
- 05Status reporting such as OPTIMAL and INFEASIBLE
Use cases
- 01Solving knapsack problems
- 02Selecting portfolios under constraints
- 03Modeling mutual exclusion or required item rules
MCP support
The project runs as an MCP server that exposes OR-Tools solving to MCP clients such as Claude Desktop. Models are submitted as JSON and solutions are returned as JSON.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEMCP-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
- Install the package:
pip install git+https://github.com/Jacck/mcp-ortools.git
- 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 domainsconstraints: List of constraints using OR-Tools methodsobjective: 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": [
"(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
]
}
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 constraints
Development
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
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.