MCP 솔버
대규모 언어 모델에 SAT, SMT 및 제약 조건 해결 기능을 제공하는 MCP(모델 컨텍스트 프로토콜) 서버입니다.
개요
MCP Solver는 모델 컨텍스트 프로토콜을 통해 SAT, SMT 및 제약 조건 해결을 LLM과 통합하여 AI 모델이 다음을 대화형으로 생성, 편집 및 해결할 수 있도록 합니다.
MCP Solver의 시스템 아키텍처와 이론적 기초에 대한 자세한 설명은 다음 연구 논문을 참조하세요: Stefan Szeider, "MCP-Solver: Integrating Language Models with Constraint Programming Systems" , arXiv:2501.00539, 2024.
사용 가능한 도구
다음 항목은 (MinZinc/Pysat/Z3) 코드의 일부를 의미하고, 모델은 인코딩을 의미합니다.
도구 이름 | 설명 |
---|---|
clear_model | 모델에서 모든 항목을 제거합니다. |
add_item | 특정 인덱스에 새 항목 추가 |
delete_item | 인덱스에서 항목 삭제 |
replace_item | 인덱스에서 항목 교체 |
get_model | 번호가 매겨진 항목으로 현재 모델 콘텐츠 가져오기 |
solve_model | 모델 풀기(시간 초과 매개변수 포함) |
시스템 요구 사항
- 파이썬과 프로젝트 매니저 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를 참조하세요.
빠른 시작:
지엑스피1
사용 가능한 모드/백엔드 해결
MCP 솔버는 세 가지 고유한 운영 모드를 제공하며, 각 모드는 서로 다른 제약 조건 해결 백엔드와 통합됩니다. 각 모드는 특정 종속성을 필요로 하며, 다양한 유형의 문제를 해결하는 고유한 기능을 제공합니다.
미니징크 모드
MiniZinc 모드는 다음과 같은 기능을 통해 MiniZinc 제약 모델링 언어와의 통합을 제공합니다.
- 글로벌 제약 조건을 포함한 풍부한 제약 조건 표현식
- Chuffed 제약 조건 솔버와의 통합
- 최적화 기능
get_solution
통해 솔루션 값에 액세스
종속성 : minizinc
패키지가 필요합니다( uv pip install -e ".[mzn]"
)
구성 : MiniZinc 모드에서 실행하려면 다음을 사용하세요.
PySAT 모드
PySAT 모드에서는 다음 기능을 통해 Python SAT 솔빙 툴킷과 상호 작용할 수 있습니다.
- CNF(Conjunctive Normal Form)를 이용한 명제적 제약 모델링
- 다양한 SAT 솔버(Glucose3, Glucose4, Lingeling 등)에 접근 가능
- 기수 제약 조건(at_most_k, at_least_k, exact_k)
- 부울 제약 조건 해결 지원
종속성 : python-sat
패키지가 필요합니다( uv pip install -e ".[pysat]"
)
구성 : PySAT 모드에서 실행하려면 다음을 사용하세요.
Z3 모드
Z3 모드는 다음 기능을 통해 Z3 SMT(Satisfiability Modulo Theories) 풀이 기능에 대한 액세스를 제공합니다.
- 풍부한 유형 시스템: 부울, 정수, 실수, 비트 벡터, 배열
- 양화사를 사용한 제약 조건 해결
- 최적화 기능
- 일반적인 모델링 패턴을 위한 템플릿 라이브러리
종속성 : z3-solver
패키지가 필요합니다( uv pip install -e ".[z3]"
)
구성 : Z3 모드에서 실행하려면 다음을 사용하세요.
MCP 테스트 클라이언트
MCP 솔버에는 ReAct 에이전트 프레임워크를 기반으로 개발, 실험 및 진단을 위한 MCP 클라이언트가 포함되어 있습니다. 이 클라이언트는 LLM과 MCP 서버 간의 중개자 역할을 하며, 자연어 문제 진술을 정형 제약 조건 프로그래밍 솔루션으로 변환하는 과정을 용이하게 합니다.
설치
클라이언트는 LLM 제공업체의 API 키를 요구합니다. Anthropic(기본 LLM은 Claude Sonnet 3.7)의 경우 ANTHROPIC_API_KEY
환경 변수를 설정하세요. 이 변수는 사용자 환경에서 설정하거나 프로젝트 루트의 .env
파일에 포함할 수 있습니다.
용법
클라이언트는 각 솔버 백엔드에 대해 특수 명령을 제공합니다.
예시
예제 1: 주조 문제(MiniZinc)
이는 조지 존슨(George Johnson)의 사례에 근거합니다(NYT, 1999년 7월 13일).
사용자
연극 연출가가 자신의 순진한 배우 알바레즈나 조카인 배우 코헨을 작품에 캐스팅해야 한다고 느낀다고 가정해 보겠습니다. 하지만 알바레즈는 자신의 전 애인인 코헨 씨와 함께하는 연극에 출연하지 않고, 새로운 연인인 배우 데븐포트도 캐스팅해야 한다고 요구합니다. 자신의 호의에 보답해야 할 제작자는 배우 브라니슬랍스키에게 배역을 맡기겠다고 고집합니다. 하지만 브라니슬랍스키 씨는 알바레즈나 데븐포트 씨와 함께하는 어떤 연극에도 출연하지 않을 것입니다. 연출가는 그 연극을 캐스팅할 수 있을까요?
시스템: clear_model
Copy
시스템: add_item
(다중)
Copy
시스템: solve_model
Copy
해결책(코헨과 브라니슬랍스키는 출연시키지만 알바레즈와 데븐포트는 출연시키지 않음)은 모든 제약 조건을 충족합니다.
예제 2: N-퀸 문제(MiniZinc)
사용자
nxn 체스판에 n개의 퀸을 놓을 수 있는지 확인해 보세요. n=10, 20, 30, 40으로 놓고 풀이 시간을 비교해 보세요.
시스템: clear_model
Copy
시스템: add_item
(다중)
Copy
시스템: solve_model
(n 값을 변경하여 n=10, 20, 30, 40)
시간 비교를 풀어보세요: n=10: 0.001sn=20: 0.005sn=30: 0.040sn=40: 0.043s
테스트된 모든 보드 크기에 대한 솔루션이 존재합니다. 시간 복잡도는 비선형적으로 증가하지만 n=40까지는 관리 가능한 수준입니다.
예제 3: 순회 판매원 문제(MiniZinc)
사용자
비엔나에 거주하는 한 판매원이 오스트리아 각 주의 주도를 한 번씩 방문하는 다가오는 여행을 계획해야 합니다. 최단 경로를 찾는 데 도움을 주세요. 거리(km): 1=비엔나, 2=장크트푈텐, 3=아이젠슈타트, 4=린츠, 5=그라츠, 6=클라겐푸르트, 7=잘츠부르크, 8=인스브루크, 9=브레겐츠
[사용자 메시지에 제공된 거리 행렬 표]
시스템: add_item
(다중)
Copy
시스템: solve_model
Copy
최적의 경로: 비엔나 → 장크트 푈텐 → 린츠 → 잘츠부르크 → 브레겐츠 → 인스부르크 → 클라겐푸르트 → 그라츠 → 아이젠슈타트 → 비엔나, 총 거리 1,564km.
피드백
이 양식을 통해 작성자에게 피드백을 제공할 수 있습니다.
부인 성명
이 MCP 솔버는 프로토타입 단계이므로 주의해서 사용해야 합니다. 사용자는 자유롭게 실험해 볼 수 있지만, 중요한 환경에서 사용하는 경우 모든 위험은 사용자에게 있습니다.
특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
대규모 언어 모델에 MiniZinc 제약 조건 해결 기능을 제공하는 MCP(모델 컨텍스트 프로토콜) 서버입니다.
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