기준일: 2026-03-11
현재 src 기준으로 보면 이 프로젝트는 Batch 전용 MCP 서버의 초기 MVP가 구현된 상태다.
-
완료된 것
- FastAPI 서버 진입점 존재
POST /v1/session-blocks:build엔드포인트 존재- 요청 DTO/응답 DTO 정의됨
- 메시지 정렬 및 기본 검증 구현됨
- 규칙 기반
APPEND / NEW_BLOCK결정 로직 구현됨 - 애매 구간용 Ollama 호출 구조 존재, 실패 시 fallback 동작
existingBlocks[].lastMessage를 이용한 incremental 문맥 연결 구현됨- 변경 블록 요약(tags) 및 코드 스니펫 추출 구현됨
- 기본 자동 테스트 추가됨
-
아직 부족한 것
- Ollama 실환경 검증이 아직 충분하지 않음
- 요약 품질은 휴리스틱 수준이며 정교하지 않음
- API/운영 로그, 메트릭, 재시도 체계 없음
- Real-time API 없음
- structured output 검증과 fallback 고도화가 미흡함
- 성능 baseline 문서가 아직 없음
즉, 현재 상태는 Batch 기반 서버 MVP는 실행 가능한 수준까지 올라왔지만, 운영 안정화와 실환경 검증은 아직 남아 있는 단계다.
- FastAPI 앱 생성 완료
POST /v1/session-blocks:build라우트 구현 완료- 입력 검증 수행
sessionId비어있는지 확인messages존재 여부 확인role정규화 및 허용값 검증messageId,content,timestamp검증
ValueError를400으로 변환
판단:
- Batch API의 최소 진입점은 구현됨
- 다만 요청/응답 trace, 로깅, 세부 예외 분류는 없음
- Request/Response DTO 정의 완료
- 아래 구조가 문서와 대체로 일치함
BuildRequestDTOBuildOptionsDTOSessionBlockDTOBuildStatsDTOBuildResponseDTO
판단:
- 스키마 뼈대는 잘 있음
- 하지만
analysisMode허용값 검증, 필드 단위 제약, 응답 메타 정합성 검증은 약함
- 핵심 파이프라인 구현 완료
- 메시지 정규화
- timestamp 기준 정렬
- 기존 블록 로드
- 메시지 순회
APPEND / NEW_BLOCK / LLM분기- 블록 생성 및
messageToBlock매핑 - 변경 블록 summarize
- 최종 응답 생성
판단:
- 현재 프로젝트에서 가장 많이 구현된 부분
- 문서의 Batch 흐름을 실제 코드로 옮긴 핵심 모듈
현재 상태:
existingBlocks[].lastMessage가 들어오면 기존 블록의 마지막 문맥을 복원할 수 있다.- 따라서 incremental 요청에서 이전 블록에 자연스럽게 append될 가능성이 이전보다 높아졌다.
- 다만 이 구조는 호출 측이
lastMessage를 정확히 넘겨준다는 전제가 필요하다.
- Jaccard 유사도 기반 유사도 계산 구현
- 시간 간격 기반 분기 구현
- 저유사도면
NEW_BLOCK, 고유사도면APPEND - 중간 구간은
LLM으로 넘기는 구조 구현
판단:
- 휴리스틱 초안은 있음
- 계획 문서의 1차 규칙 + 2차 LLM 타이브레이크 구조와 방향은 맞음
- 다만 토큰화가 단순 공백 분리 수준이라 한국어/코드 혼합 대화에서는 품질 한계가 큼
- fenced code block 기반 코드 스니펫 추출 구현
- 요약은 키워드 기반 간단 태깅 구현
error,exception->PROBLEMfix,resolve->SOLUTIONtry,attempt->TRIAL
판단:
- 초기 데모 수준은 넘겼다.
CONTEXT,PROBLEM,TRIAL,SOLUTION,INSIGHT를 메시지 기반으로 뽑는다.- fenced code block 외에 명령어 라인도 스니펫으로 뽑는다.
- 다만 여전히 휴리스틱 기반이라 고품질 요약으로 보기엔 부족하다.
LlmClient클래스 존재decide_append_or_new()인터페이스 존재- 그러나 실제 모델 호출은 없고, context 길이의 짝/홀수로 결과를 결정하는 deterministic stub임
판단:
- Ollama HTTP API를 호출하는 구조는 구현되어 있다.
- 다만 서버 환경에서 실제 Ollama 연결 상태를 충분히 검증한 것은 아니다.
- 호출 실패 시 deterministic fallback으로 내려가도록 되어 있다.
- role 정규화 구현
ai->assistant
- ISO8601 timestamp 파싱 구현
- 빈값 검증 구현
- 허용 role 검증 구현
판단:
- 기본 유효성 검사는 있음
- 실무용 스키마 강제, 세부 필드 검증, 에러 코드 체계화는 아직 아님
- Batch 엔드포인트의 기본 형태
- 메시지 검증/정렬
- 블록 생성 및 매핑
- 규칙 기반 결정 로직
- 변경 블록 summarize 처리
- 응답에
stats포함 - incremental 문맥 연결
- 기본 테스트 추가
INCREMENTAL지원lastMessage기반으로 보강됨- 다만 호출 측 문맥 전달 정확도에 의존함
- LLM 연동
- Ollama 호출 구조는 구현됨
- 실환경 검증과 안정화는 미완료
- summarize
- 함수와 테스트는 존재
- 품질은 휴리스틱 수준
- Ollama structured outputs
- Pydantic 기반 LLM 응답 검증
- LLM 실패 재시도 / fallback 고도화
- chunk 처리
- timeout 대응
- baseline 성능 측정 결과 문서
- Real-time API (
/v1/session-blocks:ingest-message) - 테스트 코드
- 운영 로그/메트릭
현재 코드는 **"Batch MCP MVP가 실행 가능한 수준이며, 이제 우분투 서버 실환경 검증과 운영 안정화 단계로 넘어가는 상태"**라고 정리하는 것이 맞다.
LlmClient를 실제 Ollama 호출로 교체builder.py에서 기존 블록 마지막 메시지 문맥을 정확히 받도록 데이터 구조 보강summarize.py품질 개선- 샘플 입력 기반 테스트 추가
- 성능/품질 baseline 문서화
plan.mdmcp_dev_plan.mdmcp_progress.mdsrc/mcp/main.pysrc/mcp/models.pysrc/mcp/core/builder.pysrc/mcp/core/decision.pysrc/mcp/core/summarize.pysrc/mcp/llm/client.pysrc/mcp/utils/validate.py
README.mdubuntu_server_guide.md
-
src/mcp/models.pyExistingBlockDTO.lastMessage필드를 추가했다.- 목적은 incremental 요청 시 기존 블록의 마지막 메시지 문맥을 함께 전달받기 위함이다.
-
src/mcp/main.pyanalysisMode를FULL,INCREMENTAL로 검증하도록 추가했다.existingBlocks[].lastMessage가 들어오면messageId,role,content,timestamp를 함께 검증하도록 추가했다.
-
src/mcp/core/builder.py- 요청 메시지와 기존 블록의 마지막 메시지를 함께 보관하는
message_lookup을 추가했다. - 기존 블록의 마지막 메시지 문맥을
existingBlocks[].lastMessage에서 복원할 수 있게 바꿨다. - 변경 블록 summarize 시 기존 tags를 단순 덮어쓰지 않고
merge_tags()로 유지하면서 보강하도록 바꿨다. - 이 변경으로 기존 블록에 새 메시지를 append할 때 이전
tags가 통째로 사라지는 문제가 줄었다.
- 요청 메시지와 기존 블록의 마지막 메시지를 함께 보관하는
-
src/mcp/llm/client.py- 기존의 단순 stub 클라이언트를 실제 Ollama HTTP 호출 구조로 교체했다.
- 기본값:
OLLAMA_BASE_URL=http://127.0.0.1:11434OLLAMA_MODEL=qwen2.5:3bOLLAMA_TIMEOUT_SECONDS=10
- Ollama 호출 실패 또는 잘못된 JSON 응답 시에는 deterministic fallback으로 내려가도록 했다.
-
검증
python -m compileall src통과- 샘플 incremental 입력으로
existingBlocks[].lastMessage를 전달했을 때 신규 메시지가 기존 블록에 append되는 동작 확인
- Batch API는 여전히 중심 기능이다.
- 다만 이제 incremental 요청이 기존 블록의 마지막 메시지 문맥을 선택적으로 전달받아 이어갈 수 있게 되었다.
- LLM도 완전한 stub만 있는 상태는 아니고, 로컬 Ollama가 있으면 실제 호출을 시도한다.
- 아직 남은 핵심 작업:
- 실제 요청 예제로 동작 검증
- summarize 품질 개선
- 테스트 코드 추가
- 성능/품질 baseline 측정
-
src/mcp/core/summarize.py- 요약 로직을 단순 고정 문구 방식에서 메시지 기반 휴리스틱 방식으로 교체했다.
CONTEXT는 첫 번째 유효 메시지 문장을 사용한다.PROBLEM,TRIAL,SOLUTION,INSIGHT는 메시지별 키워드 탐지 결과를 실제 문장과 함께 태그로 남긴다.- fenced code block 외에도
$ ...,python,uvicorn,git,docker,npm같은 명령어 라인을bash스니펫으로 추출한다.
-
tests/test_builder.py- summarize 결과 검증 테스트 추가
- 코드 스니펫 추출 테스트 추가
- incremental append 동작 테스트 추가
- API의 잘못된
analysisMode검증 테스트 추가 - 현재 로컬 환경에
fastapi가 없을 때는 API 테스트를 skip 하도록 처리했다.
-
src/mcp/core/builder.py- metadata timestamp 생성을
datetime.now(UTC)기반으로 바꿔 Python 3.13 deprecation warning을 제거했다.
- metadata timestamp 생성을
-
검증
python -m compileall src tests통과$env:PYTHONPATH='src'; python -m unittest discover -s tests -v통과- 테스트 결과:
4개 실행3개 통과1개 skip (fastapi미설치 환경)
-
README.md- 루트 문서를 우분투 서버 기준 진입 문서로 정리했다.
- 현재 구현 범위, 핵심 문서 링크, 빠른 실행 명령, 테스트 명령을 넣었다.
-
ubuntu_server_guide.md- 우분투 서버 설치/실행/테스트 절차를 문서화했다.
- 포함 내용:
- 서버 사전 준비
- 가상환경 생성
- 의존성 설치
uvicorn실행curl기반 Batch/Incremental 요청 예제unittest실행- Ollama 환경변수 및 확인 절차
systemd서비스 예시- 배포 직후 최소 점검 절차
-
방향 정리
- 앞으로는 윈도우 테스트 기준을 버리고 우분투 서버 기준으로만 진행한다.
-
deploy/mcp.service- 우분투
systemd서비스 파일을 실제 파일로 추가했다. - 기본 경로는
/opt/mcp, 서비스명은mcp기준이다. .env를EnvironmentFile로 읽도록 설정했다.
- 우분투
-
deploy/setup_ubuntu.sh- 우분투 서버에서 바로 실행 가능한 초기 배포 스크립트를 추가했다.
- 수행 내용:
- apt 패키지 설치
- 가상환경 생성
- 의존성 설치
.env.example->.env복사systemd서비스 등록- 서비스 시작
-
.env.example- Ollama 관련 기본 환경변수 예시 파일을 추가했다.
-
문서 반영
README.md에 배포 파일 링크 추가ubuntu_server_guide.md에 배포 파일 소개와setup_ubuntu.sh실행 예시 추가
-
examples/full_build_request.json- 서버에 올린 뒤 바로
FULL요청 테스트를 할 수 있는 예제 payload를 추가했다.
- 서버에 올린 뒤 바로
-
examples/incremental_build_request.jsonexistingBlocks[].lastMessage까지 포함한 incremental 요청 예제 payload를 추가했다.
-
deploy/check_ubuntu.sh- 우분투 서버에서 배포 직후 한 번에 점검할 수 있는 스크립트를 추가했다.
- 수행 내용:
unittest실행- FULL 요청 전송
- INCREMENTAL 요청 전송
- Ollama 도달 가능 여부 확인
-
문서 반영
README.md에 점검 스크립트와 예제 payload 링크 추가ubuntu_server_guide.md에check_ubuntu.sh사용 예시 추가