UNPKG

koreandict-mcp-server

Version:

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

62 lines (61 loc) 2.07 kB
import axios from 'axios'; import { appConfig } from '../config.js'; /** * 국립국어원 API와 통신하는 서비스 클래스 */ export class DictionaryService { constructor() { this.baseUrl = appConfig.koreandict.baseUrl; this.apiKey = appConfig.koreandict.apiKey; } /** * 사전 검색 API를 호출합니다. * @param query 검색어 * @param options 검색 옵션 * @returns 검색 결과 */ async searchDictionary(query, options = {}) { const params = { key: this.apiKey, q: query, req_type: 'json', ...options }; try { const response = await axios.get(`${this.baseUrl}/search.do`, { params }); return response.data; } catch (error) { if (axios.isAxiosError(error) && error.response) { const errorData = error.response.data; throw new Error(`API 오류: ${errorData.message || error.message}`); } throw new Error(`API 요청 중 오류 발생: ${error instanceof Error ? error.message : '알 수 없는 오류'}`); } } /** * 사전 내용 API를 호출합니다. * @param query 검색어 * @param method 검색 방식 * @returns 사전 내용 */ async getDictionaryContent(query, method = 'word_info') { const params = { key: this.apiKey, q: query, method, req_type: 'json' }; try { const response = await axios.get(`${this.baseUrl}/view.do`, { params }); return response.data; } catch (error) { if (axios.isAxiosError(error) && error.response) { const errorData = error.response.data; throw new Error(`API 오류: ${errorData.message || error.message}`); } throw new Error(`API 요청 중 오류 발생: ${error instanceof Error ? error.message : '알 수 없는 오류'}`); } } }