Skip to main content
Glama

Claude Context

by zilliztech
options.tsβ€’10.7 kB
// Updated options script with Milvus configuration support // Helper function to add debug info function addDebugInfo(message: string) { const debugContent = document.getElementById('debug-content'); if (debugContent) { const timestamp = new Date().toLocaleTimeString(); const entry = document.createElement('div'); entry.textContent = `[${timestamp}] ${message}`; debugContent.appendChild(entry); } console.log(message); } function saveOptions() { const tokenInput = document.getElementById('github-token') as HTMLInputElement; const openaiInput = document.getElementById('openai-token') as HTMLInputElement; // Milvus configuration inputs const milvusAddressInput = document.getElementById('milvus-address') as HTMLInputElement; const milvusTokenInput = document.getElementById('milvus-token') as HTMLInputElement; const milvusDatabaseInput = document.getElementById('milvus-database') as HTMLInputElement; if (tokenInput) { const token = tokenInput.value; const openaiToken = openaiInput.value; // Milvus configuration const milvusAddress = milvusAddressInput.value; const milvusToken = milvusTokenInput.value; const milvusDatabase = milvusDatabaseInput.value || 'default'; // Validate Milvus address format if provided if (milvusAddress && !isValidUrl(milvusAddress)) { alert('Please enter a valid Milvus server address (e.g., http://localhost:19530)'); return; } addDebugInfo(`Saving settings: githubToken=${token ? '***' : 'empty'}, openaiToken=${openaiToken ? '***' : 'empty'}, milvusAddress=${milvusAddress}`); chrome.storage.sync.set({ githubToken: token, openaiToken: openaiToken, milvusAddress: milvusAddress, milvusToken: milvusToken, milvusDatabase: milvusDatabase }, () => { if (chrome.runtime.lastError) { const errorMsg = `Error saving settings: ${chrome.runtime.lastError.message}`; addDebugInfo(errorMsg); // Show error message const errorFlash = document.getElementById('save-error'); if (errorFlash) { errorFlash.textContent = errorMsg; errorFlash.style.display = 'block'; setTimeout(() => { errorFlash.style.display = 'none'; }, 5000); } return; } addDebugInfo('Settings saved successfully'); // Show success message const successFlash = document.getElementById('save-success'); if (successFlash) { successFlash.style.display = 'block'; setTimeout(() => { successFlash.style.display = 'none'; }, 3000); } // Verify the settings were saved chrome.storage.sync.get(['githubToken', 'openaiToken', 'milvusAddress'], (items) => { addDebugInfo(`Verified tokens saved: githubToken=${items.githubToken ? '***' : 'empty'}, openaiToken=${items.openaiToken ? '***' : 'empty'}, milvusAddress=${items.milvusAddress || 'empty'}`); }); }); } } function restoreOptions() { addDebugInfo('Restoring options...'); // Check if chrome.storage is available if (!chrome.storage || !chrome.storage.sync) { addDebugInfo('ERROR: chrome.storage.sync is not available!'); return; } chrome.storage.sync.get({ githubToken: '', openaiToken: '', milvusAddress: '', milvusToken: '', milvusDatabase: 'default' }, (items) => { if (chrome.runtime.lastError) { addDebugInfo(`Error loading settings: ${chrome.runtime.lastError.message}`); return; } addDebugInfo(`Restoring options: githubToken=${items.githubToken ? '***' : 'empty'}, openaiToken=${items.openaiToken ? '***' : 'empty'}, milvusAddress=${items.milvusAddress || 'empty'}`); // Set basic configuration const githubTokenInput = document.getElementById('github-token') as HTMLInputElement; const openaiTokenInput = document.getElementById('openai-token') as HTMLInputElement; // Set Milvus configuration const milvusAddressInput = document.getElementById('milvus-address') as HTMLInputElement; const milvusTokenInput = document.getElementById('milvus-token') as HTMLInputElement; const milvusDatabaseInput = document.getElementById('milvus-database') as HTMLInputElement; if (githubTokenInput) githubTokenInput.value = items.githubToken || ''; if (openaiTokenInput) openaiTokenInput.value = items.openaiToken || ''; if (milvusAddressInput) milvusAddressInput.value = items.milvusAddress || ''; if (milvusTokenInput) milvusTokenInput.value = items.milvusToken || ''; if (milvusDatabaseInput) milvusDatabaseInput.value = items.milvusDatabase || 'default'; }); } function testMilvusConnection() { addDebugInfo('Testing Milvus connection...'); const resultSpan = document.getElementById('milvus-test-result'); const testButton = document.getElementById('test-milvus') as HTMLButtonElement; if (resultSpan) { resultSpan.textContent = 'Testing connection...'; resultSpan.className = 'color-fg-muted text-small connection-status'; } if (testButton) { testButton.disabled = true; testButton.textContent = 'Testing...'; } // Get current form values const milvusAddressInput = document.getElementById('milvus-address') as HTMLInputElement; const milvusTokenInput = document.getElementById('milvus-token') as HTMLInputElement; const milvusDatabaseInput = document.getElementById('milvus-database') as HTMLInputElement; const address = milvusAddressInput.value; const token = milvusTokenInput.value; const database = milvusDatabaseInput.value || 'default'; if (!address) { if (resultSpan) { resultSpan.textContent = 'Please enter a Milvus server address'; resultSpan.className = 'color-fg-danger text-small connection-status'; } if (testButton) { testButton.disabled = false; testButton.textContent = 'Test Milvus Connection'; } return; } // Save temporary configuration and test chrome.storage.sync.set({ milvusAddress: address, milvusToken: token, milvusDatabase: database }, () => { // Send message to background script to test connection chrome.runtime.sendMessage({ action: 'testMilvusConnection' }, (response) => { if (testButton) { testButton.disabled = false; testButton.textContent = 'Test Milvus Connection'; } if (chrome.runtime.lastError) { const errorMsg = `Connection test failed: ${chrome.runtime.lastError.message}`; addDebugInfo(errorMsg); if (resultSpan) { resultSpan.textContent = errorMsg; resultSpan.className = 'color-fg-danger text-small connection-status'; } return; } if (response && response.success) { if (response.connected) { addDebugInfo('Milvus connection successful'); if (resultSpan) { resultSpan.textContent = 'Connection successful'; resultSpan.className = 'color-fg-success text-small connection-status'; } } else { addDebugInfo('Milvus connection failed'); if (resultSpan) { resultSpan.textContent = 'Connection failed'; resultSpan.className = 'color-fg-danger text-small connection-status'; } } } else { const errorMsg = response ? (response.error || 'Unknown error') : 'No response from background script'; addDebugInfo(`Connection test error: ${errorMsg}`); if (resultSpan) { resultSpan.textContent = `Error: ${errorMsg}`; resultSpan.className = 'color-fg-danger text-small connection-status'; } } }); }); } function isValidUrl(string: string): boolean { try { new URL(string); return true; } catch (_) { return false; } } function toggleDebug() { const debugArea = document.getElementById('debug-area'); const toggleButton = document.getElementById('toggle-debug') as HTMLButtonElement; if (debugArea && toggleButton) { if (debugArea.style.display === 'none' || debugArea.style.display === '') { debugArea.style.display = 'block'; toggleButton.textContent = 'Hide Debug Info'; addDebugInfo('Debug area shown'); } else { debugArea.style.display = 'none'; toggleButton.textContent = 'Show Debug Info'; } } } // Event listeners document.addEventListener('DOMContentLoaded', () => { addDebugInfo('Options page loaded'); restoreOptions(); const saveButton = document.getElementById('save'); const toggleButton = document.getElementById('toggle-debug'); const testMilvusButton = document.getElementById('test-milvus'); if (saveButton) { saveButton.addEventListener('click', saveOptions); } if (toggleButton) { toggleButton.addEventListener('click', toggleDebug); } if (testMilvusButton) { testMilvusButton.addEventListener('click', testMilvusConnection); } // Auto-save on form changes (debounced) let saveTimeout: number; const inputs = document.querySelectorAll('input'); inputs.forEach(input => { input.addEventListener('input', () => { clearTimeout(saveTimeout); saveTimeout = window.setTimeout(() => { addDebugInfo(`Auto-saving due to change in ${input.id}`); // Note: We don't auto-save because user might be in the middle of editing }, 1000); }); }); });

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/zilliztech/claude-context'

If you have feedback or need assistance with the MCP directory API, please join our Discord server