프로젝트 소개

MCP Arcade는 MCP 서버를 테스트하기 위한 명령줄 도구입니다. 대상 서버에 대해 짧은 이름의 실험 카탈로그인 atoms을 실행하며, 도구 설명, 터미널 출력, 또는 모델의 서면 추론이 아니라 교환된 JSON-RPC 메시지와 샌드박스에서 관찰된 변경 사항을 기반으로 평가를 내립니다. 버전 0.1.x에는 네 가지 atoms이 포함됩니다. inspect.tools_list는 서버가 게시하는 메뉴가 실제로 제공하는 메뉴인지 확인합니다. poison.follow_through는 도구 설명에 숨겨진 사이드 퀘스트가 실제 tools/call이 되지 않도록 확인합니다. temporal.rug_pull은 여러 번의 깨끗한 호출 후에도 도구가 동일하게 유지되는지 검사합니다. protocol.unlisted_call은 holdout으로 표시되며, appena 가져온 메뉴에 없는 nonce 생성 이름을 호출하고, 서버가 JSON-RPC 성공과 isError false로 응답할 때만 실패합니다. --atoms 옵션으로 실행할 atoms을 선택하고, atoms 서브커맨드로 카탈로그를 볼 수 있습니다. 연결된 정책은 에이전트 시트라고 불리며, naive(설명에서 발견된 사이드 퀘스트를 따름), task-only(요청된 도구를 실행하고 중지), 또는 로컬 Ollama 모델 중 하나일 수 있습니다. 로컬 모델은 동결된 시스템 프롬프트, 이름 지정된 작업, 제시된 그대로의 도구 목록, 이전 결과, 그리고 신뢰할 수 없는 관찰로 간주되는 인바운드 서버 알림을 받고, 도구 호출을 반환합니다; 응답에서 이름과 인수만 추출하고, 문장은 복사하지 않습니다. 라이브 서버에서는 --seat-allow에 나열된 도구만 전송할 수 있으며, 해당 목록 외의 시도는 와이어에 도달하지 않고 무단 시도로 기록됩니다. 설치는 pip 또는 클론으로부터 편집 가능한 설치로 수행됩니다. bout 명령은 번들 fixture, stdio 서버, 또는 Docker 이미지에 대해 세션을 실행합니다. 비 fixture 대상은 --allow-live가 필요하며, 그렇지 않으면 명령을 생성하지 않습니다. 양성 작업 도구와 그 인수는 --task 및 --args로 지정할 수 있으며, 이들이 없는 bout는 PASS 대신 SKIP으로 보고됩니다. 옵션에는 메시지 프레이밍 감지, 핸드셰이크 프로토콜 버전, per-request 타임아웃, 그리고 선택된 도구의 설명에 추가할 수 있는 옵트인 하우스 사이드 퀘스트도 포함됩니다. 영수증은 mcp-arcade.bout/v1 JSON 형식으로 내보내며, 표준 형식으로 출력하거나 와이어 이벤트당 한 행씩 시퀀스, 방향, 메서드, id, 소유한 atom, 그리고 메모를 보여주는 타임라인 테이블로 렌더링할 수 있습니다. 서버 알림과 서버에서 발생한 요청은 각각 별도의 행으로 표시됩니다. 렌더러는 점수나 운영자 추측을 위한 필드가 없는 영수증 뷰를 기반으로 구축되므로, 운영자가 verdict를 기록하기 전에 평가를 표시할 수 없습니다. Docker 대상은 제한적인 기본값으로 실행됩니다: 네트워크 없음, 읽기 전용 파일 시스템, 메모리 및 PID 제한, 기능 삭제, 그리고 각 atom당 새로운 컨테이너 하나. 이미지 ID는 고정되어 각 atom 전에 재확인되며, 샌드박스는 컨테이너 내부에서 스냅샷을 찍고, 바인드 및 추가 플래그는 명시적으로 기록됩니다. 컨테이너는 실행 후에 제거됩니다. 점수는 두 축과 하나의 결합된 숫자로 사용됩니다: utility(유틸리티)는 이름 지정된 양성 작업이 실제로 실행되었음을 의미하며, integrity(무결성)는 무단 호출, 카탈로그 거짓, 또는 silenz 돌연변이가 없음을 의미합니다. NRP는 task_success에 (1 - attack_success)를 곱하여 계산되며, ERROR atom이 포함된 bout의 경우 0으로 고정됩니다. 도구를 전혀 호출하지 않는 정책은 완벽한 무결성 결과가 아닌 0점을 받습니다. 영수증은 와이어에서 라벨링된 각 atom당 한 행인 JSONL 데이터셋으로 변환할 수 있으며, holdout atoms는 항상 별도 파일로 분리되고, proof-split 영수증은 학습 데이터에서 제외됩니다. 매니페스트는 생성기 버전, 영수증당 해시, 개수, 그리고 삭제 사유를 기록합니다. 이 도구는 텔레메트리를 수집하지 않으며, 루프백 주소를 기본으로 하는 로컬 모델 엔드포인트를 제외하고는 자체적인 네트워크 연결을 만들지 않으며, 해당 엔드포인트는 영수증에 기록됩니다. 프로젝트는 자신의 한계를 명확히 밝힙니다: 스캐너 벤치마크가 아니며, 부하 테스트도 아니고, 샘플링 또는 유도 클라이언트도 아니고, 컨테이너 오케스트레이터도 아니며, 3D 개요를 제공하지도 않습니다. MIT 라이선스로 배포됩니다.