Skip to main content
Glama
by CG-Labs

Extensión MCP para SillyTavern

Esta extensión agrega soporte de ejecución de herramientas basada en WebSocket a SillyTavern, lo que permite registrar y ejecutar herramientas externas a través de una interfaz estandarizada.

Características

  • Servidor WebSocket para comunicación en tiempo real

  • Sistema de registro y ejecución de herramientas

  • Validación de esquemas JSON para definiciones de herramientas

  • Actualizaciones del estado de ejecución en tiempo real

  • Configuración de registro y WebSocket configurables

  • Interfaz de usuario de configuración basada en web integrada en SillyTavern

Related MCP server: Modular MCP Server & Client

Instalación

Método 1: Interfaz web (recomendado)

Consulte INSTRUCCIONES.md para obtener instrucciones paso a paso sobre la instalación a través de la interfaz web de SillyTavern.

Método 2: Instalación manual

  1. Clona este repositorio en tu directorio de complementos de SillyTavern:

    cd /path/to/SillyTavern/plugins git clone https://github.com/CG-Labs/SillyTavern-MCP-Extension.git mcp-extension
  2. Instalar dependencias:

    cd mcp-extension npm install
  3. Reiniciar SillyTavern

Configuración

La extensión se puede configurar a través de la interfaz de usuario de SillyTavern en Configuración > Extensiones > Extensión MCP.

Configuraciones disponibles

  • Puerto WebSocket : el número de puerto para el servidor WebSocket (predeterminado: 5005)

  • Nivel de registro : nivel de verbosidad del registro (depuración, información, advertencia, error)

Uso

Registrar una herramienta

Para registrar una herramienta, envíe un mensaje WebSocket con el siguiente formato:

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

Ejecución de una herramienta

Para ejecutar una herramienta registrada, envíe un mensaje WebSocket con el siguiente formato:

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

Actualizaciones del estado de ejecución

La extensión transmite actualizaciones del estado de ejecución a todos los clientes conectados:

Ejecución iniciada

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

Ejecución completada

{ "type": "tool_execution_completed", "data": { "executionId": "unique_execution_id", "result": { // Tool-specific result data } } }

Ejecución fallida

{ "type": "tool_execution_failed", "data": { "executionId": "unique_execution_id", "error": { "code": "ERROR_CODE", "message": "Error message" } } }

Códigos de error

  • INVALID_NAME : Nombre de herramienta no válido

  • INVALID_SCHEMA : Esquema de herramienta no válido

  • INVALID_URI : URI de recurso no válido

  • INVALID_HANDLER : Implementación de controlador no válida

  • INVALID_ARGUMENTS : Argumentos de herramienta no válidos

  • TOOL_EXISTS : Herramienta ya registrada

  • TOOL_NOT_FOUND : Herramienta no encontrada

  • TOOL_EXECUTION_FAILED : Falló la ejecución de la herramienta

  • SERVER_ERROR : Error interno del servidor

Desarrollo

Estructura del proyecto

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

Agregar nuevas herramientas

Para agregar una nueva herramienta:

  1. Conectarse al servidor WebSocket

  2. Registre su herramienta con un esquema

  3. Escuchar solicitudes de ejecución

  4. Manejar la ejecución y devolver resultados

Ejemplo de implementación de la herramienta:

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

Contribuyendo

  1. Bifurcar el repositorio

  2. Crear una rama de características

  3. Confirme sus cambios

  4. Empujar hacia la rama

  5. Crear una solicitud de extracción

Apoyo

Si encuentra algún problema o tiene preguntas:

  1. Consulte los problemas de GitHub para ver los problemas existentes

  2. Crea un nuevo problema si tu problema no ha sido reportado

  3. Únete a la comunidad Discord de SillyTavern para obtener ayuda.

Licencia

Licencia MIT: consulte el archivo de LICENCIA para obtener más detalles

-
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