Skip to main content
Glama

logisim-mcp

MCP-сервер, через который Claude (или другой ИИ-ассистент) чертит, моделирует и проверяет схемы Logisim-evolution 5, не открывая окно программы.

Описываешь словами («полный сумматор», «F = A·¬B ∨ BC в базисе И-НЕ», «счётчик на JK-триггерах»), ассистент собирает настоящий .circ: сам расставляет элементы, разводит провода и показывает картинку. Готовую схему сам Logisim проверяет на правильность соединений и симуляцией на поведение.

Что умеет

Инструмент

Что делает

logisim_build

Чертит схему по списку элементов и соединений: автоматическая раскладка (сигнал идёт слева направо), трассировка проводов, шины входов «как в учебнике», туннели для тактов и сбросов, подписи по-русски

logisim_build_logic

Синтезирует схему по формулам или таблице истинности: МДНФ/МКНФ (Квайн — Мак-Класки), СДНФ/СКНФ, базисы И-ИЛИ-НЕ, И-НЕ, ИЛИ-НЕ, ограничение числа входов элементов; считает элементы и цену по Квайну; входы и их инверсии рисуются вертикальными шинами

logisim_check

Ищет ошибки монтажа: неподключённые входы, «висящие» цепи, два выхода на одном проводе, провод сквозь вывод, разную разрядность, одинокие туннели; прогоняет симуляцию и ловит конфликты (E), неопределённость (x), генерацию

logisim_verify

Сверяет схему с ожидаемым: формулами, таблицей истинности, набором строк или тактовой последовательностью

logisim_truth_table

Строит таблицу истинности и выводит минимальные ДНФ/КНФ по готовой схеме

logisim_simulate

Пошаговая симуляция с тактами: трасса значений выходов, светодиодов и пробников

logisim_inspect

Читает любой .circ: элементы, выводы, цепи (как их видит сам Logisim)

logisim_render

Картинка схемы (цвет проводов показывает значения)

logisim_components

Справочник типов элементов, их выводов и атрибутов

Logisim запускается один раз и остаётся в памяти, поэтому вызовы занимают десятки миллисекунд.

Related MCP server: virtuoso-skill-mcp

Примеры

Все схемы ниже собраны сервером автоматически, сохранены в examples/ и проверены Logisim (пересоздать: python scripts/make_examples.py).

Дешифратор 2→4 (Y0 = EN·¬A1·¬A0 …)

Мажоритарный элемент в базисе ИЛИ-НЕ

Мультиплексор 4→1

F = A·¬B ∨ B·C ∨ ¬A·¬C в базисе И-НЕ (2 входа)

Дешифратор 7-сегментного индикатора по таблице истинности (МДНФ с безразличными наборами) и счётчик на JK-триггерах с тактом через туннели: seven_segment.png, jk_counter.png.

Установка

Нужны: Python 3.10+, Java 21+ (Temurin JDK 21), Claude Code. Сам Logisim ставить не обязательно: если его нет, установщик скачает logisim-evolution-5.0.0-all.jar (~55 МБ).

git clone https://github.com/n0n3o/logisim-mcp.git
cd logisim-mcp
python install.py

Без git: скачай zip, распакуй и запусти python install.py в распакованной папке.

Установщик проверит Java, найдёт или скачает Logisim и зарегистрирует сервер в Claude Code (claude mcp add logisim -s user ...). После этого перезапусти Claude Code и набери /mcp: сервер logisim должен быть в статусе connected. Если Claude Code уже был открыт со старой версией, достаточно в /mcp выбрать logisim → Reconnect.

Другие клиенты (Claude Desktop, Cursor и т. п.): python install.py --no-register выведет готовый JSON для конфига.

Проверить установку в любой момент: python run_server.py doctor.

Примеры запросов

  • «Начерти полный сумматор в D:\labs\fa.circ и проверь его таблицей истинности»

  • «Построй F = ¬A·B ∨ A·¬C ∨ B·C в базисе ИЛИ-НЕ на двухвходовых элементах, сохрани в lab3.circ»

  • «Вот таблица истинности, построй МКНФ и схему по ней: …»

  • «Проверь мою схему lab2.circ: почему на выходе F красный провод?»

  • «Сделай 4-битный счётчик на JK-триггерах с тактовым генератором и проверь 16 тактов»

  • «Получи формулу по схеме task.circ и минимизируй её»

Полезно знать про Logisim

  • Подписи выводов, светодиодов и туннелей должны быть латиницей (иначе Logisim 5 их переименует), а русский текст пишется в caption (надпись рядом с элементом) или в title.

  • Провод, упёршийся концом в середину другого провода, и вывод, лежащий на проводе, соединяются (Logisim разрезает провод при загрузке). Простое пересечение двух проводов без концов в этой точке не соединяет. logisim_check предупреждает о проводах, идущих насквозь через выводы.

  • Схемы, собранные logisim_build, после записи загружаются обратно в Logisim, и каждое соединение сверяется с заказанным, так что случайных замыканий не бывает.

  • Существующий .circ не перезаписывается без явного согласия (overwrite), так что нарисованную руками схему случайно не потерять. Файлы, подключающие сторонние Java-библиотеки, сервер не открывает.

  • Очень плотные схемы (сотня элементов и больше) разводятся дольше, до полуминуты; если для какой-то цепи не нашлось места, она соединяется подписанными туннелями, и сервер об этом сообщает.

Настройки (переменные окружения)

Переменная

Значение

LOGISIM_JAR

путь к logisim-evolution-5.0.0-all.jar, если он лежит в нестандартном месте

LOGISIM_JAVA

путь к java(.exe), если найденная Java не подходит

LOGISIM_MCP_HOME

папка кэша (по умолчанию %LOCALAPPDATA%\logisim-mcp или ~/.cache/logisim-mcp)

LOGISIM_MCP_NO_DOWNLOAD

1 — ничего не скачивать автоматически

Если что-то не работает

  • Java 21+ not found: поставь Temurin JDK 21 и перезапусти терминал (или укажи LOGISIM_JAVA).

  • Сервер не виден в /mcp: выполни python run_server.py doctor, затем снова python install.py.

  • Схема не разводится (очень плотная): сервер сам переведёт такие цепи на туннели и напишет об этом; можно задать колонки элементов (column) или явные координаты (at).

Для разработчиков

uvx --with pytest-cov pytest tests --cov=logisim_mcp     # интеграционные тесты нужны Java и jar
python scripts/build_java.py                             # пересобрать java/classes после правки LogiWorker.java

Устройство: server.py (MCP поверх stdio) → tools.py → build.py (раскладка layout.py, трассировка router.py, запись circfile.py), logic.py (формулы, минимизация, синтез), lint.py, verify.py. Logisim вызывается через постоянный JVM-процесс java/LogiWorker.java (JSON по строкам).

Лицензия

GPL-3.0-or-later (как и Logisim-evolution).

Available Tools

9 tools
logisim_buildA

Draw a NEW Logisim circuit from a netlist and save it as .circ (an existing file is only replaced with overwrite: true; to change an existing hand-drawn circuit, describe it with logisim_inspect first). Placement (signal flows left to right) and wiring are automatic; the file is then loaded back into Logisim to confirm every connection, checked for mistakes and rendered as an image.

components: [{"id": "A", "type": "input"}, {"id": "g1", "type": "and", "inputs": 3}, ...] id: Latin identifier, unique; it is also the label of pins, LEDs, probes and clocks. type: input, output, clock, constant, led, probe, button, dipswitch, not, buffer, and, or, nand, nor, xor, xnor, mux, demux, decoder, encoder, adder, subtractor, multiplier, comparator, shifter, negator, dff, tff, jkff, srff, register, counter, shiftregister, ram, rom, splitter, tunnel, hexdisplay, sevensegment (or any exact Logisim name; see logisim_components for ports and attributes). optional: width (bits), inputs (gate inputs), value (constant), select (mux/decoder select bits), fanout (splitter), facing, label, caption (free text shown next to it, any language), column (0 = leftmost column), at [x, y] (manual position, px), attrs {raw Logisim attributes}. connections: ["A -> g1.in0, g2.a", "g1 -> F", "clk: CLK -> ff1.clk, ff2.clk", "X, Y.in"] "source -> sink, sink"; a port is id.port. A bare id means the component's only port (pins, LEDs, clocks, constants) or its only output (left of ->) / only input (right of ->). Connections that share a port merge. Port names: gates out, in0..in(n-1) (also a, b, c...); not/buffer out, in; mux in0.., sel, out (en); decoder out0.., sel; adder/subtractor a, b, out, cin/bin, cout/bout; comparator a, b, gt, eq, lt; dff d, clk, q, nq, clr, pre; tff t, ...; jkff j, k, clk, q, nq, clr, pre; srff s, r, clk, q, nq, clr, pre; register q, d, clk, clr, en; counter q, d, clk, clr, load, ud, en, carry; splitter bus, b0..b(n-1); ram addr, out, in, ld, st, clk; rom addr, out; dipswitch s1..sN; any port also as #index. tunnels: nets drawn with labelled tunnels instead of long wires, by net name or source id (e.g. ["CLK"]). rails: input pin ids (and ids of NOT gates fed directly by such a pin) drawn textbook style: the pins stand at the top left and each signal runs down the page as a vertical bus that gates tap with horizontal branches. Recommended for combinational logic, e.g. ["A", "nA", "B", "nB", "C"]. title: text above the circuit.

Inputs: path (required), components (required), connections (required), check, +6 more.

logisim_build_logicA

Synthesize a combinational circuit from Boolean formulas or a truth table, in a chosen gate basis, then draw it (like logisim_build) and verify it by simulating every input combination.

outputs: {"F": "A & ~B | C", "G": "A ^ B ^ C"}; formula syntax: & * · ∧ AND, | + ∨ OR, ~ ! ¬ NOT or postfix ', ^ ⊕ XOR, ↑ NAND, ↓ NOR, -> → implication, <-> == ≡ equivalence, 0/1, parentheses. An output can instead be {"minterms": [1, 3, 7], "dont_care": [5]} (then 'inputs' is required; inputs[0] is the most significant bit). truth_table: alternative to outputs, text like "A B C | F G\n0 0 0 | 0 1\n..." (x or - = don't care, missing rows = don't care). form: as_written (formulas only; default for formulas), min_sop (minimal DNF; default for tables/minterms), min_pos (minimal CNF), sop_canonical (perfect DNF), pos_canonical (perfect CNF). basis: any (default), and_or_not, nand (NAND only), nor (NOR only). max_inputs: gate fan-in limit (default 4; 2 = two-input gates).

Inputs: path (required), form, basis, scale, +7 more.

logisim_checkA

Find wiring mistakes in a circuit: unconnected inputs, floating nets, several outputs on one net (often an accidental short), wires passing straight through a port or drawn on top of each other (Logisim connects those), loose wire ends, bit width mismatches, lonely tunnels, overlapping parts; then simulate it (all input combinations when small) to find conflicts (E), undefined outputs (x) and oscillation.

Inputs: path (required), circuit, simulate.

logisim_componentsA

List the component types logisim_build understands, with their port names; or, with 'type', show one type in detail: ports (name, direction, width, offset), attributes with defaults and allowed values.

Inputs: type, attrs.

logisim_inspectA

Read a .circ file: list its circuits, components (with port names, as used by logisim_build) and the nets connecting them, as Logisim itself sees them.

Inputs: path (required), circuit.

logisim_renderA

Render a circuit as a PNG picture (wire colours show values), optionally after setting inputs or running steps; optionally save the picture to a file.

Inputs: path (required), scale, steps, inputs, +2 more.

logisim_simulateA

Run a circuit step by step: each step sets input pins, then runs 'clock' full clock cycles (all Clock components low->high->low). Returns a trace with one row per clock cycle (or per step without clock) of every output pin, LED and probe; values are decimal, or bit strings with x (undefined) and E (conflict). Optionally renders the final state.

Inputs: path (required), steps (required), scale, render, +1 more.

logisim_truth_tableA

Simulate every combination of the input pins (max 16 bits; multi-bit pins count all their bits) and return the truth table of all outputs, LEDs and probes, plus the minimal DNF/CNF formula of each 1-bit output.

Inputs: path (required), circuit, formulas, max_rows.

logisim_verifyA

Check that a circuit behaves as expected. Give exactly one of: expressions {output: formula} (checked on every input combination), truth_table (text 'A B | F' with rows '0 1 | 1', x = don't care), rows [{"A": 1, "B": 0, "F": 1}, ...], or sequence [{"set": {...}, "clock": 1, "expect": {...}}, ...] for clocked circuits (state carries over between steps). Names are pin/LED/probe labels.

Inputs: path (required), rows, circuit, sequence, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 9 tools

    Disambiguation3/5

    Most tools are distinct (components, build, inspect, check, render), but logisim_verify, logisim_truth_table, and logisim_simulate all overlap heavily on simulation. logisim_verify explicitly accepts a truth_table mode and a sequence mode, duplicating what the dedicated truth_table and simulate tools do, which invites misselection.

    Naming Consistency4/5

    All tools share a consistent logisim_ prefix and snake_case. The pattern is mostly verb/noun (build, verify, inspect, check, render) with a couple of compound noun_phrases (build_logic, truth_table), a minor deviation that remains readable and predictable.

    Tool Count5/5

    Nine tools is well-scoped for a circuit design/verification server. Each tool maps to a meaningful stage (discover, build, inspect, check, verify, simulate, render) without obvious filler.

    Completeness4/5

    The surface covers the full lifecycle: component discovery, building, logic synthesis, inspection, error checking, verification, simulation, and rendering. The only minor gap is that modifying an existing hand-drawn circuit requires re-building with overwrite rather than a dedicated edit operation.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Enables Claude to control AutoCAD—draw, edit, query, layers, blocks, annotations, screenshots, plot to PDF—using plain language.
      8
      12
      MIT
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables natural language interaction with Cadence Virtuoso SKILL via Claude Code, allowing users to load files, evaluate expressions, inspect forms, and read CIW errors.
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to build, wire, inspect and simulate digital circuits directly in a running Logisim Evolution window, with every edit appearing live and undoable. Agents work from exact ports, real netlists and truth tables rather than screenshots, and can verify designs through simulation.
      2
      MIT