logisim
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@logisimDraw a full adder in adder.circ and verify it with a truth table"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
logisim-mcp
MCP-сервер, через который Claude (или другой ИИ-ассистент) чертит, моделирует и проверяет схемы Logisim-evolution 5, не открывая окно программы.
Описываешь словами («полный сумматор», «F = A·¬B ∨ BC в базисе И-НЕ», «счётчик на JK-триггерах»),
ассистент собирает настоящий .circ: сам расставляет элементы, разводит провода и показывает картинку.
Готовую схему сам Logisim проверяет на правильность соединений и симуляцией на поведение.
Что умеет
Инструмент | Что делает |
| Чертит схему по списку элементов и соединений: автоматическая раскладка (сигнал идёт слева направо), трассировка проводов, шины входов «как в учебнике», туннели для тактов и сбросов, подписи по-русски |
| Синтезирует схему по формулам или таблице истинности: МДНФ/МКНФ (Квайн — Мак-Класки), СДНФ/СКНФ, базисы И-ИЛИ-НЕ, И-НЕ, ИЛИ-НЕ, ограничение числа входов элементов; считает элементы и цену по Квайну; входы и их инверсии рисуются вертикальными шинами |
| Ищет ошибки монтажа: неподключённые входы, «висящие» цепи, два выхода на одном проводе, провод сквозь вывод, разную разрядность, одинокие туннели; прогоняет симуляцию и ловит конфликты (E), неопределённость (x), генерацию |
| Сверяет схему с ожидаемым: формулами, таблицей истинности, набором строк или тактовой последовательностью |
| Строит таблицу истинности и выводит минимальные ДНФ/КНФ по готовой схеме |
| Пошаговая симуляция с тактами: трасса значений выходов, светодиодов и пробников |
| Читает любой |
| Картинка схемы (цвет проводов показывает значения) |
| Справочник типов элементов, их выводов и атрибутов |
Logisim запускается один раз и остаётся в памяти, поэтому вызовы занимают десятки миллисекунд.
Related MCP server: virtuoso-skill-mcp
Примеры
Все схемы ниже собраны сервером автоматически, сохранены в examples/ и проверены Logisim
(пересоздать: python scripts/make_examples.py).
Дешифратор 2→4 ( | Мажоритарный элемент в базисе ИЛИ-НЕ |
|
|
Мультиплексор 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-библиотеки, сервер не открывает.Очень плотные схемы (сотня элементов и больше) разводятся дольше, до полуминуты; если для какой-то цепи не нашлось места, она соединяется подписанными туннелями, и сервер об этом сообщает.
Настройки (переменные окружения)
Переменная | Значение |
| путь к |
| путь к |
| папка кэша (по умолчанию |
|
|
Если что-то не работает
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 toolslogisim_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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .circ file (absolute, or relative to the working folder) | |
| check | No | Simulate to find conflicts/oscillation (default true) | |
| rails | No | ||
| scale | No | Image scale (default 1.5, reduced automatically for large circuits) | |
| title | No | ||
| render | No | Return a picture (default true) | |
| tunnels | No | ||
| overwrite | No | Replace the file if it already exists (default false) | |
| components | Yes | ||
| connections | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses automatic placement/wiring, the post-write verification loop ('loaded back into Logisim to confirm every connection'), mistake checking, and image rendering, plus the destructive-replacement condition. It stops short of saying what payload or errors surface when verification fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long, but the first sentence front-loads purpose, overwrite caveat, and the sibling alternative, and the remainder is a labeled mini-grammar (components/connections/tunnels/rails/title) where each line earns its place for a DSL. Slightly dense, but appropriate for the format it must teach.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 10-parameter, no-annotation, no-output-schema tool needs the description to explain outcomes; it does describe the write-verify-render pipeline, which substitutes for an output schema. Remaining gap is error/failure behavior and whether the verification step can block or fail the build.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% and 'components'/'connections' are bare arrays in the schema, so the description does the heavy lifting — it documents the id/type grammar, the full component type list, optional per-component fields, the connection string syntax, port naming per gate type, tunnel and rail semantics, and title. This is far beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope: 'Draw a NEW Logisim circuit from a netlist and save it as .circ'. It explicitly distinguishes itself from logisim_inspect (for editing hand-drawn circuits) and routes port/attribute questions to logisim_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the when-not condition clearly ('an existing file is only replaced with overwrite: true') and names the alternative tool for the adjacent task (logisim_inspect for changing an existing hand-drawn circuit). The rails section even recommends when to use it ('Recommended for combinational logic').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| form | No | ||
| path | Yes | Path to the .circ file (absolute, or relative to the working folder) | |
| basis | No | ||
| scale | No | Image scale (default 1.5, reduced automatically for large circuits) | |
| title | No | ||
| inputs | No | Input order (default: variables sorted A, B, C / x1, x2 ...) | |
| render | No | Return a picture (default true) | |
| outputs | No | ||
| overwrite | No | Replace the file if it already exists (default false) | |
| max_inputs | No | ||
| truth_table | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses the side effects (writes a .circ file, draws the circuit, simulates every input combination to verify), the overwrite default of false, and that render returns a picture. It stops short of stating failure behavior for invalid formulas or what the tool returns besides the image.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the core action first, then syntax and parameter semantics in scannable fragments. Every block earns its place given the tool's complexity, though the syntax enumeration is lengthy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, no-output-schema tool, the description covers inputs, formulas, truth tables, gate basis, and optimization form well enough to call it correctly. The main gap is the return contract beyond the rendered picture and the meaning of title/scale, but overall it is near-complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 45%, and the description compensates substantially: it documents the outputs map format, full formula syntax, minterms/dont_care object form, truth_table text format, the form enum values, the basis options, and max_inputs fan-in semantics. Undocumented-in-schema parameters like outputs, truth_table, form, and basis are covered, though title and the interaction of scale are left thin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb chain (synthesize, draw, verify) and the resource (combinational circuit from Boolean formulas or a truth table), and it explicitly references the sibling logisim_build ('draw it (like logisim_build)'). It clearly distinguishes itself as the high-level synthesis tool, though it never states why to pick it over logisim_build or logisim_truth_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description makes clear this is the tool for going from Boolean formulas/truth table to a drawn, verified circuit, and the 'like logisim_build' phrasing hints at the relationship. There is no explicit when-to-use/when-not guidance or routing to alternatives such as logisim_build, logisim_verify, or logisim_truth_table.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .circ file (absolute, or relative to the working folder) | |
| circuit | No | Circuit inside the file (default: the main circuit) | |
| simulate | No | Also run the simulation checks (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it lists the static checks performed, discloses that it also simulates 'all input combinations when small', and names the failure signatures it looks for (E conflicts, x outputs, oscillation). It omits whether the file is modified and what the reported result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, but the core purpose is front-loaded and every listed check earns its place by telling the agent what defects to expect. The semicolon-heavy run-on structure is less scannable than a bulleted list would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, so the description must stand alone, and it adequately covers what the tool examines and that a simulation pass may occur. It leaves the return format and read-only status unspecified, which is a modest gap for a diagnostic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema. The description only implicitly touches the simulate parameter ('then simulate it') without adding format or default semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find wiring mistakes in a circuit') and enumerates the concrete defect classes it detects, so the agent knows exactly what the tool does. It does not, however, differentiate itself from overlapping siblings like logisim_verify or logisim_simulate, even though it duplicates simulation behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for diagnosing a circuit file, but the description never says when to prefer it over logisim_verify, logisim_simulate, or logisim_inspect. No prerequisites, exclusions, or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Alias or Logisim name, e.g. 'jkff', 'mux', 'Counter' | |
| attrs | No | Attributes to apply first (e.g. {"select": 2}) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the return shape for both modes: the list returns port names, and the detail view returns ports (name, direction, width, offset) plus attributes with defaults and allowed values. This is substantial disclosure, though it does not explicitly confirm the operation is read-only/non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tightly packed sentence with the primary action front-loaded and the 'type' variant cleanly separated by a semicolon. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must convey the return values itself, and it does so for both modes. The gap is the 'attrs' parameter, whose purpose on a listing/introspection tool is never clarified, leaving a small ambiguity about whether it filters the list or applies to a fetched type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema for 'type' by explaining it switches to a detailed single-type view (schema only says it is an alias or Logisim name). It adds no information about 'attrs', which remains unexplained for a listing tool, keeping it short of 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list / show) and resource (the component types logisim_build understands), and explicitly ties itself to the sibling logisim_build. It also delineates two distinct modes of operation, so an agent knows exactly what this tool does and how it relates to the build tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains the two usage branches: call with no argument to get the full list, or pass 'type' to drill into one component. The linkage to logisim_build implies this is the discovery step before building, but it does not explicitly state when to prefer it over a sibling or any prerequisites/exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .circ file (absolute, or relative to the working folder) | |
| circuit | No | Circuit inside the file (default: the main circuit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Read' implies a non-mutating operation and it discloses what is enumerated in the result, plus the notable claim that data is presented 'as Logisim itself sees them' (authoritative parsing). It does not state error behavior for missing files, output format, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource first and then the payload. It is dense with no redundant filler, though the trailing clause about Logisim's own view is slightly abstract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
In the absence of an output schema, the description does the necessary work of enumerating the return contents (circuits, components, ports, nets). It stops short of describing error cases or result structure, but is largely sufficient for an inspection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, so the schema already documents path and circuit (including the main-circuit default). The description adds no syntax, format, or scoping detail beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read a .circ file' and enumerates what is returned (circuits, components with port names, nets). It hints at a relationship with logisim_build ('port names, as used by logisim_build'), but does not distinguish itself from logisim_components or logisim_verify, so sibling differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tool reads an existing .circ file, so an agent can infer it is for inspection before building or verifying. There is no explicit when-to-use, when-not-to-use, or named alternative among the eight siblings, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .circ file (absolute, or relative to the working folder) | |
| scale | No | Image scale (default 1.5, reduced automatically for large circuits) | |
| steps | No | Simulation steps, in order | |
| inputs | No | Input name -> value (integer; multi-bit pins take the whole number, e.g. 5 or "0x1F") | |
| circuit | No | Circuit inside the file (default: the main circuit) | |
| save_to | No | Also write the PNG here |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses useful behavior (wire colours depict values, scale auto-reduced for large circuits is in the schema not description, optional file save). However, it does not state whether rendering requires the simulator to be loaded, whether state changes from inputs/steps persist, or what the response looks like. Adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-structured sentence that front-loads the core action and appends optional behaviors. No wasted words; every clause adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter visualization tool with nested objects and no output schema, the description covers purpose and options but leaves behavioral gaps (persistence of input/step state, failure modes, return format). No annotations to fall back on. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is fully documented in the schema. The description adds only framing (optional input setting/steps/save) without parameter-level detail, which is the baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (render a circuit as PNG) and adds meaningful detail (wire colours show values, optional input setting/stepping/saving). It is distinguishable from siblings like logisim_inspect or logisim_verify, though it doesn't explicitly name them for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description (render for visualization, optionally set inputs or run steps), but there is no explicit when-to-use or when-not-to-use guidance versus alternatives like logisim_inspect or logisim_simulate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .circ file (absolute, or relative to the working folder) | |
| scale | No | Image scale (default 1.5, reduced automatically for large circuits) | |
| steps | Yes | Simulation steps, in order | |
| render | No | Also return a picture of the final state | |
| circuit | No | Circuit inside the file (default: the main circuit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does well: it defines clock semantics (low->high->low full cycles), the trace shape (one row per cycle per pin/LED/probe), and value encodings including x for undefined and E for conflict. It stops short of noting whether the .circ file is modified or what happens on simulation errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences, front-loaded with the purpose before the return-format details, and the optional render behavior is placed last. Nothing is redundant with the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values - and it does, describing trace rows per cycle, the covered signals, and value formats. For a 5-parameter simulation tool this is complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so baseline is 3, but the description adds genuine meaning: it clarifies that each step first sets inputs and then advances 'clock' cycles, and explains the decimal/bit-string value domain that the schema only hints at. Render and path semantics are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run a circuit step by step') and immediately defines the mechanism - setting input pins then advancing clock cycles. This clearly separates it from build/verify/render siblings, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The procedural description implies the usage context (stepping through a circuit to observe outputs) but never states when to choose this over alternatives such as logisim_verify or logisim_truth_table, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .circ file (absolute, or relative to the working folder) | |
| circuit | No | Circuit inside the file (default: the main circuit) | |
| formulas | No | Derive minimal formulas (default true) | |
| max_rows | No | Rows to print (default 64) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a real behavioral trait — the 16-bit cap and that multi-bit pins count all their bits — which signals the exponential blowup boundary. However, it does not say what happens when the cap is exceeded (error vs. truncation), nor mention cost/runtime for large circuits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the core action and following with limits, outputs and formula derivation. Dense but every clause adds information; the parentheticals earn their place, though the line is slightly over-packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description does state what is returned (full truth table plus per-output formulas) and the key input constraint. Missing only edge-case behavior (over-16-bit handling) and any note on runtime, which prevents a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by clarifying that 'formulas' yields minimal DNF/CNF of each 1-bit output and that multi-bit pins count all bits toward the 16-bit budget, which contextualizes the numeric limit that the schema only states abstractly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (simulate/return) and resource (truth table of all outputs, LEDs and probes, plus minimal DNF/CNF formulas). This is clearly differentiable from siblings like logisim_simulate, logisim_verify and logisim_check, which do not advertise exhaustive truth-table generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (exhaustive simulation of small combinational circuits, capped at 16 bits) but never states when to prefer this over logisim_simulate or logisim_verify, nor any exclusions or prerequisites. Usage must be inferred from the stated limits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .circ file (absolute, or relative to the working folder) | |
| rows | No | ||
| circuit | No | Circuit inside the file (default: the main circuit) | |
| sequence | No | ||
| expressions | No | ||
| truth_table | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses useful semantics (expressions checked on every input combination, state carries over between sequence steps), but says nothing about whether the circuit file is mutated, what pass/fail output looks like, or error handling for a tool that verifies behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence before the mode enumeration, and each clause adds format detail rather than filler. It is dense but every phrase (e.g., 'x = don't care,' 'state carries over between steps') earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should also convey what verification returns (pass/fail detail, mismatch reporting), but it stops at input formats. Input-side coverage is strong, output-side coverage is absent, leaving the tool partly underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate, and it does: it explains the format of expressions, truth_table, rows, and sequence with concrete inline examples. It omits any mention of the required path parameter or circuit, but the schema already documents those two.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource: 'Check that a circuit behaves as expected.' An agent can tell this validates circuit behavior as opposed to building or rendering. It does not distinguish itself from the ambiguous sibling logisim_check, which likely sounds similar, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent to 'Give exactly one of' four modes and notes sequence is 'for clocked circuits,' which guides mode selection. However, it never states when to pick this tool over siblings like logisim_check, logisim_simulate, or logisim_truth_table, leaving the tool-vs-tool decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v2.0.0- First observed
logisim_build - First observed
logisim_build_logic - First observed
logisim_check - First observed
logisim_components - First observed
logisim_inspect - First observed
logisim_render - First observed
logisim_simulate - First observed
logisim_truth_table - First observed
logisim_verify
TDQS
Scored across 9 tools
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.
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.
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.
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
Related MCP Connectors
Turn Claude into a creative studio: DNA-locked characters, images, video, voiceover — 55 tools.
- SimSenseOAuthai.simsense
Deploy sims to any screen. Control your displays with Claude.
Deploy sims to any screen. Control your displays with Claude.
One workspace of tools for Claude and ChatGPT: connect 600+ apps, generate media, build tools.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables Claude to control AutoCAD—draw, edit, query, layers, blocks, annotations, screenshots, plot to PDF—using plain language.86MIT
- FlicenseNot gradedqualityCmaintenanceEnables natural language interaction with Cadence Virtuoso SKILL via Claude Code, allowing users to load files, evaluate expressions, inspect forms, and read CIW errors.-
- AlicenseBqualityCmaintenanceEnables an AI to build, inspect, test, and render logic circuits as .dig files, then open them in the Digital app.10GPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables 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.MIT



