mirror of
https://github.com/SunZhimin2021/AIPentest.git
synced 2025-11-05 10:53:16 +00:00
- 支持多 LLM(OpenAI、Claude、DeepSeek 等) - 完整的 MCP 协议集成 - 现代化 Web UI(基于 NiceGUI) - 元工具系统 - 中文文档 来源:https://github.com/alejoair/mcp-open-client
4.7 KiB
4.7 KiB
Sistema de Meta Tools para MCP Open Client
El sistema de Meta Tools permite crear y registrar herramientas personalizadas que pueden ser utilizadas por el LLM para interactuar con la interfaz de usuario o realizar otras tareas que no son parte de las herramientas MCP estándar.
Características
- Integración transparente con el sistema de herramientas MCP existente
- Soporte para funciones síncronas y asíncronas
- Decorador para facilitar el registro de meta tools
- Esquema compatible con OpenAI Function Calling
- Manejo de errores integrado
Uso básico
1. Registrar una meta tool
Hay dos formas de registrar una meta tool:
Usando el decorador @meta_tool
from mcp_open_client.meta_tools import meta_tool
@meta_tool(
name="ui_notify",
description="Muestra una notificación en la interfaz de usuario",
parameters_schema={
"type": "object",
"properties": {
"message": {"type": "string", "description": "Mensaje a mostrar"},
"type": {"type": "string", "enum": ["positive", "negative", "warning", "info"], "default": "info"}
},
"required": ["message"]
}
)
def show_notification(message: str, type: str = "info"):
"""Muestra una notificación en la interfaz de usuario."""
ui.notify(message, type=type)
return f"Notificación mostrada: {message}"
Registrando directamente en el registro
from mcp_open_client.meta_tools import meta_tool_registry
def show_notification(message: str, type: str = "info"):
"""Muestra una notificación en la interfaz de usuario."""
ui.notify(message, type=type)
return f"Notificación mostrada: {message}"
meta_tool_registry.register_tool(
name="ui_notify",
func=show_notification,
description="Muestra una notificación en la interfaz de usuario",
parameters_schema={
"type": "object",
"properties": {
"message": {"type": "string", "description": "Mensaje a mostrar"},
"type": {"type": "string", "enum": ["positive", "negative", "warning", "info"], "default": "info"}
},
"required": ["message"]
}
)
2. Funciones asíncronas
Las meta tools también pueden ser funciones asíncronas:
@meta_tool(
name="delayed_task",
description="Ejecuta una tarea después de un retraso",
parameters_schema={
"type": "object",
"properties": {
"seconds": {"type": "number", "description": "Segundos a esperar"},
"message": {"type": "string", "description": "Mensaje a mostrar después del retraso"}
},
"required": ["seconds", "message"]
}
)
async def delayed_task(seconds: float, message: str):
"""Ejecuta una tarea después de un retraso."""
await asyncio.sleep(seconds)
ui.notify(message)
return f"Tarea ejecutada después de {seconds} segundos: {message}"
3. Manejo de errores
Puedes devolver errores desde tus meta tools de la siguiente manera:
@meta_tool(
name="divide_numbers",
description="Divide dos números",
parameters_schema={
"type": "object",
"properties": {
"a": {"type": "number", "description": "Dividendo"},
"b": {"type": "number", "description": "Divisor"}
},
"required": ["a", "b"]
}
)
def divide_numbers(a: float, b: float):
"""Divide dos números."""
if b == 0:
return {"error": "No se puede dividir por cero"}
return a / b
Ejemplos
Consulta el archivo mcp_open_client/examples/custom_meta_tools.py para ver ejemplos completos de meta tools personalizadas.
Referencia de la API
meta_tool_registry
Instancia global del registro de meta tools.
Métodos
register_tool(name, func, description, parameters_schema): Registra una nueva meta toolexecute_tool(tool_name, params): Ejecuta una meta tool registradaget_tools_schema(): Obtiene el esquema de todas las meta tools en formato compatible con OpenAI
Decorador @meta_tool
Decorador para registrar una función como meta tool.
Parámetros
name: Nombre de la meta tooldescription: Descripción de la meta toolparameters_schema: Esquema de parámetros en formato JSON Schema
Herramientas predefinidas
El sistema viene con algunas meta tools predefinidas:
Herramientas de UI
meta-ui_notify: Muestra una notificación en la interfaz de usuario
Herramientas de control de servidores MCP
meta-mcp_toggle_server: Activa o desactiva un servidor MCP específicometa-mcp_list_servers: Lista todos los servidores MCP configurados y su estadometa-mcp_restart_all_servers: Reinicia todos los servidores MCP activos