# Language Recommendation — File Time Search MCP
작성일: 2025-12-15
## TL;DR (결론)
- **이 워크스페이스 기준 1순위: Java (MCP Java SDK)**
- 이유: 현재 프로젝트 흐름이 Maven 기반(작업 목록에 `mvn test/verify`)인 점과 잘 맞고, 공식 Java SDK가 **STDIO / Streamable HTTP** 등 표준 전송을 기본 모듈에서 지원하며(BOM 제공), 배포/운영(단일 jar)도 단순합니다.
- **Windows 전용 + .NET 생태계라면 1순위: C# (MCP C# SDK)**
- 이유: 공식 C# SDK가 서버/클라이언트 모두 제공하고, 로그를 stderr로 보내는 패턴도 예제에 포함되어 있으며, Windows 환경에서 파일 메타데이터 접근이 자연스럽습니다.
- **가장 빠른 PoC/개발 경험 1순위: Python (MCP Python SDK / FastMCP)**
- 이유: `@tool()` 데코레이터 기반으로 구현이 매우 빠르고, structured output을 타입 힌트 기반으로 자동 생성/검증하는 기능이 강점입니다.
- **Node 생태계·예제 풍부함 1순위: TypeScript (MCP TypeScript SDK)**
- 이유: 공식 TS SDK는 예제/문서가 매우 풍부하고, 표준 전송(stdio/Streamable HTTP)을 빠르게 붙일 수 있습니다. 단, Node의 파일 시간(birthtime 등)과 OS별 차이를 명확히 테스트해야 합니다.
## 1. 이 PRD에서 중요한 선택 기준
본 MCP 서버는 **로컬 파일 시스템을 빠르고 안전하게 스캔**하고, `structuredContent`를 반환해야 합니다.
따라서 아래 기준이 특히 중요합니다.
- **파일 시간 API의 정확성/OS 차이 대응**: `modified`(mtime) vs `created`(birth time/creation time)
- **STDIO 서버 안정성**: stdout 오염 방지(로그는 stderr)
- **대용량 스캔 성능/취소/타임아웃**: long-running tool call 대응(추후 tasks/progress 확장 가능)
- **배포 편의성**: 단일 실행물/의존성 관리
- **SDK 성숙도**: 스펙 추종 속도, 예제/테스트/릴리즈 빈도
## 2. 후보 언어 리스트(공식 SDK 기준)
MCP 공식 문서 기준으로 제공되는 SDK(일부):
- TypeScript, Python, Go, Kotlin, Java, C#, Rust, Ruby, PHP, Swift 등
참고: https://modelcontextprotocol.io/docs/sdk#available-sdks
## 3. 추천 순위(요약 리스트)
### A. Java (추천: 이 저장소 기본값)
추천 포인트
- 공식 Java SDK는 **STDIO / SSE / Streamable HTTP** 전송을 기본 모듈에서 제공(외부 웹 프레임워크 없이도 가능).
- BOM(`mcp-bom`)을 제공해 의존성 버전 관리가 쉽고, Maven 기반 워크플로우와 궁합이 좋음.
- 파일 시스템 접근(NIO)과 대규모 트리 스캔에 대한 성능/안정성 확보가 용이.
주의/비용
- 개발 속도는 Python/TS보다 초기 세팅이 다소 무거울 수 있음.
- 비동기/스트리밍까지 확장하려면 리액티브 모델 이해가 필요할 수 있음(단, 동기 facade도 제공).
근거 링크
- Java SDK repo: https://github.com/modelcontextprotocol/java-sdk
- Java SDK docs: https://modelcontextprotocol.io/sdk/java/mcp-overview
### B. C# (.NET) (Windows-centric 조직이면 최적)
추천 포인트
- 공식 C# SDK는 서버/클라이언트 모두 제공.
- 예제에서 **콘솔 로그를 stderr로 보내는 구성**을 기본으로 안내(stdio 서버 운영에 유리).
- Windows 환경에서 파일 속성/ACL/경로 처리에 강점.
주의/비용
- 현재 워크스페이스가 Maven 흐름이면(조직 표준이 Java라면) 도입 비용이 커질 수 있음.
- “preview” 표기가 있어(README 기준) 버전업 시 breaking change 가능성 관리 필요.
근거 링크
- C# SDK repo: https://github.com/modelcontextprotocol/csharp-sdk
### C. Python (FastMCP) (가장 빠른 PoC)
추천 포인트
- 공식 Python SDK는 FastMCP를 제공하며, `@mcp.tool()` 방식으로 구현이 빠름.
- 타입 힌트 기반 structured output + 스키마 생성/검증 흐름이 강력(LLM/클라이언트 친화적).
- `stdio`, `SSE`, `Streamable HTTP` 전송을 지원.
주의/비용
- Windows에서 파일 생성 시간/심볼릭 링크/권한 등 경계 조건을 꼼꼼히 테스트해야 함(언어 문제가 아니라 OS/FS 특성).
- 운영 배포 시 Python 런타임/의존성(uv/pip) 관리 전략이 필요.
근거 링크
- Python SDK repo: https://github.com/modelcontextprotocol/python-sdk
### D. TypeScript (Node) (예제/생태계 강점)
추천 포인트
- 공식 TS SDK는 예제/문서가 매우 풍부하고, stdio/Streamable HTTP 지원이 명확.
- 스키마 검증은 `zod`를 peer dependency로 요구하는 구조로, 개발 경험이 좋음.
주의/비용
- Node의 파일 시간(`stat.birthtime` 등)이 OS/파일시스템별로 의미/정확도가 다를 수 있어,
PRD의 `created` 의미를 테스트 기반으로 고정해야 함.
근거 링크
- TypeScript SDK repo: https://github.com/modelcontextprotocol/typescript-sdk
### E. Go / Kotlin (보조 선택지)
- Go: 단일 바이너리 배포 + 성능 장점. 공식 SDK가 stdio 예제를 제공.
- https://github.com/modelcontextprotocol/go-sdk
- Kotlin: 멀티플랫폼까지 고려하면 장점. 다만 이 프로젝트는 파일 시스템 로컬 서버 중심이므로 JVM만 쓰는 경우 Java 대비 메리트가 팀 구성에 좌우.
- https://github.com/modelcontextprotocol/kotlin-sdk
## 4. 최종 권장안(실행 가능한 선택)
### 권장안 1) Java로 구현 (이 워크스페이스에 가장 자연스러움)
- 대상: “Maven 기반으로 관리하고, jar로 배포하고 싶다”
- 기대효과:
- 빌드/테스트 파이프라인(`mvn test/verify`)과 바로 통합
- 파일 스캔 성능/안전성 정책(최대 스캔 수, 타임아웃) 구현이 수월
### 권장안 2) Python FastMCP로 PoC → 안정화 후 Java/C#로 이관(옵션)
- 대상: “요구사항/UX/스키마를 빨리 검증하고 싶다”
- 기대효과:
- PRD의 input/output 스키마를 빠르게 구현해 실제 Agent 호출 흐름 검증
- Windows created time/권한/링크 처리 정책을 빠르게 실험
### 권장안 3) C#로 구현 (Windows 전용, .NET이 표준인 경우)
- 대상: “배포/운영이 Windows/.NET 중심”
- 기대효과:
- Windows 파일 시스템/권한 모델과 자연스럽게 결합
- stdio 서버 운영에서 stderr 로깅 패턴이 문서화됨
## 5. 이 PRD 관점에서의 ‘언어별 구현 난이도’ 체크리스트
아래 항목은 어떤 언어를 선택하더라도 반드시 구현/테스트로 잠그는 것이 좋습니다.
- created time 미지원 시 정책: `includeUnknownTime` 처리(제외 vs `createdAt=null` 포함)
- 루트 경계: normalize 후 루트 이탈 방지(심볼릭 링크/리파스 포인트 포함)
- stdout 오염 금지: stdio 서버에서 로그는 stderr 또는 파일
- 페이지네이션 커서: opaque token(내부 경로/구조 과노출 방지)
- 대용량 제한: 최대 스캔 수/시간 제한/부분 결과+커서 또는 isError 정책
## 6. 참고(공식 링크)
- MCP SDK 목록: https://modelcontextprotocol.io/docs/sdk#available-sdks
- MCP Tools 스펙(에러/structuredContent 포함): https://modelcontextprotocol.io/specification/2025-11-25/server/tools