Opti
FreeNot checkedEnables AI assistants to solve linear, integer, mixed-integer, and knapsack optimization problems using Google OR-Tools via a simple JSON interface.
About
Enables AI assistants to solve linear, integer, mixed-integer, and knapsack optimization problems using Google OR-Tools via a simple JSON interface.
README
A Model Context Protocol (MCP) server that provides tools for solving optimization problems using Google OR-Tools. This server enables AI assistants to solve Linear Programming (LP), Integer Programming (IP), Mixed-Integer Programming (MIP), and classic combinatorial optimization problems.
Features
- Linear Programming: Solve continuous optimization problems with linear constraints
- Integer/Mixed-Integer Programming: Solve optimization problems with integer decision variables
- Knapsack Problem: Solve the classic 0/1 knapsack problem efficiently
- Built on Google OR-Tools for robust, production-grade optimization
- Simple JSON-based interface
Prerequisites
- Node.js 18 or higher
- Python 3.8 or higher
- Google OR-Tools Python library
Installation
- Clone this repository:
git clone <your-repo-url>
cd opti-mcp
- Install Node.js dependencies:
npm install
- Install Python dependencies:
pip install ortools
- Build the TypeScript code:
npm run build
Configuration
Add to your MCP settings file (e.g., claude_desktop_config.json):
{
"mcpServers": {
"opti-mcp": {
"command": "node",
"args": ["/absolute/path/to/opti-mcp/dist/index.js"]
}
}
}
Available Tools
1. solve_linear_program
Solves linear programming problems where all variables are continuous.
Example: Production Planning
{
"objective": {
"coefficients": [3, 5],
"maximize": true
},
"constraints": [
{
"coefficients": [1, 0],
"upper_bound": 4
},
{
"coefficients": [0, 2],
"upper_bound": 12
},
{
"coefficients": [3, 2],
"upper_bound": 18
}
],
"variable_bounds": [[0, "Infinity"], [0, "Infinity"]]
}
This maximizes 3x₀ + 5x₁ subject to:
- x₀ ≤ 4
- 2x₁ ≤ 12
- 3x₀ + 2x₁ ≤ 18
- x₀, x₁ ≥ 0
2. solve_integer_program
Solves integer or mixed-integer programming problems.
Example: Assignment Problem
{
"objective": {
"coefficients": [1, 2, 3, 4],
"maximize": false
},
"constraints": [
{
"coefficients": [1, 1, 0, 0],
"lower_bound": 1,
"upper_bound": 1
},
{
"coefficients": [0, 0, 1, 1],
"lower_bound": 1,
"upper_bound": 1
}
],
"variable_bounds": [[0, 1], [0, 1], [0, 1], [0, 1]],
"integer_variables": [0, 1, 2, 3]
}
This solves an assignment problem where variables must be binary (0 or 1).
3. solve_knapsack
Solves the 0/1 knapsack problem.
Example: Item Selection
{
"values": [360, 83, 59, 130, 431, 67, 230, 52, 93, 125],
"weights": [7, 0, 30, 22, 80, 94, 11, 81, 70, 64],
"capacity": 850
}
Maximizes total value while keeping total weight ≤ capacity.
Example Problems
Diet Problem
Minimize cost while meeting nutritional requirements:
{
"objective": {
"coefficients": [2.5, 1.8, 3.0, 0.5],
"maximize": false
},
"constraints": [
{
"coefficients": [10, 5, 8, 2],
"lower_bound": 50
},
{
"coefficients": [3, 8, 1, 6],
"lower_bound": 30
},
{
"coefficients": [5, 4, 7, 3],
"lower_bound": 40
}
]
}
Bin Packing
Pack items into minimum number of bins:
{
"objective": {
"coefficients": [1, 1, 1],
"maximize": false
},
"constraints": [
{
"coefficients": [5, 0, 0],
"upper_bound": 10
},
{
"coefficients": [0, 7, 0],
"upper_bound": 10
},
{
"coefficients": [0, 0, 4],
"upper_bound": 10
}
],
"integer_variables": [0, 1, 2]
}
Response Format
All solvers return a JSON response with:
{
"status": "OPTIMAL",
"objective_value": 34.0,
"solution": [2.0, 6.0],
"solve_time_ms": 15
}
status: OPTIMAL, INFEASIBLE, UNBOUNDED, or UNKNOWNobjective_value: The optimal value found (null if not optimal)solution: Array of variable values (null if not optimal)solve_time_ms: Time taken to solve in milliseconds
For knapsack problems:
{
"status": "OPTIMAL",
"total_value": 1030,
"total_weight": 850,
"selected_items": [0, 2, 3, 4],
"capacity": 850
}
Development
# Watch mode for development
npm run dev
# Build for production
npm run build
# Run the server
npm start
How It Works
The MCP server:
- Receives optimization problems via MCP tool calls
- Translates them into Python scripts using OR-Tools
- Executes the Python scripts
- Returns formatted results
Limitations
- Requires Python 3.8+ with OR-Tools installed
- Currently uses GLOP for LP and SCIP for MIP (requires SCIP installation for best performance)
- Large problems may take significant time to solve
License
MIT
Contributing
Contributions welcome! Please open an issue or PR.
Installing Opti
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/average-joe25/opti-mcpFAQ
Is Opti MCP free?
Yes, Opti MCP is free — one-click install via Unyly at no cost.
Does Opti need an API key?
No, Opti runs without API keys or environment variables.
Is Opti hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Opti in Claude Desktop, Claude Code or Cursor?
Open Opti on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Notion
Read and write pages in your workspace
by NotionLinear
Issues, cycles, triage — from Claude
by LinearGoogle Drive
Search and read your Drive files
by Googlemindsdb/mindsdb
Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).
by mindsdbfulcradynamics/fulcra-context-mcp
MCP server for accessing personal health and biometric data including sleep stages, heart rate, HRV, glucose, workouts, calendar, and location via the Fulcra Li
by fulcradynamicsaymericzip/intlayer
A MCP Server that enhance your IDE with AI-powered assistance for Intlayer i18n / CMS tool: smart CLI access, access to the docs.
by aymericziprinadelph/Agent-MCP
A framework for creating multi-agent systems using MCP for coordinated AI collaboration, featuring task management, shared context, and RAG capabilities.
by rinadelphWhenLabs-org/when
Developer toolkit: auto-detect stack for AI context files, catch port conflicts, validate .env schemas, spot docs drift, audit dependency licenses, and time cod
by WhenLabs-orgBeltran12138/wecom-docs-mcp-server
WeCom (Enterprise WeChat) document operations via MCP: create, read, and edit Docs and Smartsheets (9 tools). Fills the doc-CRUD gap — existing WeCom MCP server
by Beltran12138madbonez/caldav-mcp
Universal MCP server for CalDAV protocol integration. Works with any CalDAV-compatible calendar server including Yandex Calendar, Google Calendar (via CalDAV),
by madbonezCompare Opti with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All productivity MCPs
