Skip to main content
Glama
datalab.handlers.ts6.48 kB
import { NaverSearchClient } from "../clients/naver-search.client.js"; import { DatalabSearch, DatalabShopping, DatalabShoppingDevice, DatalabShoppingGender, DatalabShoppingAge, DatalabShoppingKeywords, DatalabShoppingKeywordDevice, DatalabShoppingKeywordGender, DatalabShoppingKeywordAge, } from "../schemas/datalab.schemas.js"; // 클라이언트 인스턴스 (싱글톤) const client = NaverSearchClient.getInstance(); /** * 데이터랩 도구 핸들러 맵 * 각 도구 이름을 키로, 실행할 핸들러 함수를 값으로 가짐 * index.ts에서 도구 실행 분기 없이 바로 사용 */ export const datalabToolHandlers: Record<string, (args: any) => Promise<any>> = { datalab_search: (args) => { console.error("datalab_search called with args:", JSON.stringify(args, null, 2)); return handleSearchTrend(args); }, datalab_shopping_category: (args) => { console.error("datalab_shopping_category called with args:", JSON.stringify(args, null, 2)); return handleShoppingCategoryTrend(args); }, datalab_shopping_by_device: (args) => { console.error("datalab_shopping_by_device called with args:", JSON.stringify(args, null, 2)); return handleShoppingByDeviceTrend(args); }, datalab_shopping_by_gender: (args) => { console.error("datalab_shopping_by_gender called with args:", JSON.stringify(args, null, 2)); return handleShoppingByGenderTrend(args); }, datalab_shopping_by_age: (args) => { console.error("datalab_shopping_by_age called with args:", JSON.stringify(args, null, 2)); return handleShoppingByAgeTrend(args); }, datalab_shopping_keywords: (args) => { console.error("datalab_shopping_keywords called with args:", JSON.stringify(args, null, 2)); return handleShoppingKeywordsTrend(args); }, datalab_shopping_keyword_by_device: (args) => { console.error("datalab_shopping_keyword_by_device called with args:", JSON.stringify(args, null, 2)); return handleShoppingKeywordByDeviceTrend(args); }, datalab_shopping_keyword_by_gender: (args) => { console.error("datalab_shopping_keyword_by_gender called with args:", JSON.stringify(args, null, 2)); return handleShoppingKeywordByGenderTrend(args); }, datalab_shopping_keyword_by_age: (args) => { console.error("datalab_shopping_keyword_by_age called with args:", JSON.stringify(args, null, 2)); return handleShoppingKeywordByAgeTrend(args); }, }; /** * 검색어 트렌드 핸들러 * 네이버 데이터랩 검색어 트렌드 분석 API 호출 * @param params DatalabSearch */ export async function handleSearchTrend(params: DatalabSearch) { return client.searchTrend(params); } /** * 쇼핑 카테고리 트렌드 핸들러 * 네이버 데이터랩 쇼핑 카테고리별 트렌드 분석 API 호출 * @param params DatalabShopping */ export async function handleShoppingCategoryTrend(params: DatalabShopping) { return client.datalabShoppingCategory(params); } /** * 쇼핑 기기별 트렌드 핸들러 * 네이버 데이터랩 쇼핑 기기별 트렌드 분석 API 호출 * @param params DatalabShoppingDevice */ export async function handleShoppingByDeviceTrend( params: DatalabShoppingDevice ) { return client.datalabShoppingByDevice({ startDate: params.startDate, endDate: params.endDate, timeUnit: params.timeUnit, category: params.category, device: params.device, }); } /** * 쇼핑 성별 트렌드 핸들러 * 네이버 데이터랩 쇼핑 성별 트렌드 분석 API 호출 * @param params DatalabShoppingGender */ export async function handleShoppingByGenderTrend( params: DatalabShoppingGender ) { return client.datalabShoppingByGender({ startDate: params.startDate, endDate: params.endDate, timeUnit: params.timeUnit, category: params.category, gender: params.gender, }); } /** * 쇼핑 연령별 트렌드 핸들러 * 네이버 데이터랩 쇼핑 연령별 트렌드 분석 API 호출 * @param params DatalabShoppingAge */ export async function handleShoppingByAgeTrend(params: DatalabShoppingAge) { return client.datalabShoppingByAge({ startDate: params.startDate, endDate: params.endDate, timeUnit: params.timeUnit, category: params.category, ages: params.ages, }); } /** * 쇼핑 키워드 트렌드 핸들러 (복수 키워드 그룹 지원) * 네이버 데이터랩 쇼핑 키워드 그룹 트렌드 분석 API 호출 * @param params DatalabShoppingKeywords */ export async function handleShoppingKeywordsTrend( params: DatalabShoppingKeywords ) { // 키워드 배열을 네이버 API에 맞는 형식으로 변환 return client.datalabShoppingKeywords({ startDate: params.startDate, endDate: params.endDate, timeUnit: params.timeUnit, category: params.category, keyword: params.keyword, }); } /** * 쇼핑 키워드 기기별 트렌드 핸들러 * 네이버 데이터랩 쇼핑 키워드 기기별 트렌드 분석 API 호출 * @param params DatalabShoppingKeywordDevice */ export async function handleShoppingKeywordByDeviceTrend( params: DatalabShoppingKeywordDevice ) { return client.datalabShoppingKeywordByDevice({ startDate: params.startDate, endDate: params.endDate, timeUnit: params.timeUnit, category: params.category, keyword: params.keyword, device: params.device, }); } /** * 쇼핑 키워드 성별 트렌드 핸들러 * 네이버 데이터랩 쇼핑 키워드 성별 트렌드 분석 API 호출 * @param params DatalabShoppingKeywordGender */ export async function handleShoppingKeywordByGenderTrend( params: DatalabShoppingKeywordGender ) { return client.datalabShoppingKeywordByGender({ startDate: params.startDate, endDate: params.endDate, timeUnit: params.timeUnit, category: params.category, keyword: params.keyword, gender: params.gender, }); } /** * 쇼핑 키워드 연령별 트렌드 핸들러 * 네이버 데이터랩 쇼핑 키워드 연령별 트렌드 분석 API 호출 * @param params DatalabShoppingKeywordAge */ export async function handleShoppingKeywordByAgeTrend( params: DatalabShoppingKeywordAge ) { return client.datalabShoppingKeywordByAge({ startDate: params.startDate, endDate: params.endDate, timeUnit: params.timeUnit, category: params.category, keyword: params.keyword, ages: params.ages, }); }

Implementation Reference

Latest Blog Posts

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/isnow890/naver-search-mcp'

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