Holaspirit MCP Server

<div class="mcp-extension-settings"> <div class="inline-drawer"> <div class="inline-drawer-toggle inline-drawer-header"> <b>MCP Extension Settings</b> <div class="inline-drawer-icon fa-solid fa-circle-chevron-down down"></div> </div> <div class="inline-drawer-content"> <div class="mcp-extension-settings-content"> <!-- WebSocket Settings --> <div class="mcp-setting-group"> <h4>WebSocket Server</h4> <div class="mcp-setting"> <label for="mcp_websocket_port">Port:</label> <input type="number" id="mcp_websocket_port" class="text_pole" value="5005" min="1024" max="65535"/> <small class="inline-drawer-content">Port for the WebSocket server (default: 5005)</small> </div> </div> <!-- Logging Settings --> <div class="mcp-setting-group"> <h4>Logging</h4> <div class="mcp-setting"> <label for="mcp_log_level">Log Level:</label> <select id="mcp_log_level" class="text_pole"> <option value="debug">Debug</option> <option value="info" selected>Info</option> <option value="warn">Warning</option> <option value="error">Error</option> </select> <small class="inline-drawer-content">Logging verbosity level</small> </div> </div> <!-- Connection Status --> <div class="mcp-setting-group"> <h4>Status</h4> <div class="mcp-status"> <div class="mcp-status-item"> <span>WebSocket Server:</span> <span id="mcp_ws_status" class="mcp-status-indicator">Disconnected</span> </div> <div class="mcp-status-item"> <span>Connected Clients:</span> <span id="mcp_client_count">0</span> </div> </div> </div> <!-- Tools --> <div class="mcp-setting-group"> <h4>Registered Tools</h4> <div id="mcp_tools_list" class="mcp-tools-list"> <div class="mcp-no-tools">No tools registered</div> </div> </div> <!-- Tool Executions --> <div class="mcp-setting-group"> <h4>Tool Executions</h4> <div id="mcp_executions_list" class="mcp-executions-list"> <div class="mcp-no-executions">No active executions</div> </div> </div> <!-- Actions --> <div class="mcp-setting-group"> <div class="mcp-actions"> <button id="mcp_restart_server" class="menu_button"> <i class="fa-solid fa-rotate"></i> Restart Server </button> <button id="mcp_apply_settings" class="menu_button"> <i class="fa-solid fa-check"></i> Apply Settings </button> </div> </div> </div> </div> </div> </div> <!-- Tool Execution Template --> <template id="tool-execution-template"> <div class="mcp-tool-execution"> <div class="mcp-tool-header"> <h4 class="mcp-tool-name"></h4> <div class="mcp-tool-status"> <span class="status-indicator"></span> <span class="status-text"></span> </div> </div> <div class="mcp-tool-content"> <div class="mcp-tool-args"> <h5>Arguments</h5> <pre class="args-display"></pre> </div> <div class="mcp-tool-result"> <h5>Result</h5> <pre class="result-display"></pre> </div> <div class="mcp-tool-error hidden"> <h5>Error</h5> <pre class="error-display"></pre> </div> </div> </div> </template> <style> .mcp-extension-settings { margin: 10px 0; } .mcp-setting-group { margin: 15px 0; } .mcp-setting-group h4 { margin: 5px 0; color: var(--SmartThemeBodyColor); } .mcp-setting { display: flex; align-items: center; gap: 10px; margin: 5px 0; } .mcp-setting label { min-width: 100px; } .mcp-setting small { color: var(--SmartThemeBodyColor); opacity: 0.8; } .mcp-status { background: var(--SmartThemeBlendedColor); padding: 10px; border-radius: 5px; } .mcp-status-item { display: flex; justify-content: space-between; margin: 5px 0; } .mcp-status-indicator { padding: 2px 8px; border-radius: 3px; background: var(--SmartThemeBodyColor); } .mcp-status-indicator.connected { background: var(--success); } .mcp-tools-list, .mcp-executions-list { background: var(--SmartThemeBlendedColor); padding: 10px; border-radius: 5px; min-height: 50px; } .mcp-no-tools, .mcp-no-executions { text-align: center; color: var(--SmartThemeBodyColor); opacity: 0.8; } .mcp-actions { display: flex; gap: 10px; justify-content: flex-end; } .mcp-tool-execution { background: var(--SmartThemeBlendedColor); border-radius: 5px; margin: 10px 0; padding: 15px; } .mcp-tool-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } .mcp-tool-name { margin: 0; color: var(--SmartThemeBodyColor); } .mcp-tool-status { display: flex; align-items: center; gap: 8px; } .status-indicator { width: 10px; height: 10px; border-radius: 50%; background: var(--SmartThemeBodyColor); } .status-indicator.running { background: var(--warning); animation: pulse 1s infinite; } .status-indicator.success { background: var(--success); } .status-indicator.error { background: var(--error); } @keyframes pulse { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } } .mcp-tool-content { display: flex; flex-direction: column; gap: 15px; } .mcp-tool-content h5 { margin: 0 0 5px 0; color: var(--SmartThemeBodyColor); opacity: 0.8; } .mcp-tool-content pre { margin: 0; padding: 10px; background: var(--SmartThemeBlendedColor); border-radius: 3px; white-space: pre-wrap; word-break: break-word; } .mcp-tool-error { color: var(--error); } .hidden { display: none; } /* Responsive Design */ @media (max-width: 768px) { .mcp-tool-header { flex-direction: column; align-items: flex-start; gap: 10px; } .mcp-tool-status { width: 100%; justify-content: flex-start; } } </style>