UNPKG

ttbkk-mcp-server

Version:

MCP server providing access to Korean tteokbokki restaurant database with search, location-based queries, and brand information

72 lines 2.36 kB
import { supabase } from '../lib/supabase.js'; /** * Search for tteokbokki restaurants by query (실제 ttbkk-web usePlaceMap 기반) * @param query - Search query (location, restaurant name, brand name, etc.) * @param limit - Maximum number of results to return * @returns Array of matching restaurants */ export async function searchTteokbokkiRestaurants(query, limit = 10) { try { // ttbkk-web usePlaceDetail과 동일한 구조로 조회 const { data, error } = await supabase .from('place') .select(` *, brand ( *, hashtags:brand_hashtags!brand_id ( hashtag_id ) ), hashtags:place_hashtags!place_id ( hashtag_id ) `) .eq('is_deleted', false) .or(`name.ilike.%${query}%,address.ilike.%${query}%`) .limit(limit); if (error) { console.error('Supabase error:', error); throw new Error(`Failed to search restaurants: ${error.message}`); } return data || []; } catch (error) { console.error('Error searching restaurants:', error); throw error; } } /** * Get all restaurants in a bounding box (ttbkk-web usePlaceMap과 동일) * @param bottomLeft - Bottom left coordinates * @param topRight - Top right coordinates * @param limit - Maximum number of results to return * @returns Array of restaurants in the area */ export async function getRestaurantsInArea(bottomLeft, topRight, limit = 100) { try { const { data, error } = await supabase .from('place') .select(` *, brand (*), place_hashtags (*) `) .eq('is_deleted', false) .gte('latitude', bottomLeft.latitude) .lte('latitude', topRight.latitude) .gte('longitude', bottomLeft.longitude) .lte('longitude', topRight.longitude) .limit(limit); if (error) { console.error('Supabase error:', error); throw new Error(`Failed to get restaurants in area: ${error.message}`); } return data || []; } catch (error) { console.error('Error getting restaurants in area:', error); throw error; } } //# sourceMappingURL=restaurant-search.js.map