kpop-wiki
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kpop-wikisearch for BTS discography"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
K-POP Wiki
K-POP 아티스트·앨범·용어 정보를 다루는 LLM 기반 지식베이스 통합 프로젝트입니다.
하네스(AGENTS.md)가 정의한 규칙에 따라 AI 에이전트(Claude Code)가 raw/의 원본 자료를
wiki/의 마크다운 지식베이스로 정리하고, 이 위키를 MCP 서버(server.py)와
Gradio 웹 UI(app.py)가 함께 노출합니다.
프로젝트 소개
이 저장소는 다음 4가지 요소가 하나로 통합된 시스템입니다.
구성 요소 | 파일 | 역할 |
하네스 |
| AI 에이전트가 이 저장소에서 작업하는 방식(규칙·절차·금지사항)을 정의. 매 세션 시작 시 에이전트가 가장 먼저 읽어야 하는 "운영 매뉴얼" |
LLM Wiki |
|
|
MCP 서버 |
|
|
Gradio 뷰어 |
|
|
즉, 에이전트가 지식을 축적하고 → MCP로 도구화되며 → 사람은 웹 UI로 결과를 확인하는
순환 구조입니다. server.py와 app.py는 동일한 wiki/ 폴더를 데이터 소스로 공유하므로,
한쪽에서 추가한 페이지는 다른 쪽에서도 즉시 확인할 수 있습니다.
Related MCP server: Wikipedia MCP Server
설치 방법
요구 사항
Python 3.11 이상
pip
설치 절차
# 1. 저장소 클론
git clone <repo-url>
cd kpop-wiki-final
# 2. 의존성 설치
pip install -r requirements.txtrequirements.txt에는 다음 패키지가 포함되어 있습니다.
fastmcp
gradioMCP Tool 목록과 동작
server.py에서 FastMCP 인스턴스(mcp = FastMCP("K-POP Wiki", ...))에 다음 5개 Tool이
@mcp.tool()로 등록되어 있습니다. 모든 경로는 WIKI_DIR = <프로젝트 루트>/wiki 기준입니다.
1. wiki_search(query: str) -> list[dict]
wiki/ 폴더 전체를 순회하며 파일명 또는 본문에 query가 포함된 마크다운 문서를 찾습니다.
각 결과는 page_id, title, snippet(본문 앞 300자)을 담은 딕셔너리로 반환됩니다.
wiki_search("해찬")
# → [{"page_id": "artists/nct-haechan", "title": "NCT 해찬", "snippet": "..."}]2. wiki_get(page_id: str) -> str
page_id에 해당하는 마크다운 파일의 전체 내용을 문자열로 반환합니다. 파일이 없으면
"페이지를 찾을 수 없습니다: {page_id}"를 반환합니다.
wiki_get("artists/flare-u")
# → wiki/artists/flare-u.md 파일 전체 내용3. wiki_create(title: str, content: str, category: str = "general") -> str
title로부터 slug(파일명)를 자동 생성해 wiki/{category}/{slug}.md에 새 문서를 만듭니다.
같은 이름의 페이지가 이미 있으면 생성하지 않고 안내 메시지를 반환합니다(기존 문서 보호).
wiki_create("아이브", "## 소개\n스타쉽엔터테인먼트 소속 그룹...", category="artists")
# → "페이지 생성 완료: artists/아이브"4. wiki_update(page_id: str, section: str, content: str) -> str
기존 마크다운 파일의 맨 끝에 ## {section} 형태의 새 섹션을 추가합니다. 기존 내용은
삭제되지 않고 그대로 유지됩니다. 파일이 없으면 "페이지를 찾을 수 없습니다: {page_id}"를
반환합니다.
wiki_update("artists/nct-haechan", "최근 활동", "2026년 솔로 앨범 발매...")
# → "섹션 추가 완료: [artists/nct-haechan] ## 최근 활동"5. wiki_list(category: str = "") -> list[dict]
wiki/ 폴더의 문서 목록을 반환합니다. category를 지정하면 해당 하위 폴더의 문서만,
비워두면 전체 문서를 page_id, title, category와 함께 반환합니다.
wiki_list()
# → [{"page_id": "artists/flare-u", "title": "FLARE U", "category": "artists"}, ...]
wiki_list("glossary")
# → glossary/ 폴더의 문서만 반환사용법 (처음 보는 사람 기준 30분 가이드)
1. 저장소 clone
git clone <repo-url>
cd kpop-wiki-final2. 의존성 설치
pip install -r requirements.txt3. raw/ 폴더에 자료 넣기
K-POP 관련 자료(텍스트 .txt 또는 마크다운 .md 파일)를 raw/ 폴더에 넣습니다.
파일명에 processed_ 접두어가 없는 파일은 "아직 wiki에 반영되지 않은 미처리 원본"으로
취급됩니다.
raw/
└── 새로운아이돌_정보.md ← 이렇게 추가4. Claude Code 실행 → AGENTS.md 읽고 ingest 파이프라인 실행 지시
프로젝트 루트에서 Claude Code를 실행합니다.
claude그리고 다음과 같이 요청합니다.
AGENTS.md를 읽고, raw/ 폴더의 미처리 파일을 wiki/ 폴더의 마크다운 페이지로 변환해줘.에이전트는 AGENTS.md의 규칙과 scripts/ingest.md의 절차에 따라 다음을 수행합니다.
raw/에서processed_접두어가 없는 파일 탐색파일을 읽고 핵심 개념·정의·예시 추출
wiki/폴더에 새 마크다운 페이지 작성wiki/index.md에 새 페이지 링크 추가처리된
raw/파일명 앞에processed_접두어 추가journal.md에 처리 기록 한 줄 append
5. python app.py 실행 → 127.0.0.1:7860 접속
python app.py브라우저에서 http://127.0.0.1:7860에 접속합니다.
참고: AI 에이전트가 MCP Tool로 위키에 접근하게 하려면 별도 터미널에서
python server.py를 실행하세요. (127.0.0.1:8000, streamable-http)
6. wiki/에 생성된 페이지 확인
Gradio UI 왼쪽 패널에서 "새로고침"을 누르면 4단계에서 새로 생성된 페이지가 목록에 나타납니다. 페이지를 클릭하면 본문이 우측에 표시되고, "검색" 기능으로 키워드 검색도 가능합니다.
검증 방법
1. wiki_list() 호출로 페이지 목록 확인
python -c "from server import wiki_list; print(wiki_list())"wiki/ 폴더의 모든 문서가 page_id, title, category와 함께 출력되면 정상입니다.
새로 추가한 페이지가 목록에 포함되어 있는지 확인하세요.
2. 브라우저에서 페이지 조회
python app.py실행 후 http://127.0.0.1:7860 접속좌측 "새로고침" 클릭 → 페이지 목록에 새 문서가 보이는지 확인
페이지 클릭 → 우측에 본문 마크다운이 정상적으로 렌더링되는지 확인
검색창에 키워드 입력 → 관련 문서가 검색 결과에 나타나는지 확인
디렉토리 구조
kpop-wiki-final/
├── AGENTS.md # 하네스 — 에이전트 작업 규칙 (ingest 파이프라인, 쿼리 처리, 금지사항)
├── README.md # 이 문서
├── PRD.md # 프로젝트 요구사항 정의서
├── TASK.md # 현재 작업 Contract (Status / Goal / Done when / Log)
├── journal.md # 작업 기록 (append-only, 수정·삭제 금지)
├── domain.md # K-POP을 지식 도메인으로 선정한 이유 등 도메인 정의
├── requirements.txt # 의존성 (fastmcp, gradio)
├── server.py # MCP 서버 — wiki_search/get/create/update/list 정의
├── app.py # Gradio 웹 UI (server.py 함수 직접 import)
├── scripts/
│ └── ingest.md # raw → wiki 변환 절차를 정의한 Skill 파일
├── raw/ # 원본 소스 입력 폴더
│ └── processed_*.pdf # 처리 완료된 원본 (접두어 processed_)
├── wiki/ # 정리된 마크다운 지식베이스
│ ├── index.md # 위키 인덱스 (전체 페이지 목록)
│ ├── artists/
│ │ ├── flare-u.md # FLARE U (FNC엔터테인먼트, 2026년 5월 데뷔)
│ │ └── nct-haechan.md # NCT 해찬 (SM엔터테인먼트)
│ └── glossary/
│ └── kpop-terms.md # K-POP 용어 사전 (컴백, 직캠, 팬덤 등)
└── demo/
└── MVP GUI.png # MVP 화면 스크린샷위키 페이지 추가/수정 방법 (요약)
새 페이지 추가:
wiki_create(title, content, category)호출 또는 Gradio UI의 "새 페이지 추가" 폼 사용기존 페이지에 내용 추가:
wiki_update(page_id, section, content)호출 시 해당 문서 끝에## section섹션이 추가됩니다 (기존 내용은 유지)페이지 삭제 기능은 제공하지 않습니다
This server cannot be deployed
Maintenance
Related MCP Connectors
- FlowdexOAuthdk.flowdex
Read and write your team's shared, AI-readable wiki from any MCP client.
Read-only MCP for the Eco game wiki: search, Markdown pages, and wiki_* lookups. No keys, no writes.
- hiveWikiOAuthai.hivewiki
Shared project wiki for AI agents: read and write pages, next actions, and activity logs over MCP.
Authenticated MCP access to the AIKI open knowledge commons.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables searching and retrieving Minecraft Wiki content in multiple formats (wikitext, HTML, markdown) through MCP tools, with batch retrieval and health monitoring.51MIT
- AlicenseNot gradedqualityDmaintenanceProvides structured access to Wikipedia content including search, summaries, images, links, and more via MCP tools.6Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to read, search, and write to a public wiki knowledge base via MCP.MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to maintain a persistent Markdown knowledge base by ingesting sources, searching and reading notes, and creating or updating wiki pages with optimistic locking.12AGPL 3.0