Native включает локальный сервер MCP lispex mcp serve. Приложение с поддержкой
локальных серверов MCP может через него искать формы Лиспекса, выполнять
проверенный исходник и получать объяснения диагностики. Здесь вы подключите
сервер, выполните правило с вводом 12 и получите approve.
Подключение локального сервера
Установите исполняемый файл 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 МиБ. Лимиты сравнения этого профиля ресурсов и результаты при сбоях описаны на странице «Справочник инструментов MCP». Для правил приложения от недоверенных пользователей используйте вычислитель с управлением ресурсами.
Программа обрабатывает переданные данные операциями Лиспекса. Сервер возвращает хеш исходника, результат, вывод и диагностику. По завершении запроса он освобождает его данные. К тексту, введённому в ассистент, применяется политика данных этого приложения.
Вызывающее приложение управляет доступом к инструментам и внешними действиями.
Например, approve является ответом правила. Приложение решает, выполнять ли действие
по этому ответу и какие разрешения для него нужны.
Для подписанной записи решения используйте Ваучер Лиспекса.
Он добавляет аутентификацию издателя, привязку к запросу и повторное выполнение.
Принимающее приложение затем применяет свои правила допуска.
Закончив работу, отключите MCP-сервер в приложении. Закрытие соединения stdio завершает локальный процесс и освобождает состояние запроса.