koreandict-mcp-server
Version:
국립국어원 표준국어대사전 MCP 서버
62 lines (61 loc) • 2.07 kB
JavaScript
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 : '알 수 없는 오류'}`);
}
}
}