Skip to main content
Glama

🍯 HoneyMCP — 얼불춤(ADOFAI) 고퀄리티 맵 자동생성 MCP

"맵 만들어줘" 한마디면 유튜브급 커스텀 맵이 나옵니다. A Model Context Protocol server that generates human-quality A Dance of Fire and Ice custom levels from any song. 노래를 주면 실제 음표에 맞춘 타일길 + 매직서클 + 카메라/조명 이펙트까지 자동으로 뽑아줍니다.

python mcp tests

✨ 핵심 기술 (왜 노잼이 아닌가)

기술

설명

🎹 실제 음표 싱크

ffmpeg + spectral flux로 노래의 온셋(음표) 수백 개를 2초 만에 추출. 타일을 진짜 음표 위에 배치 (싱크율 ~90%)

🧲 SetSpeed 박자 고정

공식 에디터 가이드의 매직쉐이프 정석. 도형은 자유롭게, 박자는 타일마다 BPM 보정으로 고정

🗺️ 겹침 제로 배치

전 타일 좌표 시뮬레이션 + DFS 백트래킹. 뭉개진 덩어리 원천 차단

🐇🐢 속도비율 제한

타일 속도비를 기준의 0.45~2.6배로 강제. 빠름/느림 표식(토끼/거북이) 도배 + 불가능 구간 원천 차단. 빠른 음표=직선 스트림, 느린 음표=큰 도형 (고수 원칙)

🌀 프레이즈 모티프

8타일마다 물결→지그재그→아크→나선 순환 + 구간마다 방향 전환. 평행 고속도로 방지

🛡️ 품질 게이트

점수제 검증(errors/warnings). 불합격이면 시드 바꿔 최대 6회 자동 재생성 후 최고본만 저장

👆 2/3/4키 동시치기

공식 가이드 multi-press 정석(0.01° 히든 미드스핀). ★5부터 코러스에 2키 자동, 수동 추가도 가능

Related MCP server: FL Studio MCP Server

📋 요구사항

  • Python 3.10+

  • ffmpeg (음표 추출용. 없으면 기계 그리드 폴백으로 동작)

    • Windows: winget install ffmpeg (또는 ffmpeg.org)

  • 얼불춤 본편 (결과물 확인용. 생성 자체는 게임 없이 됨)

🚀 설치

git clone https://github.com/dohunkr/HoneyMCP.git
cd HoneyMCP
pip install -e ".[dev]"

🔌 MCP 연결법 (클라이언트별)

서버 실행 명령(공통): python -m honey_mcp.server (stdio 방식)

⚠️ 설정 후 클라이언트를 완전히 종료→재시작해야 반영됩니다.

opencode (opencode.json — 프로젝트 루트)

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "honey-adofai": {
      "type": "local",
      "command": ["C:/Python310/python.exe", "-m", "honey_mcp.server"],
      "enabled": true
    }
  }
}

command의 python 경로는 본인 환경에 맞게 수정. .venv 사용 시 .venv/Scripts/python.exe 절대경로 권장. opencode.json.example 참고. 연결 확인: 툴 목록에 honey-adofai가 보이면 OK.

Claude Code (.mcp.json — 프로젝트 루트)

{
  "mcpServers": {
    "honey-adofai": {
      "command": "python",
      "args": ["-m", "honey_mcp.server"],
      "cwd": "D:/Github/ADOFAI/HoneyMCP"
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "honey-adofai": {
      "command": "python",
      "args": ["-m", "honey_mcp.server"],
      "cwd": "D:/Github/ADOFAI/HoneyMCP"
    }
  }
}

Antigravity / Codex

MCP 설정에 stdio 서버로 등록 (위와 동일): command python, args ["-m", "honey_mcp.server"], cwd = 이 폴더.

🎮 사용법

채팅에 노래 파일 경로만 주면 됩니다:

D:\Music\track.ogg 로 맵 만들어줘 (★5, 화려하게)

AI는 자동으로 analyze_song → generate_full_map → 품질게이트를 수행합니다. 출력: D:/Github/ADOFAI/HoneyMap_<곡명>/ 안에 .adofai + 노래 복사본 → 얼불춤 레벨 에디터로 폴더를 열어서 F5 테스트플레이.

MCP 없이 직접 생성도 가능:

python tools/make_map.py --audio "C:/Music/song.ogg" --outdir "D:/Github/ADOFAI/HoneyMap_song" `
    --title "Song" --artist "Artist" --difficulty 5 --style showcase --seed 7
  • difficulty: 1~10 (★5-6 권장. ★5부터 2키 동시치기, ★7부터 6개, ★9부터 3키)

  • style: showcase(화려) / clean(깔끔) / party

🧰 MCP 도구

도구

설명

analyze_song(audio_path)

BPM/오프셋/음표/구간 분석 (~2초)

generate_full_map(audio_path, output_dir, title, artist, difficulty, style, seed)

원샷 풀맵 생성 + 품질게이트 + 자동재시도

validate_level_tool(level_path)

점수/에러/경고 리포트

adjust_effects(level_path, style, zoom, enable_flash)

타일 유지 + 이펙트만 교체

add_multipress(level_path, floor, keys)

2/3/4키 동시치기 수동 추가

list_patterns()

패턴 사전

프롬프트 make_map / 리소스 adofai://spec

AI 작업手順 + 스펙 요약

🛡️ 품질 게이트 (재발방지)

errors (하나라도 있으면 자동 재생성):

  • 게임 enum 위반 (Forward 등 — 과거 로딩 크래시 원인)

  • SetSpeed가 기준의 0.35~3배 초과 (불가능 구간)

  • floor 범위 초과 / 타일 부족 / BPM 범위 이탈

warnings (점수 감점):

  • 직선 7연속 고속도로 / 좌우회전 편중 / 타일 겹침 / 음표 싱크율 60% 미만

🗺️ 맵 출력 규칙

  • 모든 맵은 D:/Github/ADOFAI/HoneyMap_<곡명>/ 에 생성 (프로젝트 폴더와 분리)

  • 예시: 도라에몽 피아노 커버 → 타일 210개, score 100, 싱크율 90%, 2키×3

🧪 개발

pytest -q

구조: src/honey_mcp/ — server.py(MCP) / audio.py / onsets.py(음표추출) / chart.py(채보+배치) / effects.py(이펙트) / adofai.py(파일IO+검증+멀티프레스)

❓ 트러블슈팅

증상

원인/해결

Requested value 'Forward' was not found

구버전 산출물. 최신 버전으로 재생성 (게이트에서 원천 차단됨)

타일에 토끼/거북이 도배

구버전 속도 폭주. v6+ 속도비율 제한으로 해결

MCP가 노래 분석에서 멈춤

구 librosa 경로 문제. 현재 ffmpeg 기반으로 2초 내외 (ffmpeg 설치 확인)

한글 출력 깨짐 (cp949)

$env:PYTHONUTF8="1" 설정

MCP가 안 보임

클라이언트 재시작 확인 + python 절대경로 확인

📄 라이선스

MIT — 자유롭게 쓰고 고치고 공유하세요. 맵을 만들 때 사용한 노래의 저작권은 각 권리자에게 있습니다.

Available Tools

6 tools
add_multipressB

2/3/4키 동시치기 추가 (0.01° 히든 미드스핀).

Args: level_path: .adofai 절대경로 floor: 동시치기를 넣을 타일 번호 keys: 2(양손) / 3 / 4

Inputs: floor (required), level_path (required), keys.

adjust_effectsA

이펙트/연출만 재생성 (타일길과 리듬 유지).

Args: level_path: .adofai 절대경로 style: showcase/clean/party zoom: 기준 카메라 줌 enable_flash: 플래시 on/off

Inputs: level_path (required), zoom, style, enable_flash.

analyze_songB

노래 파일(mp3/ogg/wav) 정밀 분석: BPM, 오프셋, 비트 신뢰도, 온셋, 실제 음악적 섹션.

Args: audio_path: 로컬 오디오 파일 절대경로

Inputs: audio_path (required).

generate_full_mapB

노래 하나로 인간미 넘치는 유튜브급 풀맵 생성 (원샷).

Args: audio_path: 노래 파일 절대경로 (.mp3/.ogg/.wav) output_dir: .adofai를 저장할 폴더 (없으면 생성) title: 곡명 artist: 아티스트명 author: 채보 제작자명 difficulty: 110 (입문 13, 중급 46, 상급 78, 고수 9~10) style: showcase(화려한 연출)/clean(깔끔한 기본)/party seed: 패턴 다양성 시드 focus: 채보 집중 모드 ('balanced'=균형, 'melody'=멜로디 중심, 'beat'=드럼/비트 중심)

Inputs: audio_path (required), output_dir (required), seed, focus, +5 more.

list_patternsB

사용 가능한 타일 패턴 및 모티프 목록.

Inputs: no named parameters.

validate_level_toolB

생성된 .adofai 검증 (로딩 안전 + 품질 게이트). Args: level_path: .adofai 절대경로

Inputs: level_path (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 6 tools

    Disambiguation4/5

    Tools target distinct stages: audio analysis, pattern listing, full generation, validation, multipress editing, and effects adjustment. The only mild overlap is that generate_full_map is a one-shot pipeline that may implicitly subsume analysis and pattern selection, but the dedicated tools still have clear separate purposes.

    Naming Consistency4/5

    Most names follow a consistent snake_case verb_noun pattern: analyze_song, list_patterns, add_multipress, generate_full_map, adjust_effects. The only deviation is validate_level_tool, where the redundant _tool suffix breaks the otherwise clean convention.

    Tool Count5/5

    Six tools is well-scoped for a specialized ADOFAI map-generation server. Each tool covers a distinct operation in the create-validate-adjust workflow without obvious redundancy or bloat.

    Completeness4/5

    The surface covers the core lifecycle: analyze a song, generate a full map, validate it, adjust effects, and add multipress patterns. Minor gaps remain, such as removing multipress, editing individual tiles or rhythms directly, or previewing maps without full regeneration.

    Related MCP Connectors

    Related MCP Servers