MCP-решатель
Сервер протокола контекста модели (MCP), который предоставляет возможности SAT, SMT и решения ограничений для больших языковых моделей.
Обзор
MCP Solver объединяет SAT, SMT и решение задач с ограничениями с LLM через протокол контекста модели, позволяя моделям ИИ интерактивно создавать, редактировать и решать:
Подробное описание архитектуры системы MCP Solver и теоретических основ см. в сопутствующей исследовательской статье: Стефан Сейдер, «MCP-Solver: Интеграция языковых моделей с системами программирования в ограничениях» , arXiv:2501.00539, 2024.
Доступные инструменты
Далее item относится к некоторой части кода (MinZinc/Pysat/Z3), а model — к кодировке.
Название инструмента | Описание |
---|---|
clear_model | Удалить все элементы из модели |
add_item | Добавить новый элемент по указанному индексу |
delete_item | Удалить элемент по индексу |
replace_item | Заменить элемент по индексу |
get_model | Получить текущее содержимое модели с пронумерованными элементами |
solve_model | Решить модель (с параметром тайм-аута) |
Системные требования
- Python и менеджер проектов uv
- Питон 3.11+
- Требования для конкретного режима: MiniZinc, PySAT, Python Z3 (необходимые пакеты устанавливаются через pip)
- Операционные системы: macOS, Windows, Linux (с соответствующими адаптациями)
Установка
Для работы MCP Solver требуются Python 3.11+, менеджер пакетов uv
и специфичные для решателя зависимости (MiniZinc, Z3 или PySAT).
Подробные инструкции по установке для Windows, macOS и Linux см. на INSTALL.md .
Быстрый старт:
Доступные режимы / Решающие бэкэнды
MCP Solver предоставляет три различных режима работы, каждый из которых интегрируется с различным бэкэндом решения ограничений. Каждый режим требует определенных зависимостей и предлагает уникальные возможности для решения различных классов проблем.
Режим MiniZinc
Режим MiniZinc обеспечивает интеграцию с языком моделирования ограничений MiniZinc со следующими функциями:
- Богатое выражение ограничений с глобальными ограничениями
- Интеграция с решателем ограничений Chuffed
- Возможности оптимизации
- Доступ к значениям решения через
get_solution
Зависимости : Требуется пакет minizinc
( uv pip install -e ".[mzn]"
)
Конфигурация : Для работы в режиме MiniZinc используйте:
Режим PySAT
Режим PySAT позволяет взаимодействовать с набором инструментов решения задач Python SAT со следующими функциями:
- Моделирование пропозициональных ограничений с использованием CNF (конъюнктивной нормальной формы)
- Доступ к различным решателям SAT (Glucose3, Glucose4, Lingeling и т. д.)
- Ограничения мощности (at_most_k, at_least_k, exact_k)
- Поддержка решения булевых ограничений
Зависимости : Требуется пакет python-sat
( uv pip install -e ".[pysat]"
)
Конфигурация : для запуска в режиме PySAT используйте:
Режим Z3
Режим Z3 обеспечивает доступ к возможностям решения Z3 SMT (теории выполнимости по модулю) со следующими функциями:
- Богатая система типов: логические значения, целые числа, действительные числа, битовые векторы, массивы
- Решение ограничений с помощью квантификаторов
- Возможности оптимизации
- Библиотека шаблонов для общих шаблонов моделирования
Зависимости : Требуется пакет z3-solver
( uv pip install -e ".[z3]"
)
Конфигурация : Для работы в режиме Z3 используйте:
Тестовый клиент MCP
MCP Solver включает в себя клиент MCP для целей разработки, экспериментирования и диагностики, основанный на фреймворке агента ReAct . Этот клиент служит посредником между LLM и сервером MCP, облегчая перевод формулировок задач на естественном языке в формальные решения программирования ограничений.
Установка
Клиенту требуется ключ API от поставщика LLM. Для Anthropic (LLM по умолчанию — Claude Sonnet 3.7) установите переменную среды ANTHROPIC_API_KEY
. Ее можно установить в вашей среде или включить в файл .env
в корне проекта.
Клиент также поддерживает других поставщиков LLM, включая OpenAI, Google (Gemini), OpenRouter и даже локальные модели через LM Studio. Вы можете указать, какую модель использовать, с помощью флага командной строки --mc
. Подробности о форматах кода модели см. в INSTALL.md.
Использование
Клиент предоставляет специализированные команды для каждого решателя:
Примеры
Пример 1: Проблема литья (MiniZinc)
Это основано на примере Джорджа Джонсона (NYT, 13 июля 1999 г.).
Пользователь
Предположим, что театральный режиссер чувствует себя обязанным взять на роль либо свою инженю, актрису Альварес, либо своего племянника, актера Коэна, в постановке. Но мисс Альварес не будет играть в пьесе с мистером Коэном (ее бывшим любовником), и она требует, чтобы в актерский состав вошла ее новая страсть, актер Дэвенпорт. Продюсер, которому нужно отплатить за свои услуги, настаивает, чтобы актер Браниславский сыграл роль. Но мистер Браниславский не будет играть ни в одной пьесе с мисс Альварес или мистером Дэвенпортом. Может ли режиссер взять на роль актера?
Система: clear_model
Система: add_item
(множественный)
Система: solve_model
Решение (в ролях Коэн и Браниславски, но не Альварес или Дэвенпорт) удовлетворяет всем ограничениям.
Пример 2: Задача N-ферзей (MiniZinc)
Пользователь
Проверьте, можете ли вы разместить n ферзей на шахматной доске nxn. Попробуйте n=10,20,30,40 и сравните время решения
Система: clear_model
Система: add_item
(множественный)
Система: solve_model
(с n=10, 20, 30 и 40 путем изменения значения n)
Сравнение времени решения: n=10: 0,001sn=20: 0,005sn=30: 0,040sn=40: 0,043с
Решения существуют для всех протестированных размеров плат. Временная сложность увеличивается нелинейно, но остается управляемой до n=40.
Пример 3: Задача коммивояжера (MiniZinc)
Пользователь
Продавщица из Вены должна спланировать предстоящий тур по Австрии, посетив каждую столицу провинции по одному разу. Помогите найти кратчайший маршрут. Расстояния в км: 1=Вена, 2=Санкт-Пёльтен, 3=Айзенштадт, 4=Линц, 5=Грац, 6=Клагенфурт, 7=Зальцбург, 8=Инсбрук, 9=Брегенц
[Таблица матрицы расстояний предоставлена в сообщении пользователя]
Система: add_item
(множественный)
Система: solve_model
Оптимальный маршрут: Вена → Санкт-Пёльтен → Линц → Зальцбург → Брегенц → Инсбрук → Клагенфурт → Грац → Айзенштадт → Вена общим расстоянием 1564 км.
Обратная связь
Вы можете оставить отзыв автору через эту форму .
Отказ от ответственности
Этот MCP Solver находится на стадии прототипа и должен использоваться с осторожностью. Пользователям рекомендуется экспериментировать, но любое использование в критических средах осуществляется на их страх и риск.
Лицензия
Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENSE .
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Сервер протокола контекста модели (MCP), который предоставляет возможности решения ограничений MiniZinc для больших языковых моделей.
Related MCP Servers
- AsecurityFlicenseAqualityA Model Context Protocol (MCP) server that optimizes token usage by caching data during language model interactions, compatible with any language model and MCP client.Last updated -4JavaScript
- -securityAlicense-qualityA Model Context Protocol (MCP) server that helps large language models index, search, and analyze code repositories with minimal setupLast updated -9PythonMIT License
- -securityAlicense-qualityA Model Context Protocol (MCP) compliant server that allows Large Language Models (LLMs) to search and retrieve content from microCMS APIs.Last updated -TypeScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server that enables large language models to interact with Linear's issue tracking system, allowing management of issues, projects, teams, and other Linear resources.Last updated -TypeScriptMIT License