MCP-ORTools

by MCP-Reasoner

97 downloads
Not rated
GitHub

About

Model Context Protocol (MCP) server implementation using Google OR-Tools for constraint solving

Details

Author
MCP-Reasoner
Downloads
97
Categories
Other

- 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:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name MCP-ORTools
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. 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 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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.