# MCP 블로그 포스팅 서버 개발 진행 기록
## 1. 주요 결정/구현 이력
- 프로젝트 목적: Google Blogger API를 MCP Tool로 제공하는 서버 구현
- blogspot-post-test의 인증/포스팅/타입 모듈 이식 및 서비스화
- ToolManager에 blog-post, blog-batch-post Tool 등록
- server.ts에서 Tool 등록 및 MCP 서버에 노출
- 환경변수(.env), client_secret 파일, 인증/토큰 관리 구조 확립
- .gitignore에 .env, client_secret\*.json 등 민감 파일 추가 권고
- 유닛 테스트 코드 작성 및 자동화
- ESM 환경에서 \_\_dirname 문제 해결(import.meta.url 등)
- (※ 과거 config.ts에서 client_secret 경로를 환경변수로 지정 가능하도록 개선했으나, 현재는 config.ts 파일 없음)
---
### [2024-06-13] 구조 리팩터링/최적화 내역
- BaseServer에서 capabilities에 명시된 기능만 MCP 표준 핸들러를 조건부 등록하도록 개선 (tools만 선언 시 resources/prompts 완전 미포함 가능)
- server.ts에서 ExampleService/예제 Tool/리소스/프롬프트/불필요 코드 완전 제거, BlogspotMcpServer로 순수화
- (※ 과거 config.ts에서 credentialPath, blogId 등 파라미터 기반 구조로 리팩터링, 환경변수 fallback만 지원했으나, 현재는 config.ts 파일 없음)
- 테스트 코드에서 .env를 명시적으로 로드, 환경변수 미설정 시 에러 throw로 실수 방지
- 통합 테스트/실행 시 환경변수, blogId 등 실데이터 주입 구조 확립
- capabilities에서 안 쓰는 기능(resources, prompts) 완전 제거, MCP 프로토콜 에러 없이 동작 확인
---
### [2025-06-12] blogId 캐시 파일 경로 고정 및 dist 폴더 이슈 수정
- 문제: .blog_id_cache.json 캐시 파일이 빌드(dist) 폴더에 생성되는 현상 발견
- 원인: server.ts에서 캐시 경로를 \_\_dirname 기준 상대경로로 지정하여, 빌드/실행 위치에 따라 파일 위치가 달라짐
- 조치:
- 캐시 경로를 process.cwd() 기준으로 고정하여 항상 프로젝트 루트에만 생성되도록 수정
- dist/.blog_id_cache.json 등 잘못된 위치의 캐시 파일 수동 삭제
- .gitignore에 캐시 파일 포함 재확인
- 영향:
- 빌드/실행 위치와 무관하게 캐시 파일이 루트에만 생성됨
- 운영/테스트 환경에서 파일 경로 혼동 방지, 관리 일원화
---
### [2025-06-14] 로깅 개선 및 server/info 엔드포인트 추가
- MCP 서버에서 실제로 내보내는 JSON 메시지를 stderr(console.error)로 [DEBUG][STDIO_SEND] 형태로 출력하도록 수정하여, 파싱 에러 및 프로토콜 문제를 실시간으로 추적할 수 있도록 개선
- MCP 서버에 별도의 server/info 엔드포인트를 추가하여, Inspector나 클라이언트가 서버 정보를 직접 요청할 수 있도록 지원 (name, version 반환)
- MCP Inspector/클라이언트에서 tools/list, server/info 등 정상 동작 확인
- stdout 오염 방지, 모든 로그는 stderr 또는 MCP 프로토콜 전용 로깅 함수만 사용하도록 가이드 강화
---
## 2. 테스트/운영 현황
- MCP Inspector/클라이언트로 Tool 목록(blog-post, blog-batch-post) 정상 노출 확인
- 인증 토큰 없을 때/있을 때 에러/성공 케이스 테스트
- npm test로 유닛 테스트 자동화(토큰 없는 경우 등)
- 빌드/실행/환경변수/시크릿 파일 관리 정상 동작 확인
- 통합 테스트에서 환경변수/실제 blogId 미설정 시 명확한 에러, 정상 설정 시 API 호출까지 end-to-end 동작 확인
---
## 3. 남은 TODO/개선 과제
- [ ] 실제 Google 인증/토큰 발급 플로우(웹/CLI) 자동화/가이드 보강
- [ ] Tool 입력/출력 샘플, 사용 예시 문서화 (README/샘플 JSON 등)
- [ ] 운영 환경 배포/시크릿 관리 가이드 강화 (.env, client_secret.json 등)
- [ ] MCP Tool/Resource/Prompt 확장 예시 및 패턴 문서화
- [ ] 에러/예외 상황(토큰 만료, API 제한 등) 핸들링 강화 및 테스트
- [ ] 코드/문서/테스트 전반 리팩터링 및 주석 보강
- [ ] MCP Inspector/클라이언트로 실제 테스트한 결과(성공/실패) 기록 및 공유
- [ ] (선택) BaseServer/핸들러 구조의 추가 경량화/최적화 여부 검토
---
## 4. 미진/불명확/확인 필요 사항
- 실제 Google 인증/토큰 발급 플로우(웹/CLI) 구현/가이드 필요성
- MCP Tool 입력/출력 포맷(샘플 JSON 등) 구체화 필요 여부
- 운영 환경에서 client_secret, .env 파일 배포/보관 정책
- MCP Inspector/클라이언트로 실제 테스트한 결과(성공/실패) 기록 필요성
---
이 파일은 프로젝트의 진행 이력, 남은 과제, 미진/불명확한 점을 추적/공유하기 위한 용도로 활용합니다.