Skip to main content
Glama

Bear MCP Server

by philgetzen
test-restored.js4.69 kB
#!/usr/bin/env node // Test script for the restored Bear MCP server // This tests the HTTP callback functionality const { spawn } = require('child_process'); const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); console.log('Bear MCP Server Test - Restored Callback Functionality'); console.log('=====================================================\n'); // Start the server const server = spawn('node', ['dist/index.js'], { stdio: ['pipe', 'pipe', 'pipe'] }); let serverReady = false; // Handle server output server.stdout.on('data', (data) => { const output = data.toString(); console.log('[Server Output]:', output.trim()); if (output.includes('Bear MCP server') && !serverReady) { serverReady = true; console.log('\n✅ Server is ready!\n'); showMenu(); } }); server.stderr.on('data', (data) => { const output = data.toString(); if (output.includes('[DEBUG]')) { console.log('[Debug]:', output.trim()); } else { console.log('[Server Log]:', output.trim()); } }); server.on('error', (err) => { console.error('Failed to start server:', err); process.exit(1); }); server.on('close', (code) => { console.log(`\nServer exited with code ${code}`); rl.close(); process.exit(code); }); // Send request to server function sendRequest(method, params = {}) { const request = { jsonrpc: "2.0", method: method, params: params, id: Date.now() }; console.log('\n📤 Sending request:', JSON.stringify(request, null, 2)); server.stdin.write(JSON.stringify(request) + '\n'); } function showMenu() { console.log('\nChoose a test:'); console.log('1. Check Bear setup'); console.log('2. Get tags (requires token)'); console.log('3. Search notes (requires token)'); console.log('4. Create a test note'); console.log('5. Exit\n'); rl.question('Enter your choice (1-5): ', (choice) => { handleChoice(choice); }); } async function handleChoice(choice) { switch (choice) { case '1': console.log('\n🔍 Testing Bear setup...'); sendRequest('tools/call', { name: 'check_bear_setup', arguments: {} }); break; case '2': console.log('\n🏷️ Getting tags from Bear...'); sendRequest('tools/call', { name: 'get_tags', arguments: {} }); break; case '3': rl.question('Enter search term: ', (term) => { console.log(`\n🔍 Searching for "${term}"...`); sendRequest('tools/call', { name: 'search_notes', arguments: { term: term } }); }); return; case '4': console.log('\n📝 Creating test note...'); const timestamp = new Date().toISOString(); sendRequest('tools/call', { name: 'create_note', arguments: { title: `Test Note - ${timestamp}`, text: `This is a test note created by the restored Bear MCP server.\n\nCreated at: ${timestamp}\n\nThe HTTP callback functionality has been restored!`, tags: 'test,mcp-server' } }); break; case '5': console.log('\nExiting...'); server.kill(); return; default: console.log('\n❌ Invalid choice'); showMenu(); return; } // Show menu again after a delay setTimeout(showMenu, 3000); } // Handle response parsing let buffer = ''; server.stdout.on('data', (data) => { buffer += data.toString(); // Try to parse complete JSON-RPC messages const lines = buffer.split('\n'); buffer = lines.pop() || ''; // Keep incomplete line in buffer for (const line of lines) { if (line.trim() && line.includes('"jsonrpc"')) { try { const response = JSON.parse(line); if (response.result) { console.log('\n📥 Response received:'); if (response.result.content && response.result.content[0]) { console.log(response.result.content[0].text); } else { console.log(JSON.stringify(response.result, null, 2)); } } else if (response.error) { console.log('\n❌ Error:', response.error.message); } } catch (e) { // Not a complete JSON message yet } } } }); // Start by listing available tools console.log('🚀 Starting Bear MCP server...\n'); // Send initial request to list tools setTimeout(() => { if (!serverReady) { console.log('Waiting for server to start...'); } }, 1000); // Handle Ctrl+C gracefully process.on('SIGINT', () => { console.log('\n\nShutting down...'); server.kill(); process.exit(0); });

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/philgetzen/bear-mcp'

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