@isnow890/naver-search-mcp 1.0.47 → 1.0.48

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/LICENSE CHANGED
File without changes
package/README.md CHANGED
@@ -3,11 +3,20 @@
3
3
  [![한국어](https://img.shields.io/badge/한국어-README-yellow)](README-ko.md)
4
4
 
5
5
  [![Trust Score](https://archestra.ai/mcp-catalog/api/badge/quality/isnow890/naver-search-mcp)](https://archestra.ai/mcp-catalog/isnow890__naver-search-mcp)
6
- [![smithery badge](https://smithery.ai/badge/@isnow890/naver-search-mcp)](https://smithery.ai/server/@isnow890/naver-search-mcp)
7
6
  [![MCP.so](https://img.shields.io/badge/MCP.so-Naver%20Search%20MCP-blue)](https://mcp.so/server/naver-search-mcp/isnow890)
8
7
 
9
8
  MCP server for Naver Search API and DataLab API integration, enabling comprehensive search across various Naver services and data trend analysis.
10
9
 
10
+ ## Available on ClawHub for OpenClaw
11
+
12
+ You can install this MCP server as an OpenClaw skill from ClawHub:
13
+
14
+ ```bash
15
+ openclaw skills install naver-search-mcp
16
+ ```
17
+
18
+ The ClawHub skill uses the published npm package internally and requires `NAVER_CLIENT_ID` and `NAVER_CLIENT_SECRET` in your OpenClaw environment.
19
+
11
20
  ## Quick Start: Use Without API Key
12
21
 
13
22
  You can use this server immediately without API keys through [Kakao PlayMCP](https://playmcp.kakao.com/mcp/154). Simply visit the link and start using it right away!
@@ -105,14 +114,22 @@ Add to your Claude Code settings:
105
114
  }
106
115
  ```
107
116
 
108
- ### Method 2: Smithery Installation
117
+ ### Method 2: ClawHub Installation for OpenClaw
109
118
 
110
- Install via Smithery CLI:
119
+ This MCP server can also be used from OpenClaw through the ClawHub skill wrapper. Install it with:
111
120
 
112
121
  ```bash
113
- npx -y @smithery/cli@latest install @isnow890/naver-search-mcp --client claude
122
+ openclaw skills install naver-search-mcp
114
123
  ```
115
124
 
125
+ The ClawHub skill uses the same published npm package internally:
126
+
127
+ ```bash
128
+ npx -y @isnow890/naver-search-mcp
129
+ ```
130
+
131
+ Make sure `NAVER_CLIENT_ID` and `NAVER_CLIENT_SECRET` are configured in your OpenClaw environment before using the skill.
132
+
116
133
  ### Method 3: Local Installation
117
134
 
118
135
  For local development or custom modifications:
@@ -234,6 +251,11 @@ MIT License
234
251
 
235
252
  ## Version History
236
253
 
254
+ ### 1.0.48 (2026-05-12)
255
+
256
+ - Fixed `find_category` data loading when the MCP server is launched by `npx` from a different working directory
257
+ - Category data is now resolved relative to the installed package before falling back to local development paths
258
+
237
259
  ### 1.0.47 (2025-01-03)
238
260
 
239
261
  - **Added "today" keyword support** for all DataLab date parameters - no need to call separate time tool
@@ -245,10 +267,10 @@ MIT License
245
267
 
246
268
  ### 1.0.45 (2025-09-28)
247
269
 
248
- - Resolved Smithery compatibility issues so you can use the latest features through Smithery
270
+ - Resolved platform compatibility issues for hosted MCP installations
249
271
  - Replaced the Excel export in category search with JSON for better compatibility
250
272
  - Restored the `search_webkr` tool for Korean web search
251
- - Fully compatible with Smithery platform installation
273
+ - Improved hosted platform installation compatibility
252
274
 
253
275
  ### 1.0.44 (2025-08-31)
254
276
 
@@ -267,7 +289,7 @@ MIT License
267
289
  ### 1.0.30 (2025-08-04)
268
290
 
269
291
  - MCP SDK upgraded to 1.17.1
270
- - Fixed compatibility issues with Smithery specification changes
292
+ - Fixed compatibility issues with hosted MCP platform specification changes
271
293
  - Added comprehensive DataLab shopping category code documentation
272
294
 
273
295
  ### 1.0.2 (2025-04-26)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,8 +1,10 @@
1
1
  // Import JSON data - bundle-safe approach
2
2
  import { existsSync, readFileSync } from 'fs';
3
- import { join } from 'path';
3
+ import { dirname, join } from 'path';
4
+ import { fileURLToPath } from 'url';
4
5
  // 메모리 누수 방지를 위한 지연 로딩 캐시
5
6
  let categoriesCache = null;
7
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
6
8
  // Load categories data with fallback paths for different environments
7
9
  function getCategoriesData() {
8
10
  // 캐시된 데이터가 있으면 반환 (메모리 효율성)
@@ -10,19 +12,21 @@ function getCategoriesData() {
10
12
  return categoriesCache;
11
13
  }
12
14
  try {
13
- // Try bundled data path first (dist/data)
14
- const bundledPath = join(process.cwd(), 'dist', 'data', 'categories.json');
15
- if (existsSync(bundledPath)) {
16
- categoriesCache = JSON.parse(readFileSync(bundledPath, 'utf8'));
17
- return categoriesCache;
18
- }
19
- // Fallback to source data path
20
- const sourcePath = join(process.cwd(), 'data', 'categories.json');
21
- if (existsSync(sourcePath)) {
22
- categoriesCache = JSON.parse(readFileSync(sourcePath, 'utf8'));
23
- return categoriesCache;
15
+ const candidatePaths = [
16
+ // Package-relative path. Works when launched by npx from any cwd.
17
+ join(moduleDir, '..', '..', 'data', 'categories.json'),
18
+ // Local development fallbacks.
19
+ join(process.cwd(), 'dist', 'data', 'categories.json'),
20
+ join(process.cwd(), 'data', 'categories.json'),
21
+ ];
22
+ for (const categoryPath of candidatePaths) {
23
+ if (existsSync(categoryPath)) {
24
+ const categoryJson = readFileSync(categoryPath, 'utf8').toString();
25
+ categoriesCache = JSON.parse(categoryJson);
26
+ return categoriesCache;
27
+ }
24
28
  }
25
- throw new Error('카테고리 데이터 파일을 찾을 수 없습니다');
29
+ throw new Error(`카테고리 데이터 파일을 찾을 수 없습니다. Tried: ${candidatePaths.join(', ')}`);
26
30
  }
27
31
  catch (error) {
28
32
  console.error('카테고리 데이터 로딩 실패:', error);
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/src/index.js CHANGED
@@ -9,7 +9,7 @@ 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, clearCategoriesCache } from "./handlers/category.handlers.js";
12
- // Configuration schema for Smithery
12
+ // Configuration schema for programmatic server creation and stdio startup
13
13
  export const configSchema = z.object({
14
14
  NAVER_CLIENT_ID: z.string().describe("Naver API Client ID"),
15
15
  NAVER_CLIENT_SECRET: z.string().describe("Naver API Client Secret"),
@@ -275,7 +275,7 @@ export function createNaverSearchServer({ config, }) {
275
275
  currentConfig = config;
276
276
  return server.server;
277
277
  }
278
- // Export default for Smithery compatibility
278
+ // Export the server factory for programmatic consumers
279
279
  export default createNaverSearchServer;
280
280
  function registerShutdownHandlers({ server, transport, }) {
281
281
  let shuttingDown = false;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isnow890/naver-search-mcp",
3
- "version": "1.0.47",
3
+ "version": "1.0.48",
4
4
  "description": "Naver Search MCP Server",
5
5
  "main": "dist/src/index.js",
6
6
  "module": "./src/index.ts",
@@ -20,7 +20,6 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@modelcontextprotocol/sdk": "1.17.1",
23
- "@smithery/sdk": "^1.6.6",
24
23
  "axios": "^1.6.7",
25
24
  "zod": "^3.23.0",
26
25
  "zod-to-json-schema": "^3.23.0",
@@ -1,26 +0,0 @@
1
- # 카테고리 데이터 폴더
2
-
3
- 이 폴더에 `categories.xlsx` 파일을 배치하세요.
4
-
5
- ## 파일 구조
6
-
7
- ```
8
- data/
9
- └── categories.xlsx
10
- ```
11
-
12
- ## Excel 파일 형식
13
-
14
- | 카테고리번호 | 대분류 | 중분류 | 소분류 | 세분류 |
15
- |-------------|--------|--------|--------|--------|
16
- | 50003307 | 가구/인테리어 | DIY자재/용품 | 가구부속품 | 가구다리 |
17
-
18
- - 첫 번째 행(헤더)은 자동으로 건너뜁니다
19
- - 카테고리번호는 필수입니다
20
- - 대분류는 필수, 나머지 분류는 선택사항입니다
21
-
22
- ## 사용법
23
-
24
- 1. `categories.xlsx` 파일을 이 폴더에 배치
25
- 2. MCP 서버 시작시 자동으로 로드됨
26
- 3. 파일 수정시 자동으로 캐시 갱신됨