MCP ExplorerExplorer

Mcp Ortools

@Jacckon 9 months ago
12 MIT
FreeCommunity
AI Systems
Model Context Protocol (MCP) server implementation using Google OR-Tools for constraint solving

Overview

What is Mcp Ortools

mcp-ortools is an implementation of the Model Context Protocol (MCP) server that utilizes Google OR-Tools for constraint solving. It is designed to work with Large Language Models through a standardized specification for constraint models.

Use cases

Use cases for mcp-ortools include solving optimization problems, constraint satisfaction tasks, and specific applications like portfolio selection and knapsack problems, where constraints and objectives can be defined and solved programmatically.

How to use

To use mcp-ortools, install the package via pip, configure the server in the Claude Desktop configuration file, and specify models in JSON format with defined variables, constraints, and objectives. The server allows submitting, validating, and solving constraint models.

Key features

Key features include full support for OR-Tools CP-SAT solver, JSON-based model specification, support for integer and boolean variables, linear constraints, optimization objectives, and various problem types such as portfolio selection and knapsack problems.

Where to use

undefined

Content

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
  1. 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": [
    "(2*p0 + 2*p1 + p2 + p3).__le__(2)"
  ],
  "objective": {
    "expression": "3*p0 + p1 + 2*p2 + p3",
    "maximize": true
  }
}

Additional constraints example:

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
}

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

Tools

No tools

Comments

Recommend MCP Servers

View All MCP Servers