Подключение локального сервера
Установите исполняемый файл Native со страницы загрузок. Проверьте версию в терминале.
lispex --versionВывод показывает точную установленную версию. Сравните её с версией загруженного файла.
Команда завершается с кодом 0.
Используйте ассистента с поддержкой локальных MCP-серверов.
MCP — протокол, по которому приложение получает список инструментов и вызывает их.
Добавьте эту запись в настройки MCP вашего приложения.
Приложение запускает lispex mcp serve и обменивается сообщениями через
стандартный ввод и вывод, которые также называют stdio.
{
"mcpServers": {
"lispex": {
"command": "lispex",
"args": ["mcp", "serve"]
}
}
}Если приложение не находит lispex, укажите в command абсолютный путь
к установленному исполняемому файлу. В Windows путь в JSON можно записать
с прямыми слешами, например D:/Tools/lispex.exe. Укажите своё место установки.
Переподключите сервер в приложении. Станут доступны четыре инструмента.
| Инструмент | Что можно сделать |
|---|---|
lispex_reference | Найти формы, процедуры, синтаксис исходника, профили ресурсов и способы выполнения |
lispex_eval | Выполнить проверенный исходник и прочитать значения, вывод и диагностику |
lispex_diagnostic | Найти описание кода диагностики и причину его появления |
lispex_compare_routes | Сравнить результаты выбранного набора реализаций среды выполнения |
Выполнение правила одобрения
Попросите ассистента использовать подключённые инструменты.
Проверь форму
ifв Лиспексе. Напиши правило, которое возвращаетapproveпри вводе не меньше 10 иreviewв остальных случаях. Выполни его с вводом 12 и покажи результат инструмента.
Следующие блоки JSON содержат аргументы инструментов, а не команды терминала.
Сначала вызовите lispex_reference.
{
"topic": "forms",
"name": "if"
}В ответе поле structuredContent.result.known равно true.
Запись содержит форму (if test consequent alternate).
Обе ветви обязательны. Только #f считается ложным значением.
Затем вызовите lispex_eval, передав полную программу и ввод.
{
"source": "(if (>= input 10) 'approve 'review)",
"input": "12"
}Строка source содержит всю программу, поэтому отдельный файл исходника не нужен.
Строка input содержит одно значение данных Лиспекса.
Сервер делает это значение доступным программе под именем input.
Ниже приведены выбранные поля из structuredContent ответа.
{
"status": "ok",
"values": ["approve"],
"stdout": "approve\n",
"diagnostics": [],
"warnings": [],
"exit_status": 0
}Правило вернуло символ approve. Массив values содержит его печатное
представление. Этот инструмент также записывает значение верхнего уровня
в stdout; \n означает перевод строки.
Вычисление завершилось с кодом 0, а сервер ждёт следующего запроса.
Этот вызов не создаёт файл результата.
Замените аргумент ввода на "9". Результат станет ["review"],
а stdout будет содержать "review\n". Код успешного завершения останется прежним.
Если в ответе есть диагностика, найдите её код через lispex_diagnostic.
Например, {"code": "E302"} объясняет неверное число аргументов.
Исправьте исходник и выполните его снова.
Полный запрос и выдержка из ответа приведены в
справочнике MCP.
Сравнение встроенных реализаций
Вызовите lispex_compare_routes с такими аргументами.
{
"court": "tree-rust",
"source": "(+ input 1)",
"input": "41"
}Поле court выбирает сравнение.
tree-rust запускает интерпретатор Лиспекса и ВМ Лиспекса.
Интерпретатор вычисляет формы исходника; виртуальная машина выполняет скомпилированные инструкции.
Ответ содержит следующие поля в structuredContent.
{
"court": "tree-rust",
"status": "completed",
"required_routes": ["tree", "rust-vm"],
"agreement": true,
"partial_comparison": false,
"answer_selected": false
}Обе записи в observations содержат ["42"] в semantic.values
и "42\n" в semantic.stdout.
Поле agreement показывает, совпадают ли результаты и наблюдения за ресурсами
согласно правилам сравнения.
Другие значения court из схемы инструмента описаны в справочнике MCP.
Данные, лимиты и разрешения приложения
Используйте эти инструменты при написании программ, исходник которых вы проверили. Один запрос принимает до 65 536 байт исходника и 16 384 байт ввода. На вычисление отведено 5 секунд, размер результата — до 1 МиБ. Профиль ресурсов также задаёт лимиты сравнения и описывает результаты при сбоях. Для правил приложения от недоверенных пользователей используйте вычислитель с управлением ресурсами.
Программа обрабатывает переданные данные операциями Лиспекса. Сервер возвращает хеш исходника, результат, вывод и диагностику. По завершении запроса он освобождает его данные. К тексту, введённому в ассистент, применяется политика данных этого приложения.
Вызывающее приложение управляет доступом к инструментам и внешними действиями.
Например, approve — ответ правила. Приложение решает, выполнять ли действие
по этому ответу и какие разрешения для него нужны.
Для подписанной записи решения используйте Ваучер Лиспекса.
Он добавляет аутентификацию издателя, привязку к запросу и повторное выполнение.
Принимающее приложение затем применяет свои правила допуска.
Закончив работу, отключите MCP-сервер в приложении. Закрытие соединения stdio завершает локальный процесс и освобождает состояние запроса.