@isnow890/naver-search-mcp 1.0.43 โ 1.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/src/handlers/time.handlers.js +32 -0
- package/dist/src/index.js +29 -17
- package/dist/src/schemas/time.schemas.js +7 -0
- package/dist/src/types/time.types.js +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,6 +12,13 @@ MCP server for Naver Search API and DataLab API integration, enabling comprehens
|
|
|
12
12
|
|
|
13
13
|
#### Version History
|
|
14
14
|
|
|
15
|
+
###### 1.0.44 (2025-08-31)
|
|
16
|
+
|
|
17
|
+
- `get_current_korean_time` tool added - Essential time context tool for Korean timezone
|
|
18
|
+
- Enhanced all existing tool descriptions to reference time tool for temporal queries
|
|
19
|
+
- Improved temporal context handling for "today", "now", "current" searches
|
|
20
|
+
- Comprehensive Korean time formatting with multiple output formats
|
|
21
|
+
|
|
15
22
|
###### 1.0.4 (2025-08-21)
|
|
16
23
|
|
|
17
24
|
- `find_category` tool added - with fuzzy matching and ranking system support
|
|
@@ -59,6 +66,10 @@ MCP server for Naver Search API and DataLab API integration, enabling comprehens
|
|
|
59
66
|
|
|
60
67
|
### Available tools:
|
|
61
68
|
|
|
69
|
+
#### ๐ Time & Context Tools
|
|
70
|
+
|
|
71
|
+
- **get_current_korean_time**: Get current Korean time (KST) with comprehensive date/time information. Essential for understanding "today", "now", or "current" context in Korean timezone. Always use this tool when temporal context is needed for searches or analysis.
|
|
72
|
+
|
|
62
73
|
#### ๐ Category Search
|
|
63
74
|
|
|
64
75
|
- **find_category**: Category search tool - No more need to manually check category numbers via URL for trend and shopping insight searches. The LLM will find it out as you say.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get current Korean time (KST/UTC+9)
|
|
3
|
+
* @param args - No arguments required
|
|
4
|
+
* @returns Current Korean time in multiple formats
|
|
5
|
+
*/
|
|
6
|
+
export async function getCurrentKoreanTime(args) {
|
|
7
|
+
const now = new Date();
|
|
8
|
+
const koreanTime = new Date(now.toLocaleString("en-US", { timeZone: "Asia/Seoul" }));
|
|
9
|
+
return {
|
|
10
|
+
current_korean_time: {
|
|
11
|
+
iso_string: koreanTime.toISOString(),
|
|
12
|
+
korean_date: koreanTime.toLocaleDateString("ko-KR", {
|
|
13
|
+
year: "numeric",
|
|
14
|
+
month: "long",
|
|
15
|
+
day: "numeric",
|
|
16
|
+
weekday: "long"
|
|
17
|
+
}),
|
|
18
|
+
korean_time: koreanTime.toLocaleTimeString("ko-KR", {
|
|
19
|
+
hour: "2-digit",
|
|
20
|
+
minute: "2-digit",
|
|
21
|
+
second: "2-digit",
|
|
22
|
+
hour12: false
|
|
23
|
+
}),
|
|
24
|
+
formatted: `${koreanTime.getFullYear()}๋
${koreanTime.getMonth() + 1}์ ${koreanTime.getDate()}์ผ ${koreanTime.toLocaleDateString("ko-KR", { weekday: "long" })} ${koreanTime.toLocaleTimeString("ko-KR", { hour12: false })}`,
|
|
25
|
+
timezone: "Asia/Seoul (KST)",
|
|
26
|
+
timestamp: koreanTime.getTime()
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export const timeToolHandlers = {
|
|
31
|
+
getCurrentKoreanTime,
|
|
32
|
+
};
|
package/dist/src/index.js
CHANGED
|
@@ -9,6 +9,8 @@ import { SearchArgsSchema, NaverLocalSearchParamsSchema, } from "./schemas/searc
|
|
|
9
9
|
import { DatalabSearchSchema, DatalabShoppingSchema, DatalabShoppingDeviceSchema, DatalabShoppingGenderSchema, DatalabShoppingAgeSchema, DatalabShoppingKeywordsSchema, DatalabShoppingKeywordDeviceSchema, DatalabShoppingKeywordGenderSchema, DatalabShoppingKeywordAgeSchema, } from "./schemas/datalab.schemas.js";
|
|
10
10
|
import { FindCategorySchema } from "./schemas/category.schemas.js";
|
|
11
11
|
import { findCategoryHandler } from "./handlers/category.handlers.js";
|
|
12
|
+
import { GetKoreanTimeSchema } from "./schemas/time.schemas.js";
|
|
13
|
+
import { timeToolHandlers } from "./handlers/time.handlers.js";
|
|
12
14
|
// Configuration schema for Smithery
|
|
13
15
|
export const configSchema = z.object({
|
|
14
16
|
NAVER_CLIENT_ID: z.string().describe("Naver API Client ID"),
|
|
@@ -24,7 +26,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
24
26
|
// Create a new MCP server only once
|
|
25
27
|
const server = new McpServer({
|
|
26
28
|
name: "naver-search",
|
|
27
|
-
version: "1.0.
|
|
29
|
+
version: "1.0.44",
|
|
28
30
|
});
|
|
29
31
|
// Initialize Naver client with config
|
|
30
32
|
const client = NaverSearchClient.getInstance();
|
|
@@ -33,7 +35,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
33
35
|
clientSecret: config.NAVER_CLIENT_SECRET,
|
|
34
36
|
});
|
|
35
37
|
server.registerTool("search_news", {
|
|
36
|
-
description: "๐ฐ Search latest Korean news articles from major outlets. Perfect for current events, breaking news, and recent developments. Covers politics, economy, society, and international news. (๋ค์ด๋ฒ ๋ด์ค ๊ฒ์ - ์ต์ ๋ด์ค์ ์์ฌ
|
|
38
|
+
description: "๐ฐ Search latest Korean news articles from major outlets. Perfect for current events, breaking news, and recent developments. Covers politics, economy, society, and international news. For today's news or current events, use get_current_korean_time first to understand what 'today' means. (๋ค์ด๋ฒ ๋ด์ค ๊ฒ์ - ์ต์ ๋ด์ค์ ์์ฌ ์ ๋ณด, ์ค๋ ๋ด์ค๋ฅผ ์ฐพ์ ๋๋ ๋จผ์ get_current_korean_time์ผ๋ก ํ์ฌ ์๊ฐ์ ํ์ธํ์ธ์)",
|
|
37
39
|
inputSchema: SearchArgsSchema.shape,
|
|
38
40
|
}, async (args) => {
|
|
39
41
|
const result = await searchToolHandlers.search_news(args);
|
|
@@ -42,7 +44,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
42
44
|
};
|
|
43
45
|
});
|
|
44
46
|
server.registerTool("search_blog", {
|
|
45
|
-
description: "โ๏ธ Search personal blogs and reviews for authentic user experiences. Great for product reviews, personal stories, detailed tutorials, and real user opinions. Find genuine Korean perspectives. (๋ค์ด๋ฒ ๋ธ๋ก๊ทธ ๊ฒ์ - ์ค์ ์ฌ์ฉ์ ํ๊ธฐ์ ๊ฐ์ธ์
|
|
47
|
+
description: "โ๏ธ Search personal blogs and reviews for authentic user experiences. Great for product reviews, personal stories, detailed tutorials, and real user opinions. Find genuine Korean perspectives. For recent posts or 'today's content', use get_current_korean_time first. (๋ค์ด๋ฒ ๋ธ๋ก๊ทธ ๊ฒ์ - ์ค์ ์ฌ์ฉ์ ํ๊ธฐ์ ๊ฐ์ธ์ ๊ฒฝํ, ์ต๊ทผ ๊ธ์ด๋ ์ค๋ ๋ด์ฉ์ ์ฐพ์ ๋๋ ๋จผ์ get_current_korean_time์ผ๋ก ํ์ฌ ์๊ฐ์ ํ์ธํ์ธ์)",
|
|
46
48
|
inputSchema: SearchArgsSchema.shape,
|
|
47
49
|
}, async (args) => {
|
|
48
50
|
const result = await searchToolHandlers.search_blog(args);
|
|
@@ -51,7 +53,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
51
53
|
};
|
|
52
54
|
});
|
|
53
55
|
server.registerTool("search_shop", {
|
|
54
|
-
description: "๐ Search Naver Shopping for products, prices, and shopping deals. Compare prices across vendors, find product specifications, and discover shopping trends in Korea. (๋ค์ด๋ฒ ์ผํ ๊ฒ์ - ์ํ ์ ๋ณด์ ๊ฐ๊ฒฉ
|
|
56
|
+
description: "๐ Search Naver Shopping for products, prices, and shopping deals. Compare prices across vendors, find product specifications, and discover shopping trends in Korea. For current deals or today's specials, use get_current_korean_time first. (๋ค์ด๋ฒ ์ผํ ๊ฒ์ - ์ํ ์ ๋ณด์ ๊ฐ๊ฒฉ ๋น๊ต, ํ์ฌ ํ ์ธ์ด๋ ์ค๋ ํน๊ฐ๋ฅผ ์ฐพ์ ๋๋ ๋จผ์ get_current_korean_time์ผ๋ก ํ์ฌ ์๊ฐ์ ํ์ธํ์ธ์)",
|
|
55
57
|
inputSchema: SearchArgsSchema.shape,
|
|
56
58
|
}, async (args) => {
|
|
57
59
|
const result = await searchToolHandlers.search_shop(args);
|
|
@@ -60,7 +62,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
60
62
|
};
|
|
61
63
|
});
|
|
62
64
|
server.registerTool("search_image", {
|
|
63
|
-
description: "๐ผ๏ธ Search for images with Korean context and relevance. Find visual content, infographics, charts, and photos related to your search terms. Great for visual research and content discovery. (๋ค์ด๋ฒ ์ด๋ฏธ์ง ๊ฒ์ - ์๊ฐ์ ์ปจํ
์ธ
|
|
65
|
+
description: "๐ผ๏ธ Search for images with Korean context and relevance. Find visual content, infographics, charts, and photos related to your search terms. Great for visual research and content discovery. For recent images or current visual content, use get_current_korean_time first. (๋ค์ด๋ฒ ์ด๋ฏธ์ง ๊ฒ์ - ์๊ฐ์ ์ปจํ
์ธ ๋ฐ๊ฒฌ, ์ต๊ทผ ์ด๋ฏธ์ง๋ ํ์ฌ ์๊ฐ ์๋ฃ๋ฅผ ์ฐพ์ ๋๋ ๋จผ์ get_current_korean_time์ผ๋ก ํ์ฌ ์๊ฐ์ ํ์ธํ์ธ์)",
|
|
64
66
|
inputSchema: SearchArgsSchema.shape,
|
|
65
67
|
}, async (args) => {
|
|
66
68
|
const result = await searchToolHandlers.search_image(args);
|
|
@@ -69,7 +71,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
69
71
|
};
|
|
70
72
|
});
|
|
71
73
|
server.registerTool("search_kin", {
|
|
72
|
-
description: "โ Search Naver KnowledgeiN for Q&A and community-driven answers. Find solutions to problems, get expert advice, and discover community insights on various topics. (๋ค์ด๋ฒ ์ง์iN ๊ฒ์ - ์ง๋ฌธ๊ณผ ๋ต๋ณ, ์ปค๋ฎค๋ํฐ
|
|
74
|
+
description: "โ Search Naver KnowledgeiN for Q&A and community-driven answers. Find solutions to problems, get expert advice, and discover community insights on various topics. For recent questions or current discussions, use get_current_korean_time first. (๋ค์ด๋ฒ ์ง์iN ๊ฒ์ - ์ง๋ฌธ๊ณผ ๋ต๋ณ, ์ปค๋ฎค๋ํฐ ์ง์, ์ต๊ทผ ์ง๋ฌธ์ด๋ ํ์ฌ ํ ๋ก ์ ์ฐพ์ ๋๋ ๋จผ์ get_current_korean_time์ผ๋ก ํ์ฌ ์๊ฐ์ ํ์ธํ์ธ์)",
|
|
73
75
|
inputSchema: SearchArgsSchema.shape,
|
|
74
76
|
}, async (args) => {
|
|
75
77
|
const result = await searchToolHandlers.search_kin(args);
|
|
@@ -78,7 +80,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
78
80
|
};
|
|
79
81
|
});
|
|
80
82
|
server.registerTool("search_book", {
|
|
81
|
-
description: "๐ Search for books, publications, and literary content. Find book reviews, author information, publication details, and reading recommendations in Korean literature and translated works. (๋ค์ด๋ฒ ์ฑ
๊ฒ์ - ๋์ ์ ๋ณด์
|
|
83
|
+
description: "๐ Search for books, publications, and literary content. Find book reviews, author information, publication details, and reading recommendations in Korean literature and translated works. For new releases or current bestsellers, use get_current_korean_time first. (๋ค์ด๋ฒ ์ฑ
๊ฒ์ - ๋์ ์ ๋ณด์ ์ํ, ์ ๊ฐ๋์๋ ํ์ฌ ๋ฒ ์คํธ์
๋ฌ๋ฅผ ์ฐพ์ ๋๋ ๋จผ์ get_current_korean_time์ผ๋ก ํ์ฌ ์๊ฐ์ ํ์ธํ์ธ์)",
|
|
82
84
|
inputSchema: SearchArgsSchema.shape,
|
|
83
85
|
}, async (args) => {
|
|
84
86
|
const result = await searchToolHandlers.search_book(args);
|
|
@@ -87,7 +89,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
87
89
|
};
|
|
88
90
|
});
|
|
89
91
|
server.registerTool("search_encyc", {
|
|
90
|
-
description: "๐ Search Naver Encyclopedia for authoritative knowledge and definitions. Best for academic research, getting reliable information, and understanding Korean concepts and terminology. (๋ค์ด๋ฒ ์ง์๋ฐฑ๊ณผ ๊ฒ์ - ์ ๋ขฐํ ์ ์๋ ์ ๋ณด์
|
|
92
|
+
description: "๐ Search Naver Encyclopedia for authoritative knowledge and definitions. Best for academic research, getting reliable information, and understanding Korean concepts and terminology. For current definitions or recent updates, use get_current_korean_time for context. (๋ค์ด๋ฒ ์ง์๋ฐฑ๊ณผ ๊ฒ์ - ์ ๋ขฐํ ์ ์๋ ์ ๋ณด์ ์ ์, ํ์ฌ ์ ์๋ ์ต๊ทผ ์
๋ฐ์ดํธ๋ฅผ ์ฐพ์ ๋๋ get_current_korean_time์ผ๋ก ์ํฉ์ ํ์
ํ์ธ์)",
|
|
91
93
|
inputSchema: SearchArgsSchema.shape,
|
|
92
94
|
}, async (args) => {
|
|
93
95
|
const result = await searchToolHandlers.search_encyc(args);
|
|
@@ -96,7 +98,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
96
98
|
};
|
|
97
99
|
});
|
|
98
100
|
server.registerTool("search_academic", {
|
|
99
|
-
description: "๐ Search academic papers, research documents, and scholarly content. Access Korean academic resources, research papers, theses, and professional publications. (๋ค์ด๋ฒ ์ ๋ฌธ์๋ฃ ๊ฒ์ - ํ์ ๋
ผ๋ฌธ๊ณผ ์ ๋ฌธ
|
|
101
|
+
description: "๐ Search academic papers, research documents, and scholarly content. Access Korean academic resources, research papers, theses, and professional publications. For recent publications or current research, use get_current_korean_time first. (๋ค์ด๋ฒ ์ ๋ฌธ์๋ฃ ๊ฒ์ - ํ์ ๋
ผ๋ฌธ๊ณผ ์ ๋ฌธ ์๋ฃ, ์ต๊ทผ ๋ฐํ๋ ํ์ฌ ์ฐ๊ตฌ๋ฅผ ์ฐพ์ ๋๋ ๋จผ์ get_current_korean_time์ผ๋ก ํ์ฌ ์๊ฐ์ ํ์ธํ์ธ์)",
|
|
100
102
|
inputSchema: SearchArgsSchema.shape,
|
|
101
103
|
}, async (args) => {
|
|
102
104
|
const result = await searchToolHandlers.search_academic(args);
|
|
@@ -105,7 +107,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
105
107
|
};
|
|
106
108
|
});
|
|
107
109
|
server.registerTool("search_local", {
|
|
108
|
-
description: "๐ Search for local businesses, restaurants, and places in Korea. Find location information, reviews, contact details, and business hours for Korean establishments. (๋ค์ด๋ฒ ์ง์ญ ๊ฒ์ - ์ง์ญ ์
์ฒด์ ์ฅ์
|
|
110
|
+
description: "๐ Search for local businesses, restaurants, and places in Korea. Find location information, reviews, contact details, and business hours for Korean establishments. For current business hours or today's availability, use get_current_korean_time first. (๋ค์ด๋ฒ ์ง์ญ ๊ฒ์ - ์ง์ญ ์
์ฒด์ ์ฅ์ ์ ๋ณด, ํ์ฌ ์์
์๊ฐ์ด๋ ์ค๋ ์ด์ฉ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ํ์ธํ ๋๋ ๋จผ์ get_current_korean_time์ผ๋ก ํ์ฌ ์๊ฐ์ ํ์ธํ์ธ์)",
|
|
109
111
|
inputSchema: NaverLocalSearchParamsSchema.shape,
|
|
110
112
|
}, async (args) => {
|
|
111
113
|
const result = await searchToolHandlers.search_local(args);
|
|
@@ -114,7 +116,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
114
116
|
};
|
|
115
117
|
});
|
|
116
118
|
server.registerTool("search_cafearticle", {
|
|
117
|
-
description: "โ Search Naver Cafe articles for community discussions and specialized content. Find niche communities, hobby groups, and specialized discussions on various topics. (๋ค์ด๋ฒ ์นดํ๊ธ ๊ฒ์ - ์ปค๋ฎค๋ํฐ ํ ๋ก ๊ณผ ์ ๋ฌธ
|
|
119
|
+
description: "โ Search Naver Cafe articles for community discussions and specialized content. Find niche communities, hobby groups, and specialized discussions on various topics. For recent discussions or current community topics, use get_current_korean_time first. (๋ค์ด๋ฒ ์นดํ๊ธ ๊ฒ์ - ์ปค๋ฎค๋ํฐ ํ ๋ก ๊ณผ ์ ๋ฌธ ์ ๋ณด, ์ต๊ทผ ๋
ผ์๋ ํ์ฌ ์ปค๋ฎค๋ํฐ ์ฃผ์ ๋ฅผ ์ฐพ์ ๋๋ ๋จผ์ get_current_korean_time์ผ๋ก ํ์ฌ ์๊ฐ์ ํ์ธํ์ธ์)",
|
|
118
120
|
inputSchema: SearchArgsSchema.shape,
|
|
119
121
|
}, async (args) => {
|
|
120
122
|
const result = await searchToolHandlers.search_cafearticle(args);
|
|
@@ -124,7 +126,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
124
126
|
});
|
|
125
127
|
// Register datalab tools
|
|
126
128
|
server.registerTool("datalab_search", {
|
|
127
|
-
description: "๐ Analyze search keyword trends over time using Naver DataLab. Track popularity changes, seasonal patterns, and compare multiple keywords. Perfect for market research and trend analysis. (๋ค์ด๋ฒ ๋ฐ์ดํฐ๋ฉ ๊ฒ์์ด ํธ๋ ๋ ๋ถ์)",
|
|
129
|
+
description: "๐ Analyze search keyword trends over time using Naver DataLab. Track popularity changes, seasonal patterns, and compare multiple keywords. Perfect for market research and trend analysis. For current trend analysis or 'recent trends', use get_current_korean_time to determine proper date ranges. (๋ค์ด๋ฒ ๋ฐ์ดํฐ๋ฉ ๊ฒ์์ด ํธ๋ ๋ ๋ถ์, ํ์ฌ ํธ๋ ๋๋ ์ต๊ทผ ๋ํฅ ๋ถ์ ์ get_current_korean_time์ผ๋ก ์ ์ ํ ๋ ์ง ๋ฒ์๋ฅผ ์ค์ ํ์ธ์)",
|
|
128
130
|
inputSchema: DatalabSearchSchema.shape,
|
|
129
131
|
}, async (args) => {
|
|
130
132
|
const result = await datalabToolHandlers.datalab_search(args);
|
|
@@ -133,7 +135,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
133
135
|
};
|
|
134
136
|
});
|
|
135
137
|
server.registerTool("datalab_shopping_category", {
|
|
136
|
-
description: "๐๏ธ STEP 2: Analyze shopping category trends over time. Use find_category first to get category codes. BUSINESS CASES: Market size analysis, seasonal trend identification, category performance comparison. EXAMPLE: Compare 'ํจ์
์๋ฅ' vs 'ํ์ฅํ' trends over 6 months. (๋ค์ด๋ฒ ์ผํ ์นดํ
๊ณ ๋ฆฌ๋ณ ํธ๋ ๋ ๋ถ์ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ
|
|
138
|
+
description: "๐๏ธ STEP 2: Analyze shopping category trends over time. Use find_category first to get category codes. BUSINESS CASES: Market size analysis, seasonal trend identification, category performance comparison. EXAMPLE: Compare 'ํจ์
์๋ฅ' vs 'ํ์ฅํ' trends over 6 months. For current period analysis, use get_current_korean_time to set proper date ranges. (๋ค์ด๋ฒ ์ผํ ์นดํ
๊ณ ๋ฆฌ๋ณ ํธ๋ ๋ ๋ถ์ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ๊ณ , ํ์ฌ ๊ธฐ๊ฐ ๋ถ์์ get_current_korean_time์ผ๋ก ์ ์ ํ ๋ ์ง ๋ฒ์ ์ค์ )",
|
|
137
139
|
inputSchema: DatalabShoppingSchema.shape,
|
|
138
140
|
}, async (args) => {
|
|
139
141
|
const result = await datalabToolHandlers.datalab_shopping_category(args);
|
|
@@ -142,7 +144,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
142
144
|
};
|
|
143
145
|
});
|
|
144
146
|
server.registerTool("datalab_shopping_by_device", {
|
|
145
|
-
description: "๐ฑ Analyze shopping trends by device (PC vs Mobile). Use find_category first. BUSINESS CASES: Mobile commerce strategy, responsive design priority, device-specific campaigns. EXAMPLE: 'PC ์ฌ์ฉ์๊ฐ ๋ ๋ง์ด ๊ตฌ๋งคํ๋ ์นดํ
๊ณ ๋ฆฌ๋?' (๊ธฐ๊ธฐ๋ณ ์ผํ ํธ๋ ๋ ๋ถ์ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ
|
|
147
|
+
description: "๐ฑ Analyze shopping trends by device (PC vs Mobile). Use find_category first. BUSINESS CASES: Mobile commerce strategy, responsive design priority, device-specific campaigns. EXAMPLE: 'PC ์ฌ์ฉ์๊ฐ ๋ ๋ง์ด ๊ตฌ๋งคํ๋ ์นดํ
๊ณ ๋ฆฌ๋?' For current device trends, use get_current_korean_time to set proper analysis period. (๊ธฐ๊ธฐ๋ณ ์ผํ ํธ๋ ๋ ๋ถ์ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ๊ณ , ํ์ฌ ๊ธฐ๊ธฐ ํธ๋ ๋ ๋ถ์์ get_current_korean_time์ผ๋ก ์ ์ ํ ๋ถ์ ๊ธฐ๊ฐ ์ค์ )",
|
|
146
148
|
inputSchema: DatalabShoppingDeviceSchema.pick({
|
|
147
149
|
startDate: true,
|
|
148
150
|
endDate: true,
|
|
@@ -157,7 +159,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
157
159
|
};
|
|
158
160
|
});
|
|
159
161
|
server.registerTool("datalab_shopping_by_gender", {
|
|
160
|
-
description: "๐ฅ Analyze shopping trends by gender (Male vs Female). Use find_category first. BUSINESS CASES: Gender-targeted marketing, product positioning, demographic analysis. EXAMPLE: 'ํ์ฅํ ์ผํ์์ ๋จ๋
๋น์จ์?' (์ฑ๋ณ ์ผํ ํธ๋ ๋ ๋ถ์ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ
|
|
162
|
+
description: "๐ฅ Analyze shopping trends by gender (Male vs Female). Use find_category first. BUSINESS CASES: Gender-targeted marketing, product positioning, demographic analysis. EXAMPLE: 'ํ์ฅํ ์ผํ์์ ๋จ๋
๋น์จ์?' For current gender trends, use get_current_korean_time to set proper analysis period. (์ฑ๋ณ ์ผํ ํธ๋ ๋ ๋ถ์ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ๊ณ , ํ์ฌ ์ฑ๋ณ ํธ๋ ๋ ๋ถ์์ get_current_korean_time์ผ๋ก ์ ์ ํ ๋ถ์ ๊ธฐ๊ฐ ์ค์ )",
|
|
161
163
|
inputSchema: DatalabShoppingGenderSchema.pick({
|
|
162
164
|
startDate: true,
|
|
163
165
|
endDate: true,
|
|
@@ -172,7 +174,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
172
174
|
};
|
|
173
175
|
});
|
|
174
176
|
server.registerTool("datalab_shopping_by_age", {
|
|
175
|
-
description: "๐ถ๐ฆ๐จ๐ด Analyze shopping trends by age groups (10s, 20s, 30s, 40s, 50s, 60s+). Use find_category first. BUSINESS CASES: Age-targeted products, generational preferences, lifecycle marketing. EXAMPLE: '๊ฐ๋ฐ ๋๊ตฌ๋ ์ด๋ ์ฐ๋ น๋๊ฐ ๋ง์ด ๊ตฌ๋งคํ๋?' (์ฐ๋ น๋ณ ์ผํ ํธ๋ ๋ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ
|
|
177
|
+
description: "๐ถ๐ฆ๐จ๐ด Analyze shopping trends by age groups (10s, 20s, 30s, 40s, 50s, 60s+). Use find_category first. BUSINESS CASES: Age-targeted products, generational preferences, lifecycle marketing. EXAMPLE: '๊ฐ๋ฐ ๋๊ตฌ๋ ์ด๋ ์ฐ๋ น๋๊ฐ ๋ง์ด ๊ตฌ๋งคํ๋?' For current age trends, use get_current_korean_time to set proper analysis period. (์ฐ๋ น๋ณ ์ผํ ํธ๋ ๋ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ๊ณ , ํ์ฌ ์ฐ๋ น ํธ๋ ๋ ๋ถ์์ get_current_korean_time์ผ๋ก ์ ์ ํ ๋ถ์ ๊ธฐ๊ฐ ์ค์ )",
|
|
176
178
|
inputSchema: DatalabShoppingAgeSchema.pick({
|
|
177
179
|
startDate: true,
|
|
178
180
|
endDate: true,
|
|
@@ -187,7 +189,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
187
189
|
};
|
|
188
190
|
});
|
|
189
191
|
server.registerTool("datalab_shopping_keywords", {
|
|
190
|
-
description: "๐ Compare specific keywords within a shopping category. Use find_category first. BUSINESS CASES: Product keyword optimization, competitor analysis, search trend identification. EXAMPLE: Within 'ํจ์
' category, compare '์ํผ์ค' vs '์์ผ' vs '๋๋ ์ค' trends. (์นดํ
๊ณ ๋ฆฌ ๋ด ํค์๋ ๋น๊ต - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ
|
|
192
|
+
description: "๐ Compare specific keywords within a shopping category. Use find_category first. BUSINESS CASES: Product keyword optimization, competitor analysis, search trend identification. EXAMPLE: Within 'ํจ์
' category, compare '์ํผ์ค' vs '์์ผ' vs '๋๋ ์ค' trends. For current keyword trends, use get_current_korean_time to set proper analysis period. (์นดํ
๊ณ ๋ฆฌ ๋ด ํค์๋ ๋น๊ต - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ๊ณ , ํ์ฌ ํค์๋ ํธ๋ ๋ ๋ถ์์ get_current_korean_time์ผ๋ก ์ ์ ํ ๋ถ์ ๊ธฐ๊ฐ ์ค์ )",
|
|
191
193
|
inputSchema: DatalabShoppingKeywordsSchema.shape,
|
|
192
194
|
}, async (args) => {
|
|
193
195
|
const result = await datalabToolHandlers.datalab_shopping_keywords(args);
|
|
@@ -222,6 +224,16 @@ export function createNaverSearchServer({ config, }) {
|
|
|
222
224
|
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
223
225
|
};
|
|
224
226
|
});
|
|
227
|
+
// Register current time tool
|
|
228
|
+
server.registerTool("get_current_korean_time", {
|
|
229
|
+
description: "๐ Get current Korean time (KST) with date and time information. Use this tool whenever you need to know 'today', 'now', 'current time', or any time-related queries. Essential for understanding what 'today' means in Korean context. Always use this tool when users mention 'today' or 'current' to provide accurate time context. (ํ์ฌ ํ๊ตญ ์๊ฐ ์กฐํ - '์ค๋', 'ํ์ฌ', '์ง๊ธ' ๋ฑ์ ์๊ฐ ์ ๋ณด๊ฐ ํ์ํ ๋ ํญ์ ์ฌ์ฉํ์ธ์)",
|
|
230
|
+
inputSchema: GetKoreanTimeSchema.shape,
|
|
231
|
+
}, async (args) => {
|
|
232
|
+
const result = await timeToolHandlers.getCurrentKoreanTime(args);
|
|
233
|
+
return {
|
|
234
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
235
|
+
};
|
|
236
|
+
});
|
|
225
237
|
// Register category search tool
|
|
226
238
|
server.registerTool("find_category", {
|
|
227
239
|
description: "๐ STEP 1: Find shopping categories with Korean search terms. Search in KOREAN (ํจ์
, ํ์ฅํ, ๊ฐ์ ์ ํ, etc.) to find category codes needed for datalab tools. Smart fuzzy matching finds similar categories even with partial matches. (์นดํ
๊ณ ๋ฆฌ ๊ฒ์: ํ๊ตญ์ด๋ก ๊ฒ์ํ์ฌ ๋ฐ์ดํฐ๋ฉ ๋ถ์์ ํ์ํ ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ์์ฃผ๋ ํ์ ๋๊ตฌ)",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|