SillyTavern용 MCP 확장
이 확장 기능은 SillyTavern에 WebSocket 기반 도구 실행 지원을 추가하여 표준화된 인터페이스를 통해 외부 도구를 등록하고 실행할 수 있도록 합니다.
특징
실시간 통신을 위한 WebSocket 서버
도구 등록 및 실행 시스템
도구 정의에 대한 JSON 스키마 검증
실시간 실행 상태 업데이트
구성 가능한 로깅 및 WebSocket 설정
SillyTavern에 통합된 웹 기반 설정 UI
Related MCP server: Modular MCP Server & Client
설치
방법 1: 웹 인터페이스(권장)
SillyTavern 웹 인터페이스를 통해 설치하는 방법에 대한 단계별 지침은 INSTRUCTIONS.md를 참조하세요.
방법 2: 수동 설치
이 저장소를 SillyTavern 플러그인 디렉토리에 복제하세요.
지엑스피1
종속성 설치:
cd mcp-extension npm installSillyTavern을 다시 시작하세요
구성
확장 기능은 SillyTavern UI의 설정 > 확장 기능 > MCP 확장 기능을 통해 구성할 수 있습니다.
사용 가능한 설정
WebSocket 포트 : WebSocket 서버의 포트 번호(기본값: 5005)
로그 수준 : 로깅 상세 수준(디버그, 정보, 경고, 오류)
용법
도구 등록
도구를 등록하려면 다음 형식의 WebSocket 메시지를 보내세요.
{
"type": "register_tool",
"data": {
"name": "example_tool",
"schema": {
"type": "object",
"properties": {
"param1": {
"type": "string",
"description": "First parameter"
},
"param2": {
"type": "number",
"description": "Second parameter"
}
},
"required": ["param1"]
}
}
}도구 실행
등록된 도구를 실행하려면 다음 형식의 WebSocket 메시지를 보내세요.
{
"type": "execute_tool",
"data": {
"executionId": "unique_execution_id",
"name": "example_tool",
"args": {
"param1": "value1",
"param2": 42
}
}
}실행 상태 업데이트
확장 기능은 연결된 모든 클라이언트에 실행 상태 업데이트를 브로드캐스트합니다.
실행이 시작되었습니다
{
"type": "tool_execution_started",
"data": {
"executionId": "unique_execution_id",
"name": "example_tool",
"args": {
"param1": "value1",
"param2": 42
}
}
}실행 완료
{
"type": "tool_execution_completed",
"data": {
"executionId": "unique_execution_id",
"result": {
// Tool-specific result data
}
}
}실행 실패
{
"type": "tool_execution_failed",
"data": {
"executionId": "unique_execution_id",
"error": {
"code": "ERROR_CODE",
"message": "Error message"
}
}
}오류 코드
INVALID_NAME: 잘못된 도구 이름입니다.INVALID_SCHEMA: 잘못된 도구 스키마INVALID_URI: 잘못된 리소스 URIINVALID_HANDLER: 잘못된 핸들러 구현INVALID_ARGUMENTS: 잘못된 도구 인수입니다.TOOL_EXISTS: 도구가 이미 등록되었습니다.TOOL_NOT_FOUND: 도구를 찾을 수 없습니다TOOL_EXECUTION_FAILED: 도구 실행에 실패했습니다.SERVER_ERROR: 내부 서버 오류
개발
프로젝트 구조
mcp-extension/
├── index.js # Main plugin entry point
├── manifest.json # Plugin manifest
├── package.json # Dependencies and scripts
├── public/ # Public assets
│ ├── script.js # Client-side JavaScript
│ ├── style.css # Client-side styles
│ └── templates/ # HTML templates
├── utils/ # Utility modules
│ ├── errors.js # Error handling
│ ├── logger.js # Logging utility
│ └── validation.js # Input validation
└── README.md # This documentation새로운 도구 추가
새로운 도구를 추가하려면:
WebSocket 서버에 연결
스키마를 사용하여 도구를 등록하세요
실행 요청을 수신합니다
실행을 처리하고 결과를 반환합니다.
도구 구현 예시:
const ws = new WebSocket('ws://localhost:5005');
ws.onopen = () => {
// Register tool
ws.send(JSON.stringify({
type: 'register_tool',
data: {
name: 'example_tool',
schema: {
type: 'object',
properties: {
input: {
type: 'string'
}
},
required: ['input']
}
}
}));
};
ws.onmessage = (event) => {
const message = JSON.parse(event.data);
if (message.type === 'execute_tool' &&
message.data.name === 'example_tool') {
// Handle execution
const result = doSomething(message.data.args.input);
// Send result
ws.send(JSON.stringify({
type: 'tool_execution_completed',
data: {
executionId: message.data.executionId,
result
}
}));
}
};기여하다
저장소를 포크하세요
기능 브랜치 생성
변경 사항을 커밋하세요
지점으로 밀어 넣기
풀 리퀘스트 만들기
지원하다
문제가 발생하거나 질문이 있는 경우:
기존 문제는 GitHub 이슈에서 확인하세요.
문제가 보고되지 않은 경우 새 문제를 생성하세요.
지원을 받으려면 SillyTavern Discord 커뮤니티에 가입하세요.
특허
MIT 라이센스 - 자세한 내용은 라이센스 파일을 참조하세요.