# 표준국어대사전 Claude Desktop 확장 프로그램 개발 사례
## 소개
시도하고자 했던 것과 그 이유를 알려주세요.
표준국어대사전 오픈 API를 활용한 Claude Desktop 확장 프로그램을 개발하고자 했습니다.
Claude Desktop의 새로운 Desktop Extensions 기능 을 활용하여 한국어 학습, 연구, 번역 작업에 유용한 도구를 만들고 싶었습니다. 특히 국립국어원의 공식 표준국어대사전 API를 연동하여 정확하고 신뢰할 수 있는 한국어 사전 정보를 Claude와의 대화에서 바로 활용할 수 있도록 하는 것이 목표였습니다.
기존에는 한국어 단어의 정확한 뜻이나 어원을 찾기 위해 별도의 웹사이트를 방문해야 했지만, 이 확장 프로그램을 통해 Claude Desktop 내에서 바로 검색하고 활용할 수 있게 되어 작업 효율성을 크게 향상시킬 수 있을 것으로 기대했습니다.
## 진행 방법
어떤 도구를 사용했고, 어떻게 활용하셨나요?
### 사용한 도구들
- Claude Code: 전체 프로젝트 구조 설계 및 코드 작성
- 표준국어대사전 오픈 API: 국립국어원 제공 공식 API
- MCP (Model Context Protocol): Claude Desktop과의 통신 프로토콜
- DXT (Desktop Extensions): Anthropic의 확장 프로그램 패키징 도구
- Node.js: 서버 런타임 환경
- GitHub: 소스 코드 및 배포 파일 관리
### 핵심 프롬프트
```
표준국어대사전 오픈 API를 사용하여 사전 정보를 가져올 수 있는 Claude Desktop 확장 프로그램을 만들어주세요. 먼저 현재 작업 디렉토리를 확인하고 필요한 파일들을 생성하시오.
- 오픈 API 요청 URL
https://stdict.korean.go.kr/api/search.do
- 오픈 API 요청 URL
https://stdict.korean.go.kr/api/view.do
```
### 개발 과정
1. 프로젝트 구조 설계
- manifest.json: 확장 프로그램 메타데이터 및 설정
- server/index.js: MCP 서버 구현
- package.json: Node.js 의존성 정의
- README.md: 사용법 가이드
2. MCP 서버 구현
```javascript
class KoreanDictionaryServer {
constructor() {
this.server = new Server({
name: 'korean-dictionary-server',
version: '1.0.0',
}, {
capabilities: { tools: {} }
});
this.apiKey = process.env.API_KEY;
this.setupToolHandlers();
}
setupToolHandlers() {
// search_dictionary 도구 구현
// get_word_details 도구 구현
}
}
```
3. API 응답 구조 최적화
실제 API 응답 예시를 받아 sense 객체 구조에 맞게 데이터 파싱 로직을 개선했습니다:
```javascript
// sense 객체에서 definition 추출
const definition = item.sense?.definition || item.definition || '정의 없음';
resultText += 📝 ${definition}\n;
if (item.sense?.type) {
resultText += 🏷️ 유형: ${item.sense.type}\n;
}
```
4. DXT 패키징 및 배포
```bash
npm install -g @anthropic-ai/dxt
dxt pack
```
## 결과와 배운 점
### 배운 점과 나만의 꿀팁
1. Desktop Extensions의 강력함: Claude Desktop의 확장 프로그램 시스템이 생각보다 훨씬 강력하고 사용하기 쉬웠습니다. 특히 사용자 설정(API 키 등)을 안전하게 관리하는 기능이 인상적이었습니다.
2. API 응답 구조 분석의 중요성: 실제 API 응답과 문서의 차이가 있을 수 있으므로, 실제 응답 데이터를 먼저 확인하고 파싱 로직을 작성하는 것이 중요합니다.
3. MCP 프로토콜의 활용: MCP를 통해 Claude와 외부 서비스를 연결하는 것이 매우 직관적이고 효과적이었습니다.
### 시행착오
1. 호환성 문제: 초기에 Claude Desktop 버전 요구사항으로 인해 설치가 실패했습니다. manifest.json에서 claude_desktop 버전 요구사항을 제거하여 해결했습니다.
2. API 응답 구조 오해: 처음에는 API 문서만 보고 파싱 로직을 작성했는데, 실제 응답에서는 sense 객체 안에 definition이 있어서 수정이 필요했습니다.
3. Node.js 버전 호환성: 초기 설정에서 Node.js 16+ 요구사항이 있었는데, 더 넓은 호환성을 위해 14+로 완화했습니다.
### 최종 결과
- GitHub 저장소: [https://github.com/seoh0711/dxt_korean_dic](https://github.com/seoh0711/dxt_korean_dic)
- DXT 파일: korean-dictionary-1.0.0.dxt (1.1MB)
- 지원 기능: 단어 검색, 상세 조회, 페이징, 다양한 검색 유형
### 도움이 필요한 부분
현재는 기본적인 검색 기능만 구현되어 있어서, 향후 다음과 같은 기능들을 추가하고 싶습니다:
- 발음 정보 TTS 연동
- 유의어/반의어 검색
- 검색 히스토리 기능
### 앞으로의 계획
1. 기능 확장: 한자어 검색, 속담/관용구 검색 등 추가 기능 개발
2. 다국어 지원: 한영/영한 사전 API 연동
3. 사용자 경험 개선: 검색 결과 포맷팅 및 시각화 개선
4. 커뮤니티 기여: 다른 개발자들이 쉽게 확장할 수 있도록 코드 구조 개선
이 프로젝트를 통해 Claude Desktop의 확장성과 한국어 NLP 도구 개발의 가능성을 확인할 수 있었고, 앞으로 더 많은 한국어 관련 도구들을 개발해보고 싶습니다.