Skip to main content
Glama
CG-Labs

SillyTavern MCP Server

by CG-Labs

SillyTavern の MCP 拡張機能

この拡張機能は、SillyTavern に WebSocket ベースのツール実行サポートを追加し、標準化されたインターフェースを介して外部ツールを登録および実行できるようにします。

特徴

  • リアルタイム通信用のWebSocketサーバー

  • ツール登録および実行システム

  • ツール定義のJSONスキーマ検証

  • リアルタイム実行ステータスの更新

  • 設定可能なログ記録とWebSocket設定

  • SillyTavern に統合された Web ベースの設定 UI

Related MCP server: Modular MCP Server & Client

インストール

方法 1: Web インターフェース (推奨)

SillyTavern の Web インターフェイスからインストールする手順については、 INSTRUCTIONS.md を参照してください。

方法2: 手動インストール

  1. このリポジトリを SillyTavern プラグイン ディレクトリにクローンします。

    cd /path/to/SillyTavern/plugins
    git clone https://github.com/CG-Labs/SillyTavern-MCP-Extension.git mcp-extension
  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 Issuesで既存の問題を確認する

  2. 問題が報告されていない場合は、新しい問題を作成してください

  3. SillyTavern Discordコミュニティに参加してサポートを受けましょう

ライセンス

MITライセンス - 詳細はLICENSEファイルを参照

-
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