Skip to main content
Glama

SillyTavern MCP Server

by CG-Labs

MCP Extension for SillyTavern

This extension adds WebSocket-based tool execution support to SillyTavern, allowing external tools to be registered and executed through a standardized interface.

Features

  • WebSocket server for real-time communication
  • Tool registration and execution system
  • JSON Schema validation for tool definitions
  • Real-time execution status updates
  • Configurable logging and WebSocket settings
  • Web-based settings UI integrated into SillyTavern

Installation

See INSTRUCTIONS.md for step-by-step instructions on installing through SillyTavern's web interface.

Method 2: Manual Installation

  1. Clone this repository into your SillyTavern plugins directory:
    cd /path/to/SillyTavern/plugins git clone https://github.com/CG-Labs/SillyTavern-MCP-Extension.git mcp-extension
  2. Install dependencies:
    cd mcp-extension npm install
  3. Restart SillyTavern

Configuration

The extension can be configured through the SillyTavern UI under Settings > Extensions > MCP Extension.

Available Settings

  • WebSocket Port: The port number for the WebSocket server (default: 5005)
  • Log Level: Logging verbosity level (debug, info, warn, error)

Usage

Registering a Tool

To register a tool, send a WebSocket message with the following format:

{ "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"] } } }

Executing a Tool

To execute a registered tool, send a WebSocket message with the following format:

{ "type": "execute_tool", "data": { "executionId": "unique_execution_id", "name": "example_tool", "args": { "param1": "value1", "param2": 42 } } }

Execution Status Updates

The extension broadcasts execution status updates to all connected clients:

Execution Started
{ "type": "tool_execution_started", "data": { "executionId": "unique_execution_id", "name": "example_tool", "args": { "param1": "value1", "param2": 42 } } }
Execution Completed
{ "type": "tool_execution_completed", "data": { "executionId": "unique_execution_id", "result": { // Tool-specific result data } } }
Execution Failed
{ "type": "tool_execution_failed", "data": { "executionId": "unique_execution_id", "error": { "code": "ERROR_CODE", "message": "Error message" } } }

Error Codes

  • INVALID_NAME: Invalid tool name
  • INVALID_SCHEMA: Invalid tool schema
  • INVALID_URI: Invalid resource URI
  • INVALID_HANDLER: Invalid handler implementation
  • INVALID_ARGUMENTS: Invalid tool arguments
  • TOOL_EXISTS: Tool already registered
  • TOOL_NOT_FOUND: Tool not found
  • TOOL_EXECUTION_FAILED: Tool execution failed
  • SERVER_ERROR: Internal server error

Development

Project Structure

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

Adding New Tools

To add a new tool:

  1. Connect to the WebSocket server
  2. Register your tool with a schema
  3. Listen for execution requests
  4. Handle execution and return results

Example tool implementation:

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

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

Support

If you encounter any issues or have questions:

  1. Check the GitHub Issues for existing problems
  2. Create a new issue if your problem hasn't been reported
  3. Join the SillyTavern Discord community for support

License

MIT License - see LICENSE file for details

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

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

WebSocket ベースの通信による外部ツールの登録と実行を可能にし、SillyTavern 内でのリアルタイム ツール管理のための統合インターフェイスを提供します。

  1. 特徴
    1. インストール
      1. 方法 1: Web インターフェース (推奨)
      2. 方法2: 手動インストール
    2. 構成
      1. 利用可能な設定
    3. 使用法
      1. ツールの登録
      2. ツールの実行
      3. 実行ステータスの更新
    4. エラーコード
      1. 発達
        1. プロジェクト構造
        2. 新しいツールの追加
      2. 貢献
        1. サポート
          1. ライセンス

            Related MCP Servers

            • A
              security
              A
              license
              A
              quality
              The server provides tools for web automation using Playwright, allowing navigation, interaction, and JavaScript execution on web pages, and supports note storage with summarization capabilities.
              Last updated -
              8
              142
              Python
              Apache 2.0
              • Apple
            • A
              security
              A
              license
              A
              quality
              Enables creation and management of Framer plugins with web3 capabilities like wallet connections, contract interactions, and NFT displays.
              Last updated -
              2
              24
              JavaScript
              MIT License
            • -
              security
              F
              license
              -
              quality
              A modular and extensible tool server built on FastMCP that supports multiple tools organized across files and communicates via MCP protocol.
              Last updated -
              Python
            • -
              security
              F
              license
              -
              quality
              A Python framework for developing and managing tool instances through a registry system, where developers can easily create new tools by inheriting from the BaseHandler class and implementing required methods.
              Last updated -
              Python

            View all related MCP servers

            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