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
- Install the package:
pip install git+https://github.com/Jacck/mcp-ortools.git
- Configure Claude Desktop
Create the configuration file at
%APPDATA%Claudeclaude_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
Google OR-Tools server
Project Details
- Jacck/mcp-ortools
- MIT License
- Last Updated: 4/15/2025
Categories
Recomended MCP Servers
一款轻量级、跨平台的 Mini Kubernetes AI Dashboard,支持大模型+智能体+MCP(支持设置操作权限),集成多集群管理、智能分析、实时异常检测等功能,支持多架构并可单文件部署,助力高效集群管理与运维优化。
A MCP Server used to collect MCP Servers over the internet.
MCP tool that lets Cline inquire about a code base
Bluesky MCP server
A server that helps people access and query data in databases using the Legion Query Runner with Model...
Allow MCP clients like claude-desktop to use rooms to coordinate with other agents
Full access postgres mcp server
MCP server for connecting agentic systems to search systems via searXNG
Model Context Protocol (MCP) server for constraint optimization and solving"
MCP server for Cursor to assist with Laravel development
Shell and coding agent on claude desktop app
A Model Context Protocol (MCP) server for querying the VirusTotal API.