# 표준국어대사전 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 도구 개발의 가능성을 확인할 수 있었고, 앞으로 더 많은 한국어 관련 도구들을 개발해보고 싶습니다.