Skip to main content
Glama

Qedra

Английская версия: README.en.md. Проект не связан с одноимённым приложением для iOS.

Qedra — система компьютерной алгебры на собственном диалекте Lisp (F# / .NET 10). Главное — ответы, которым можно доверять: каждый результат проверяется независимо, нерешённое честно помечается, а решения можно разобрать по шагам. Обычная задача считается за доли секунды, трудная (Риш, Грунц, Ковачич) — за секунды.

Что это

  • Проверяемые ответы. Первообразная проверяется дифференцированием, решение уравнения — подстановкой в исходное уравнение, суммы и рекуррентности — численным оракулом. В --json и MCP это поле certificate.

  • Доказанные отказы. Если элементарной первообразной нет, алгоритм Риша это доказывает: status: nonelementary — это ответ, а не сбой. Если задача не решена, возвращается status: unknown с причиной, а не выдуманный результат.

  • Пошаговые решения. steps в --json и MCP показывает правило и формулу на каждом шаге (по-русски и по-английски).

  • Два входа. Математический язык (--math, файлы .mth) — формулы как на бумаге; Lisp — полный доступ к библиотеке.

  • Встраивание. MCP-сервер для Claude Desktop и других клиентов, --json для агентов, браузерная версия.

Умеет: интегрирование (Риш, рациональные функции, специальные функции, определённые интегралы), пределы (Грунц), ряды, символьные суммы и рекуррентности, ОДУ (включая Ковачича и решения через специальные функции), алгебру (факторизация, Грёбнер, группы Галуа, алгебраические числа), линейную алгебру и жорданову форму, LP/ILP, теорию чисел с сертификатами, интервальную арифметику и графики.

Related MCP server: Symath-MCP

Установка

Готовые сборки — в Releases: qedra-1.109.7.11-win-x64.zip, qedra-1.109.7.11-linux-x64.tar.gz, qedra-1.109.7.11-osx-x64.tar.gz, qedra-1.109.7.11-osx-arm64.tar.gz. Они самодостаточны: установленный .NET не нужен. Распакуйте архив и запустите qedra (qedra.exe в Windows); рядом лежит Lisp.exe — тот же запускатель под прежним именем.

$ qedra --version
Qedra 1.109.7.11
$ qedra --math -e "integrate(x^2, x)"
1/3*x^3

Из исходников нужен .NET 10 SDK:

dotnet build Lisp.slnx
dotnet test Lisp.slnx
src/Lisp.Host/bin/Debug/net10.0/Lisp.exe            # REPL: Lisp; --math — математический режим

Примеры

Каждый вывод ниже получен запуском qedra --math -e "…" на этой версии.

Неопределённый интеграл:

$ qedra --math -e "integrate(x*exp(x), x)"
x*exp(x) - exp(x)

Неэлементарный интеграл: ответ — доказательство, а не ошибка (в --json видно status: nonelementary и причину в note):

$ qedra --math -e "integrate(exp(x^2), x)"
integrate(exp(x^2), x)

Дифференциальное уравнение:

$ qedra --math -e "dsolve(y' + y = x, y(x))"
y(x) = (C1 + x*exp(x) - exp(x))*exp(-x)

Уравнение и система многочленов:

$ qedra --math -e "solve(x^2 - 5*x + 6 = 0, x)"
{2, 3}
$ qedra --math -e "groebner([x^2 - y, y^2 - x], [x, y])"
[x - y^2, -y + y^4]

Предел и разложение на множители:

$ qedra --math -e "limit(sin(x)/x, x, 0)"
1
$ qedra --math -e "factor(x^4 - 1)"
(-1 + x)(1 + x)(1 + x^2)

Машиночитаемый ответ: одна строка JSON на запрос (поле timing.ms зависит от машины).

$ echo '{"op":"math","code":"diff(x^3 - 3*x, x)"}' | qedra --json
{"status":"answer","result":"(+ -3 (* 3 (^ x 2)))","pretty":"-3 + 3x^2","latex":"-3 + 3x^{2}","note":null,"conditions":null,"assumptions":null,"certificate":null,"steps":null,"warnings":null,"output":"","timing":{"ms":71,"timeout":false},"ok":true,"error":null,"stack":null}

Больше примеров с эталонами — в examples/; они выполняются тестами.

MCP

qedra --mcp — MCP-сервер на stdio. Подключение в Claude Desktop (claude_desktop_config.json) или любом клиенте:

{
  "mcpServers": {
    "qedra": {
      "command": "C:\\path\\to\\qedra.exe",
      "args": ["--mcp"]
    }
  }
}

Инструменты math, simplify, integrate, sum, solve, limit, series, groebner, equivalent, declare и другие возвращают единый ответ: status (answer / unknown / nonelementary / error), результат, conditions, по запросу — steps и certificate. Однако серверу доступно чтение файлов через load, поэтому по умолчанию включена песочница (см. ниже); параметры — docs/mcp.md.

Установка как MCP-сервер

  • MCPB (Claude Desktop, без .NET): скачайте qedra-1.109.7.11.mcpb из Releases и откройте файл — клиент предложит установку. Бандл самодостаточен: Windows x64, Linux x64, macOS x64/arm64.

  • Docker: docker run -i --rm ghcr.io/evgwpw/qedra — сервер на stdio; имя в реестре MCP — io.github.evgwpw/qedra.

  • NuGet (.NET tool, нужен .NET 10): dnx Qedra --mcp (или dotnet tool install -g Qedra, затем qedra --mcp).

{
  "mcpServers": {
    "qedra": { "command": "docker", "args": ["run", "-i", "--rm", "ghcr.io/evgwpw/qedra"] }
  }
}

Для NuGet: "command": "dnx", "args": ["Qedra", "--mcp"].

Песочница

qedra --sandbox [--allow-dir <путь>]... ограничивает load/load-math каталогом библиотеки и указанными каталогами во всех режимах: файл, -e, --math, --json, REPL. В режиме --mcp песочница включена по умолчанию, снимает её --unsafe. Это защита от ошибок LLM (лишний load, чтение чужого файла), а не изоляция ОС: интерпретатор и хост — один процесс, от злоумышленника песочница не защищает.

Браузерная версия

https://evgwpw.github.io/Qedra/ — тот же вычислитель, собранный в WebAssembly (AOT), с вводом формул и каталогом примеров. Локальная сборка: web/build.sh (или web/build.cmd), запуск — web/start.sh / web/start.cmd.

Документация

  • docs/math-language.md — входной математический язык: операции, функции, шаги, JSON-API.

  • docs/lisp-library-guide.md — справочник библиотеки Lisp (сверяется тестом с кодом).

  • docs/lisp-dialect.md, docs/lisp-modules.md — диалект и модули.

  • docs/mcp.md — MCP-сервер: инструменты, безопасность, протокол.

  • docs/guide/core.md — короткая справка для LLM (по-английски), карточки тем — в docs/guide/topics/.

Как сделано

Код написан в основном LLM-агентами по заданиям и под ревью автора: архитектура, выбор алгоритмов, приёмка — человек. Корректность не основана на доверии к генерации: каждый результат проверяется независимо (производная от первообразной, подстановка решения, сертификаты сумм и доказательств), набор — более 3300 тестов.

Лицензия

0BSD — см. LICENSE. Тексты сторонних библиотек браузерной версии — THIRD-PARTY-NOTICES.md.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    High-precision mathematics server for MCP clients, providing exact integer arithmetic, symbolic derivatives, and numerical calculus via LaTeX-style input.
    6
    5 npm
    2
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    MCP server for symbolic computation that enables AI agents to perform step-by-step derivations, transform formulas, and verify results with full provenance, combining natural language with formal mathematical operations.
    41
    13
    Apache 2.0