원격 MCP 서버 구축 및 배포: 지출 추적기를 Claude Desktop에 연결하며 얻은 교훈
요약
본 글은 개인 재무 추적을 위해 Claude Desktop과 연동되는 원격 MCP 서버 구축 과정을 다룹니다. 이 서버는 지출 추적기를 호출 가능한 도구 세트로 노출하며, 이를 통해 AI 비서와의 대화만으로 데이터베이스에 경비를 기록하고 조회할 수 있게 합니다. 특히 MSIX 패키징 환경에서의 설정 파일 경로 찾기나 OAuth 인증 생명주기 관리 등 실제 배포 과정에서 겪는 심화된 기술적 문제점들을 깊이 있게 분석했습니다.
핵심 포인트
- MCP를 활용하여 AI 비서와 직접 연동되는 원격 도구 서버 구축 가능
- MSIX 패키징 환경의 특성상 설정 파일 경로 접근에 대한 이해 필요
- OAuth 인증 처리는 단순 튜토리얼을 넘어선 사양(spec) 기반 구현 요구
문제점
개인 재무 추적은 보통 단일 거래를 기록하기 위해 앱, 스프레드시트 또는 브라우저 탭 사이를 전환해야 함을 의미합니다. 저는 구조화된 저장소나 내 데이터에 대한 통제권을 포기하지 않으면서도, 이상적으로는 AI 비서와의 자연스러운 대화를 통해 지출을 캡처하고 조회할 수 있는 마찰이 적은 방법을 원했습니다.
Model Context Protocol (MCP)이 이를 가능하게 했습니다. 이는 Claude Desktop과 같은 AI 클라이언트가 표준 인터페이스를 통해 제가 소유하고 제어하는 서버가 노출하는 도구(tool)를 호출할 수 있게 해줍니다.
해결책
저는 지출 추적기를 호출 가능한 도구 세트로 노출하는 원격 MCP 서버를 구축 및 배포했고, 이를 라이브 데이터 소스로 Claude Desktop에 직접 연결했습니다.
스택 및 아키텍처:
- FastMCP: MCP 프로토콜을 통해 도구를 정의하고 노출합니다 (add_expense, get_summary, list_transactions, 카테고리 관리).
- aiosqlite: 비동기(async) 안전한 데이터베이스 접근을 위해 사용되었으며, 비동기 서버에서 호출 차단(blocking calls)을 방지하기 위해 동기식 sqlite3 연결에서 마이그레이션되었습니다.
- 임시 쓰기 디렉터리 (Python의 tempfile 이용): 배포 대상 환경이 고정된 위치에 쓰기 가능한 경로를 보장하지 않기 때문에 데이터베이스 저장을 위해 사용되었습니다.
- Horizon에 원격으로 배포한 후, Claude Desktop 설정에서 커넥터로 등록했습니다.
저장소는 여기서 공개되어 있습니다: github.com/AliRaza3485/test-remote-mcp-server
진행 중 겪었던 문제점
입문용 MCP 자료에서는 잘 다루지 않으며, 실제 디버깅에 시간이 걸린 두 가지 문제가 있었습니다:
-
Windows에서 클라이언트 설정 찾기.
Claude Desktop은 MSIX 패키지 형태로 배포되는데, 이는 Android가 APK를 격리하는 방식과 유사하게 Microsoft의 샌드박스 앱 패키징 형식입니다. MSIX 앱은 일반적인 Windows 설치가 사용하는 파일 경로에 쓰지 않습니다. 운영체제가 해당 경로를 가상화하여 앱에게는 표준 위치처럼 보이게 하지만, 실제 파일은 고립된 패키지별 디렉터리에 존재합니다. 이로 인해 설정 파일이 표준 문서에서 암시하는 곳에 있지 않았습니다. 올바른 샌드박스 경로를 찾으려면 '예상되는' 경로를 신뢰하기보다 MSIX 가상화 동작을 직접 확인해야 했습니다. -
기본 이상의 OAuth 처리.
대부분의 MCP 빠른 시작 가이드는 외부 인증이 없는 로컬, 도구 전용 서버만 시연합니다. 서버가 외부 서비스와 인증해야 하는 순간부터는 리다이렉트를 처리하고, 반환된 코드를 토큰으로 교환하며, 이를 안전하게 저장하고, 만료될 때마다 갱신하는 과정이 필요합니다. 이 모든 과정을 초급 가이드에서는 다루지 않습니다. 이것을 제대로 구현하려면 튜토리얼보다는 OAuth 사양(spec) 자체를 참고해야 했습니다.
결과
그 결과는 Claude Desktop의 일반 언어 지침—예를 들어, 금액과 카테고리로 경비를 기록하는 것—이 MCP를 통해 배포된 서버로 라우팅되고 데이터베이스에 영구 저장되는 작동 가능한 환경입니다. 별도의 앱이나 수동 양식이 필요하지 않습니다.
더 중요한 것은, 이 전체 과정(실제 배포, 실제 클라이언트 통합, 실제 플랫폼별 실패 모드)을 구축하는 과정에서 장난감 같은 예시로는 발견할 수 없는 문제점들—패키징의 특이사항, 비동기 데이터베이스 접근, 인증 생명주기 관리 등—이 드러났다는 점입니다.
향후 계획
현재 LangGraph를 사용하여 더 일반적인 에이전트 워크플로우로 확장하고 있습니다. 여기에는 상태 그래프(state graphs), 체크포인팅(checkpointing), 그리고 인간 개입형 중단(human-in-the-loop interrupts) 기능이 포함되며, 목표는 상태를 가진 에이전트 로직을 MCP가 노출하는 도구와 결합하는 것입니다.
MCP나 LangGraph를 사용하여 개발하고 있고 의견을 나누고 싶다면, 기꺼이 대화에 참여하겠습니다.
GitHub: github.com/AliRaza3485
Repo: github.com/AliRaza3485/test-remote-mcp-server
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기