SillyTavern용 MCP 확장
이 확장 기능은 SillyTavern에 WebSocket 기반 도구 실행 지원을 추가하여 표준화된 인터페이스를 통해 외부 도구를 등록하고 실행할 수 있도록 합니다.
특징
Related MCP server: Modular MCP Server & Client
설치
방법 1: 웹 인터페이스(권장)
SillyTavern 웹 인터페이스를 통해 설치하는 방법에 대한 단계별 지침은 INSTRUCTIONS.md를 참조하세요.
방법 2: 수동 설치
이 저장소를 SillyTavern 플러그인 디렉토리에 복제하세요.
지엑스피1
종속성 설치:
cd mcp-extension
npm install
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
새로운 도구 추가
새로운 도구를 추가하려면:
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 라이센스 - 자세한 내용은 라이센스 파일을 참조하세요.