wikidocs-mcp
by ychoi-kr
README.md
# 위키독스 MCP 서버
AI 에이전트가 위키독스(Wikidocs) 책과 블로그를 읽고, 편집하고, 관리할 수 있도록 하는 **Model Context Protocol (MCP)** 서버입니다.
[](https://python.org)
[](https://modelcontextprotocol.io)
[](LICENSE)
## ✨ 주요 기능
### 📚 책 관리
- **스마트 캐싱**: 대량 페이지 데이터를 로컬에 캐시하여 성능 최적화
- **키워드 검색**: 책 내용에서 관련도 기반 페이지 검색
- **구조 탐색**: 책의 목차 구조를 요약하여 전체 구조 파악
- **페이지 CRUD**: 페이지 읽기, 생성, 수정 기능
### 📝 블로그 관리
- 블로그 포스트 목록 조회 및 내용 읽기
- 새 포스트 생성 및 기존 포스트 수정
- 태그 관리 및 공개/비공개 설정
### 🖼️ 이미지 업로드
- 페이지 및 블로그용 이미지 업로드 지원
## 🚀 빠른 시작
### 1. 설치
```bash
git clone https://github.com/ychoi-kr/wikidocs-mcp.git
cd wikidocs-mcp
pip install -r requirements.txt
```
### 2. 환경 설정
`.env` 파일을 생성하고 위키독스 API 토큰을 설정합니다.
```bash
WIKIDOCS_API_TOKEN="여기에_발급받은_API_토큰을_입력하세요"
```
> 💡 **API 토큰 발급**: [위키독스 로그인 > 계정설정 > API 토큰](https://wikidocs.net/profile/api/)에서 토큰을 확인할 수 있습니다.
### 3. Claude Desktop 연결
Claude Desktop 설정 파일(`claude_desktop_config.json`)에 서버를 등록합니다:
```json
{
"mcpServers": {
"wikidocs": {
"command": "/opt/anaconda3/bin/python3",
"args": ["/Users/your-username/wikidocs-mcp/main.py"]
}
}
}
```
> ⚠️ **중요**: 경로를 본인 환경에 맞게 수정하세요.
> - Python 경로 확인: `which python3`
> - 프로젝트 경로 확인: `pwd`
### 4. 테스트 실행
Claude Desktop을 재시작하고 다음과 같이 테스트해 보세요.
```
내 책 목록을 보여줘
```
MCP 클라이언트가 인자 없이 툴을 호출하는 문제를 진단하려면 CLI에서 직접
다음을 실행해 보세요.
```bash
claude mcp call wikidocs-mcp get_book_structure --json '{"book_id": 12345, "max_depth": 3}'
```
## 🛠️ 도구 목록
### 📖 책 관리 도구
| 도구명 | 설명 | 사용 예시 |
|--------|------|-----------|
| `list_my_books` | 내가 작성한 책 목록 조회 | "내 책 목록을 보여줘" |
| `get_book_info` | 책 정보 조회 및 캐시 저장 | "책 ID 123의 정보를 가져와줘" |
| `search_book_pages` | 키워드로 페이지 검색 | "MCP 관련 내용을 찾아줘" |
| `get_book_structure` | 책 목차 구조 요약 | "이 책의 구조를 보여줘" |
| `get_page` | 특정 페이지 내용 조회 | "페이지 456의 내용을 보여줘" |
| `create_page` | 새 페이지 생성 | "새로운 챕터를 추가해줘" |
| `update_page` | 페이지 내용 수정 | "이 페이지를 수정해줘" |
| `renumber_pages` | 페이지 번호 일괄 변경 | "5.2절부터 번호를 하나씩 뒤로 밀어줘" |
| `upload_page_image` | 페이지용 이미지 업로드 | "이미지를 업로드해줘" |
| `get_cache_status` | 캐시 상태 확인 | "캐시 상태를 확인해줘" |
### 📝 블로그 관리 도구
| 도구명 | 설명 | 사용 예시 |
|--------|------|-----------|
| `get_blog_profile` | 블로그 프로필 정보 조회 | "내 블로그 정보를 보여줘" |
| `get_blog_list` | 블로그 포스트 목록 조회 | "최근 블로그 포스트를 보여줘" |
| `get_blog_post` | 특정 포스트 내용 조회 | "포스트 789의 내용을 보여줘" |
| `create_blog_post` | 새 포스트 생성 | "새 블로그 포스트를 작성해줘" |
| `update_blog_post` | 포스트 내용 수정 | "이 포스트를 수정해줘" |
| `upload_blog_image` | 블로그용 이미지 업로드 | "블로그 이미지를 업로드해줘" |
## 💡 사용법 예시
### 기본 워크플로
```
1. 책 목록 확인
→ "내 위키독스 책 목록을 보여줘"
2. 특정 책 로드
→ "책 ID 99999의 정보를 가져와줘"
(대량 페이지 데이터가 로컬 캐시에 저장됨)
3. 키워드 검색
→ "MCP 관련 내용을 검색해줘"
(관련도 높은 페이지들만 반환)
4. 상세 내용 조회
→ "페이지 99999999의 전체 내용을 보여줘"
5. 내용 수정
→ "이 페이지에 새로운 예제를 추가해줘"
```
### 고급 활용 예시
```
# 책 전체 분석
"MCP 가이드 책의 구조를 분석하고, 부족한 부분이 있으면 알려줘"
# 콘텐츠 최적화
"이 책에서 'MCP'라는 키워드가 나오는 모든 페이지를 찾아서 설명의 일관성을 확인해줘"
# 자동 블로그 포스팅
"책의 3장 내용을 요약해서 블로그 포스트로 작성해줘"
```
## 🏗️ 아키텍처
### 프로젝트 구조
```
wikidocs-mcp/
├── main.py # 메인 서버 진입점
├── book_tools.py # 책 관련 도구들
├── blog_tools.py # 블로그 관련 도구들
├── utils.py # 공통 유틸리티 함수
├── search_utils.py # 캐시 및 검색 기능
├── .env # 환경 변수 (API 토큰)
└── requirements.txt # 패키지 의존성
```
### 캐시 시스템
- **위치**: `~/.wikidocs_mcp_cache/`
- **구조**:
- `book_{id}.json`: 책 데이터
- `book_{id}_meta.json`: 캐시 메타데이터
- **유효기간**: 24시간 (설정 가능)
- **자동 무효화**: 페이지 생성/수정 시
### 검색 알고리듬
1. **텍스트 정규화**: HTML 태그 제거, 특수문자 처리
2. **관련도 점수 계산**:
- 제목 매칭: 10.0점 (완전 일치 시 +5.0점)
- 내용 매칭: 매칭 수 × 2.0점
- 부분 매칭: 단어별 0.5-3.0점
3. **결과 정렬**: 관련도 점수 기준 내림차순
## 📚 참고 자료
- [위키독스 API 문서](https://wikidocs.net/napi/docs)
- [Model Context Protocol](https://modelcontextprotocol.io)
- [MCP: AI 에이전트 시대의 통합 가이드](https://wikidocs.net/book/17996) (이 프로젝트의 기반이 된 책)
## 🛡️ 보안 및 주의사항
- **API 토큰 보안**: `.env` 파일을 절대 git에 커밋하지 마세요
- **권한 확인**: MCP 도구 실행 시 Claude가 권한을 요청합니다
- **캐시 관리**: 민감한 정보가 포함된 경우 캐시 디렉터리를 주기적으로 정리하세요
## 📄 라이선스
MIT License - 자세한 내용은 [LICENSE](LICENSE) 파일을 참조하세요.
## 🤝 기여하기
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## 📞 지원 및 문의
- **Issues**: [GitHub Issues](https://github.com/ychoi-kr/wikidocs-mcp/issues)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues