SillyTavern の MCP 拡張機能
この拡張機能は、SillyTavern に WebSocket ベースのツール実行サポートを追加し、標準化されたインターフェースを介して外部ツールを登録および実行できるようにします。
特徴
Related MCP server: Modular MCP Server & Client
インストール
方法 1: Web インターフェース (推奨)
SillyTavern の Web インターフェイスからインストールする手順については、 INSTRUCTIONS.md を参照してください。
方法2: 手動インストール
このリポジトリを SillyTavern プラグイン ディレクトリにクローンします。
cd /path/to/SillyTavern/plugins
git clone https://github.com/CG-Labs/SillyTavern-MCP-Extension.git mcp-extension
依存関係をインストールします:
cd mcp-extension
npm install
SillyTavern を再起動する
構成
拡張機能は、SillyTavern UI の「設定 > 拡張機能 > MCP 拡張機能」から設定できます。
利用可能な設定
使用法
ツールの登録
ツールを登録するには、次の形式の 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 Issuesで既存の問題を確認する
問題が報告されていない場合は、新しい問題を作成してください
SillyTavern Discordコミュニティに参加してサポートを受けましょう
ライセンス
MITライセンス - 詳細はLICENSEファイルを参照