SillyTavern MCP Server
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
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-extensionInstalar dependencias:
cd mcp-extension npm installReiniciar 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álidoINVALID_SCHEMA: Esquema de herramienta no válidoINVALID_URI: URI de recurso no válidoINVALID_HANDLER: Implementación de controlador no válidaINVALID_ARGUMENTS: Argumentos de herramienta no válidosTOOL_EXISTS: Herramienta ya registradaTOOL_NOT_FOUND: Herramienta no encontradaTOOL_EXECUTION_FAILED: Falló la ejecución de la herramientaSERVER_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 documentationAgregar nuevas herramientas
Para agregar una nueva herramienta:
Conectarse al servidor WebSocket
Registre su herramienta con un esquema
Escuchar solicitudes de ejecución
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
Bifurcar el repositorio
Crear una rama de características
Confirme sus cambios
Empujar hacia la rama
Crear una solicitud de extracción
Apoyo
Si encuentra algún problema o tiene preguntas:
Consulte los problemas de GitHub para ver los problemas existentes
Crea un nuevo problema si tu problema no ha sido reportado
Únete a la comunidad Discord de SillyTavern para obtener ayuda.
Licencia
Licencia MIT: consulte el archivo de LICENCIA para obtener más detalles
This server cannot be installed
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