koreandict-mcp-server
Version:
국립국어원 표준국어대사전 MCP 서버
59 lines (58 loc) • 2.62 kB
JavaScript
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();