Elixir로 MCP 서버 구축하기

Building a MCP Server in Elixir

작성자
발행일
2025년 11월 25일

핵심 요약

  • 1 AI 도구와 애플리케이션 연동을 위한 MCP(Model Context Protocol) 서버를 Elixir와 Anubis 라이브러리를 활용하여 구축하는 과정을 상세히 설명합니다.
  • 2 TIL(Today I Learned) 게시물 생성을 예시로 들어, MCP 서버의 도구(tool) 및 리소스(resource) 구현, 데이터 제공, 사용자 인증 방법을 구체적으로 제시합니다.
  • 3 AI 생성 콘텐츠의 예측 불가능성으로 인해 초안 기능 및 삭제 기능의 중요성이 부각되었으며, AI 연동 시 콘텐츠 조정 및 검토 과정이 필수적임을 강조합니다.

도입

이 글은 AI 도구와 애플리케이션 간의 상호작용을 위한 MCP(Model Context Protocol) 서버 구축 경험을 공유합니다. MCP 서버는 AI 툴이 외부 데이터를 가져오거나 애플리케이션 내에서 특정 작업을 수행하도록 돕는 "API"입니다. 저자들은 TIL(Today I Learned) 웹사이트에 AI 툴을 통해 게시물을 생성하는 유스케이스를 중심으로 Elixir 언어와 Anubis 라이브러리를 사용해 MCP 서버를 개발했습니다. 이 프로젝트는 AI 학습 내용을 TIL 게시물로 신속하게 전환하려는 필요성에서 시작되었습니다.

MCP 서버는 Elixir와 Anubis 라이브러리를 활용하여 구축되었습니다.

1. MCP 서버 및 도구(Tool) 정의

  • MCP 서버는 TIL 서버로 정의되며, Tilex.MCP.NewPost와 같은 도구 컴포넌트를 포함합니다.

  • 새 게시물 생성 도구(NewPost): :tool 타입으로 구현되며, title, body, channel 필드를 포함하는 스키마를 가집니다. AI가 올바르게 사용하도록 각 필드에 상세한 설명을 제공해야 합니다.

2. 데이터 제공을 위한 리소스(Resource) 추가

  • 채널 목록 리소스(ListChannels): AI가 사용할 채널 목록을 제공하는 :resource 타입 컴포넌트입니다. NewPost 도구의 channel 필드 설명은 AI가 ListChannels 리소스에서 정보를 얻도록 유도합니다.

3. MCP 서버 인증 구현

  • 사용자 간 공유 서버 인스턴스 문제를 해결하기 위해, 각 도구/리소스 실행 시 요청 헤더(x-api-key)에서 현재 사용자를 직접 가져와 인증하는 방식을 채택했습니다.

4. 토큰 생성 및 AI 도구 연동

  • 사용자 프로필 페이지에서 MCP 토큰을 생성하고, 이를 Cursor나 Claude Code 같은 AI 도구에 설정하여 연동합니다.

5. 실제 작동 과정

  • AI에 TIL 게시물 작성을 요청하면, AI는 list_channels 리소스를 조회하고 new_post 도구를 호출하여 게시물을 생성합니다. 서버는 생성된 게시물 링크를 반환하여 사용자가 검토하고 게시할 수 있도록 안내합니다.

결론

MCP 서버 구현은 Anubis 라이브러리로 비교적 쉬웠으며, AI를 활용한 TIL 게시물 초안 생성 기능은 매우 유용합니다. 하지만 AI 생성 콘텐츠는 예측 불가능하여 부적절하거나 '환각' 현상을 보이기도 합니다. 이에 TIL 게시물 초안 저장, 수정 및 삭제 기능의 중요성을 깨달았습니다. AI 연동 시 데이터가 예측 불가능한 소스에서 유입되므로, 새로운 MCP 서버를 사용할 때는 콘텐츠 조정 및 검토(moderation) 과정이 필수적임을 강조합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!