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

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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