HandMirror MCP로 AI가 모르는 .NET 프레임워크 정복하기
AI 학습 데이터에 없는 신생 .NET UI 프레임워크(MewUI)로 IDE를 만들 때, HandMirror MCP로 어셈블리를 직접 검사해 첫 빌드 오류를 3개로 줄인 경험
저자: rkttu
- AI가 학습하지 않은 신생 프레임워크에서 코드 생성 시 추측 오류가 빈번합니다
- HandMirror MCP는 .NET 어셈블리를 직접 검사해 정확한 API 정보를 제공합니다
- MewUI 기반 IDE 개발 시 첫 빌드 오류를 단 3개로 줄였습니다
- MCP 프로토콜로 AI 에이전트의 지식 경계를 런타임에 확장할 수 있습니다
- 1인 개발로도 IDE 수준의 프로젝트 시작이 가능해졌습니다
배경: 왜 HandMirror MCP가 필요한가

.NET IDE의 딜레마와 AI의 한계
현재 .NET IDE 선택의 현실은 다음과 같습니다:
- Visual Studio: 강력하지만 Windows 전용, 상업적 사용 제약
- VS Code + C# Dev Kit: 핵심 컴포넌트가 프로프라이어터리 라이선스
- SharpDevelop/MonoDevelop: 2017년 이후 개발 중단
결론적으로 최신 .NET을 지원하는 오픈소스 크로스 플랫폼 IDE가 없습니다.
MewUI: AI가 모르는 프레임워크
LibraStudio 프로젝트는 MewUI라는 신생 UI 프레임워크를 사용합니다. XAML 없이 순수 C# fluent API로 UI를 구성하는 독자적 설계입니다.
- 공식 문서가 풍부하지 않습니다
- Stack Overflow에 관련 질문이 없습니다
- .NET/C#은 JS/Python 대비 LLM 학습 빈도가 낮습니다
일반적인 AI 코딩 워크플로의 한계
- 학습 데이터에서 비슷한 API를 “추측”해서 코드 작성
- 빌드 시도
- 오류 메시지 보고 수정
- 2-3 무한 반복…
신생 프레임워크에서는 추측의 정확도가 극히 낮아 이 반복이 끝없이 이어질 수 있습니다.

HandMirror MCP란?
HandMirror MCP는 NuGet 패키지의 컴파일된 어셈블리(.dll)를 직접 검사하는 MCP(Model Context Protocol) 서버입니다.
핵심 기술: Mono.Cecil
일반적인 .NET 리플렉션이 아닌 Mono.Cecil을 사용합니다. 런타임 로딩 없이 메타데이터를 직접 읽어 .NET Framework 4.x부터 .NET 10까지 모든 버전을 동일하게 분석합니다.
제공하는 정보
- 모든 네임스페이스와 타입 목록
- 생성자, 프로퍼티, 메서드, 이벤트 시그니처
- Extension method의 네임스페이스 위치
- 상속 계층 구조
실제 분석 예시: MewUI 0.9.1
- 178개 퍼블릭 타입, 14개 네임스페이스 발견
- MultiLineTextBox -> TextBase 상속, Text/Placeholder/AcceptTab 등 프로퍼티 확인
- TabControl.SelectionChanged가
Action<int>타입임을 정확히 파악 - Menu.Item과 ContextMenu.Item의 오버로드 차이 발견
실전 적용: LibraStudio 프로젝트
HandMirror MCP를 활용해 MewUI 기반 텍스트 에디터를 개발한 결과입니다.
발생한 오류 (단 3개!)
| 오류 | 원인 |
|---|---|
| Menu.Item shortcut 오버로드 없음 | ContextMenu.Item에만 있는 파라미터를 Menu.Item에 사용 |
| BorderThickness 4-파라미터 없음 | 실제로는 단일 double 파라미터만 존재 |
| SelectionChanged 타입 불일치 | Action<int>를 Action<TabItem>으로 잘못 타이핑 (사람 실수) |
세 번째 오류는 HandMirror가 정확한 정보를 줬음에도 코드에 잘못 반영한 순수 사람 실수입니다.
구현된 기능
- MultiLineTextBox 기반 탭 에디터
- 파일 메뉴: New / Open / Save / Save As / Close Tab / Exit
- 키보드 단축키: Ctrl+N/O/S, Ctrl+Shift+S, Ctrl+W
- 변경 감지 (dirty 상태) -> 탭 헤더에 표시
기술 스택
| 항목 | 값 |
|---|---|
| 언어 | C# 13 / .NET 10 |
| UI 프레임워크 | Aprillz.MewUI 0.9.1 |
| 빌드 | NativeAOT 대상 |
| AI 도구 | GitHub Copilot + HandMirror MCP |
MCP 생태계와 미래

MCP(Model Context Protocol)의 핵심 가치
MCP 프로토콜 덕분에 AI 에이전트가 학습 시점에 존재하지 않던 지식을 런타임에 동적으로 획득할 수 있습니다. 단순한 도구가 아니라 AI 에이전트의 능력 경계를 확장하는 인프라입니다.
Microsoft Learn MCP와 함께 사용하기
두 MCP 서버를 조합하면 .NET 개발에서 AI의 약점을 크게 보완할 수 있습니다:
- HandMirror: API가 “어떻게 생겼는가” (실제 시그니처)
- Microsoft Learn MCP: “어떻게 써야 하는가” (공식 문서, 모범 사례)
향후 확장 계획
- IKVM 활용한 Java .class/.jar 파일 검사
- 네이티브 라이브러리 심볼 테이블 분석
- 다국어 런타임 지원
HandMirror MCP 시작하기
NuGet에 게시되어 있으며, GitHub에서 소스 코드를 확인할 수 있습니다. .NET 8.0 SDK 이상이 필요합니다.
VS Code (GitHub Copilot) 설정
워크스페이스의 .vscode/mcp.json에 추가합니다:
{
"servers": {
"HandMirrorMcp": {
"type": "stdio",
"command": "dnx",
"args": ["HandMirrorMcp", "--yes"]
}
}
}
Claude Desktop 설정
{
"mcpServers": {
"handmirror": {
"command": "dnx",
"args": ["HandMirrorMcp", "--yes"]
}
}
}
주요 사용법 (자연어로!)
- “Aprillz.MewUI 패키지의 네임스페이스와 타입을 보여줘”
- “MultiLineTextBox 클래스의 프로퍼티와 메서드를 알려줘”
- “CS0246 오류가 나는데, 이 타입을 제공하는 NuGet 패키지를 찾아줘”
- “System.Text.Json 6.0.0에 알려진 보안 취약점 확인해줘”
핵심 인사이트
1. AI의 약점은 도구로 극복 가능합니다
“AI가 학습한 적 없는 프레임워크”는 AI 에이전트의 약점입니다. 하지만 실제 바이너리를 검사하는 도구가 있으면 이 약점은 상쇄됩니다.
2. 정확한 정보를 얻어도 실수는 발생합니다
도구가 주는 정보의 정확성과, 그 정보를 코드에 반영하는 정확성은 별개입니다. 결국 검증은 필요합니다.
3. AI 에이전트와 함께라면 1인 개발의 한계가 달라집니다
과거에 수십 명이 수년간 만들던 프로젝트를, AI 에이전트의 도움으로 한 사람의 사이드 프로젝트로 시작할 수 있게 되었습니다.
MCP는 단순한 도구가 아닙니다. AI 에이전트의 능력 경계를 확장하는 인프라입니다.
NxtCloud Workshop