리스펙스 도구에 보낼 요청을 만들고 응답을 읽을 때 이 참조를 사용하세요. 호출 애플리케이션이 도구와 외부 행동의 권한을 어떻게 관리하는지도 설명합니다.
먼저 네이티브 실행 파일을 설치하고 연결 가이드를 따라 설정합니다.
lispex mcp serve는 로컬 표준 입력과 표준 출력으로 JSON 메시지를 주고받습니다.
서버의 MCP 프로토콜 버전은 2025-11-25입니다.
클라이언트는 연결을 초기화한 뒤 도구 목록을 받거나 도구를 호출합니다.
요청과 응답 읽기
읽기 오류를 알아보려면 {"code": "E100"}으로 lispex_diagnostic을 호출합니다.
연결 초기화 뒤 보내는 전체 JSON-RPC 요청은 다음과 같습니다.
클라이언트는 응답을 요청과 짝지을 id를 정합니다.
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "lispex_diagnostic",
"arguments": {
"code": "E100"
}
}
}응답은 같은 id를 사용합니다.
result.structuredContent.result에서 일부 필드를 발췌하면 다음과 같습니다.
{
"known": true,
"code": "E100",
"severity": "error",
"phase": "reader",
"family": "illegal-token-or-structure",
"exit_status": 1,
"raising_condition": "The reader cannot form one admitted datum."
}소스를 읽는 과정에서 올바른 데이터 값 하나를 구성하지 못했다는 뜻입니다.
여기서 exit_status: 1은 진단 대상 오류의 상태이며 서버 종료를 뜻하지 않습니다.
조회는 성공했고 결과 파일을 만들지 않으며 연결은 열린 채로 유지됩니다.
도구 인자
도구 인자는 JSON 객체로 전달합니다. 목록에 없는 인자 필드를 추가하면 요청을 거절합니다.
| 도구 | 인자 | 결과 |
|---|---|---|
lispex_reference | topic은 선택 사항이며, 정확한 name을 넣을 때는 필수 | 설치된 언어 항목 |
lispex_eval | 필수 source와 선택 input | 리스펙스 인터프리터의 값과 출력과 경고와 진단 |
lispex_diagnostic | 필수 code, E 또는 W 뒤에 숫자 세 자리 | 카탈로그 항목과 원인 또는 known: false |
lispex_compare_routes | 필수 court, source와 선택 input | 비교 결과와 자원 사용량과 제품 식별자 |
source에는 전체 UTF-8 소스를 문자열로 넣습니다.
input에는 "41"처럼 리스펙스 데이터 값 하나를 문자열로 넣습니다.
프로그램은 그 값을 input이라는 이름으로 받습니다.
lispex_reference의 주제 이름은 다음과 같습니다.
topic | 내용 |
|---|---|
forms | 언어 형식과 그 구조 |
procedures | 내장 프로시저와 인자 |
reader | 주석을 포함한 소스 표기 규칙 |
resources | 자원 프로파일 |
routes | 실행 방식 |
빈 인자 객체를 보내면 주제 목록을 반환합니다.
주제만 지정하면 그 주제의 항목을 나열합니다.
알 수 없는 이름에는 known: false를 반환합니다.
예를 들어 {"topic": "procedures", "name": "eval"}의 결과에는 disposition: "absent"가 나옵니다.
평가 결과 읽기
도구 응답은 structuredContent에 JSON 결과를 담고 content에 같은 결과의 텍스트를 담습니다.
연결 가이드에서 전체 평가 예제를 볼 수 있습니다.
structuredContent 필드 | 뜻 |
|---|---|
schema | 이 결과 형식의 판인 lispex.mcp-eval-result/v1 |
status | ok나 runtime-error 같은 평가 결과 상태 |
values | 리스펙스 표기로 쓴 반환 값 |
stdout | 출력 내용. 최상위 값의 출력도 포함 |
diagnostics, warnings | 확인할 오류와 경고 |
exit_status | 서버 프로세스와 별개인 평가 상태 |
source_sha256, input_sha256 | 평가 요청의 소스와 입력 식별자 |
resource_profile | 한도와 자원 처리 결과 |
source_retained | false. 호출이 끝나면 서버가 요청 소스를 해제 |
vouch_authority | false. 인증과 수용 판단은 별도 바우치 흐름에서 처리 |
예를 들어 {"source": "(car)"}는 status: "runtime-error"와 진단 E302를 반환합니다.
exit_status는 1입니다.
{"code": "E302"}를 조회하면 호출 인자 개수가 잘못됐다는 설명을 받습니다.
비교 대상 고르기
court 인자는 정해진 런타임 구현 묶음 하나를 고릅니다.
court | 제품 |
|---|---|
tree-rust | 내장 리스펙스 인터프리터와 리스펙스 VM |
가상 머신은 컴파일한 명령을 실행합니다.
서버는 같은 소스와 입력과 요청한 자원 조건으로 비교합니다. 이름의 참조를 정한 중간 표현인 Core IR의 식별자도 기록합니다. 컴파일한 바이트코드의 식별자도 기록에 들어갑니다.
observations의 구현별 항목은 semantic에 실행 결과를 담습니다.
자원 정보는 resources에, 제품 식별자는 products에 있습니다.
| 결과 필드 | 읽는 방법 |
|---|---|
required_routes | 선택한 전체 실행 방식 목록 |
status, comparison_completed | 비교가 끝났는지 확인 |
agreement | 결과와 자원 관측이 비교 규칙에 따라 일치하는지 확인 |
mismatch_axes, resource_mismatch_axes | 서로 다른 비교 항목 |
partial_comparison | false. 필요한 제품이 없으면 선택한 비교를 중단 |
answer_selected | false. 불일치할 때 기록된 결과를 직접 확인 |
다른 court 값
기본 서버는 tree-rust를 제공합니다.
도구 스키마에는 rust-topaz와 all-four도 있습니다.
이 두 값은 서버 시작 때 토파즈 보조 제품을 지정해야 실행됩니다.
그 제품이 없으면 도구는 status: "unavailable"을 반환합니다.
예를 들어 missing_prerequisites: ["topaz-vm"]과 attempted_routes: []가 나옵니다.
자원 프로파일
프로그램을 작성하며 검토한 소스에 이 도구를 사용하세요.
프로파일 ID는 lispex-mcp-local-authoring/v1입니다.
| 자원 | 한도 |
|---|---|
| 요청당 소스 | 65,536바이트 |
| 요청당 입력 | 16,384바이트 |
| 평가 결과 | 1MiB |
| 평가 시간 | 5초 |
| 비교 결과 | 4MiB |
서버는 시간 초과와 취소, 잘못된 입력, 필요한 제품의 부재를 보고합니다. 비교 결과에는 빌드와 정리와 프로세스의 실패 상태도 들어갑니다. 결과를 완료된 계산으로 읽기 전에 상태부터 확인하세요. 신뢰하지 않는 사용자가 제공한 애플리케이션 규칙에는 자원 제어 평가기를 사용합니다.
데이터와 권한
소스와 선택 입력은 stdio를 통해 로컬 서버에 전달됩니다. 작업 프로세스는 요청 데이터를 메모리에 두었다가 요청이 끝나면 해제합니다. 결과에는 소스 식별자와 계산한 값, 출력, 자원 관측, 진단이 들어갑니다. 어시스턴트에 입력한 텍스트에는 해당 애플리케이션의 정책이 적용됩니다.
호출 애플리케이션은 도구 접근과 외부 행동의 권한을 관리합니다. 규칙의 반환 값은 애플리케이션이 판단에 사용할 데이터입니다. 리스펙스 바우치는 게시자를 인증하고 정확한 요청에 기록을 연결한 뒤 재실행합니다. 수신 애플리케이션은 자신의 수용 규칙을 적용하고 외부 행동을 할지 결정합니다.