UNPKG

ttbkk-mcp-server

Version:

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

61 lines β€’ 2.5 kB
import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; const TTBKK_EDGE_URL = 'https://izhutepzzveasglrlbcx.supabase.co'; const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Iml6aHV0ZXB6enZlYXNnbHJsYmN4Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3Mjc5NTkyMzgsImV4cCI6MjA0MzUzNTIzOH0.kxdrs6OI-fD2QXsdmqZJx_Knm_gwDEXFYqgte46akEw'; /** * Convert address or place name to coordinates using ttbkk-edge geocoding API */ export async function geocodeAddress(args) { try { const { query, provider = 'kakao' } = args; if (!query || typeof query !== 'string') { throw new McpError(ErrorCode.InvalidParams, 'Query parameter is required and must be a string'); } const requestBody = { query, provider, limit: 1 }; console.log(`πŸ—ΊοΈ [Geocoding] Searching for: "${query}"`); const response = await fetch(`${TTBKK_EDGE_URL}/functions/v1/geocoding`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${SUPABASE_ANON_KEY}` }, body: JSON.stringify(requestBody) }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const result = await response.json(); if (!result.success) { console.log(`❌ [Geocoding] Failed: ${result.error?.message}`); return { error: result.error?.message || 'Geocoding failed', query, provider }; } const data = result.data; console.log(`βœ… [Geocoding] Found: ${data.formatted_address} (${data.latitude}, ${data.longitude})`); return { success: true, query, result: { name: data.formatted_address, address: data.address, coordinates: { latitude: data.latitude, longitude: data.longitude }, provider: data.provider, confidence: data.confidence } }; } catch (error) { console.error('❌ [Geocoding] Error:', error); throw new McpError(ErrorCode.InternalError, `Failed to geocode address: ${error instanceof Error ? error.message : 'Unknown error'}`); } } //# sourceMappingURL=geocoding.js.map