UNPKG

koreandict-mcp-server

Version:

국립국어원 표준국어대사전 MCP 서버

59 lines (58 loc) 2.62 kB
import { config } from 'dotenv'; import { readFileSync } from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; // .env 파일 로드 config(); const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); /** * MCP 설정 파일에서 설정을 로드합니다. * 설정 파일은 사용자 홈 디렉토리의 .cursor/mcp.json 또는 현재 디렉토리의 mcp.json에 위치할 수 있습니다. */ function loadConfig() { let configData = { koreandict: { apiKey: process.env.KOREANDICT_API_KEY || '', baseUrl: 'https://stdict.korean.go.kr/api' } }; try { // 홈 디렉토리의 .cursor/mcp.json 파일 확인 const homeDir = process.env.HOME || process.env.USERPROFILE || ''; if (homeDir) { const mcpConfigPath = path.join(homeDir, '.cursor', 'mcp.json'); try { const data = JSON.parse(readFileSync(mcpConfigPath, 'utf8')); if (data['koreandict-server'] && data['koreandict-server'].env) { configData.koreandict.apiKey = data['koreandict-server'].env.KOREANDICT_API_KEY || configData.koreandict.apiKey; } } catch (err) { // 파일이 없거나 읽을 수 없는 경우 무시 } } // 현재 디렉토리의 mcp.json 파일 확인 (이 파일이 있으면 홈 디렉토리 설정보다 우선함) try { const localMcpPath = path.join(process.cwd(), 'mcp.json'); const data = JSON.parse(readFileSync(localMcpPath, 'utf8')); if (data['koreandict-server'] && data['koreandict-server'].env) { configData.koreandict.apiKey = data['koreandict-server'].env.KOREANDICT_API_KEY || configData.koreandict.apiKey; } } catch (err) { // 파일이 없거나 읽을 수 없는 경우 무시 } } catch (err) { console.error('설정을 로드하는 중 오류가 발생했습니다:', err); } // API 키가 설정되지 않은 경우 경고 표시 if (!configData.koreandict.apiKey) { console.warn('경고: KOREANDICT_API_KEY가 설정되지 않았습니다. API 요청이 실패할 수 있습니다.'); console.warn('mcp.json 파일에 {"koreandict-server": {"env": {"KOREANDICT_API_KEY": "your-key"}}} 형식으로 추가하거나,'); console.warn('.env 파일에 KOREANDICT_API_KEY=your-key를 추가하세요.'); } return configData; } export const appConfig = loadConfig();