Skip to main content
Glama
CG-Labs

SillyTavern MCP Server

by CG-Labs

SillyTavern용 MCP 확장

이 확장 기능은 SillyTavern에 WebSocket 기반 도구 실행 지원을 추가하여 표준화된 인터페이스를 통해 외부 도구를 등록하고 실행할 수 있도록 합니다.

특징

  • 실시간 통신을 위한 WebSocket 서버

  • 도구 등록 및 실행 시스템

  • 도구 정의에 대한 JSON 스키마 검증

  • 실시간 실행 상태 업데이트

  • 구성 가능한 로깅 및 WebSocket 설정

  • SillyTavern에 통합된 웹 기반 설정 UI

Related MCP server: Modular MCP Server & Client

설치

방법 1: 웹 인터페이스(권장)

SillyTavern 웹 인터페이스를 통해 설치하는 방법에 대한 단계별 지침은 INSTRUCTIONS.md를 참조하세요.

방법 2: 수동 설치

  1. 이 저장소를 SillyTavern 플러그인 디렉토리에 복제하세요.

    지엑스피1

  2. 종속성 설치:

    cd mcp-extension
    npm install
  3. SillyTavern을 다시 시작하세요

구성

확장 기능은 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 : 잘못된 리소스 URI

  • INVALID_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

새로운 도구 추가

새로운 도구를 추가하려면:

  1. WebSocket 서버에 연결

  2. 스키마를 사용하여 도구를 등록하세요

  3. 실행 요청을 수신합니다

  4. 실행을 처리하고 결과를 반환합니다.

도구 구현 예시:

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
            }
        }));
    }
};

기여하다

  1. 저장소를 포크하세요

  2. 기능 브랜치 생성

  3. 변경 사항을 커밋하세요

  4. 지점으로 밀어 넣기

  5. 풀 리퀘스트 만들기

지원하다

문제가 발생하거나 질문이 있는 경우:

  1. 기존 문제는 GitHub 이슈에서 확인하세요.

  2. 문제가 보고되지 않은 경우 새 문제를 생성하세요.

  3. 지원을 받으려면 SillyTavern Discord 커뮤니티에 가입하세요.

특허

MIT 라이센스 - 자세한 내용은 라이센스 파일을 참조하세요.

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CG-Labs/SillyTavern-MCP-Extension'

If you have feedback or need assistance with the MCP directory API, please join our Discord server