AI Sparkup

복잡한 AI 세상을 읽는 힘

Gradio로 MCP 서버 구축하기: LLM을 위한 도구 개발 가이드

AI 기술이 급속도로 발전하면서, 대규모 언어 모델(LLM)의 활용 범위도 점점 넓어지고 있습니다. 하지만 모든 LLM에는 한계가 있습니다. 예를 들어, Claude나 GPT 같은 모델들은 텍스트 요약이나 창의적인 글쓰기는 잘하지만, 정확한 수치 계산이나 특정 데이터 처리는 제대로 하지 못하는 경우가 많습니다. 이런 한계를 극복하기 위해 등장한 것이 바로 ‘Model Context Protocol(MCP)’입니다.

이 글에서는 Python 라이브러리인 Gradio를 활용해 단 5줄의 코드로 MCP 서버를 구축하는 방법에 대해 알아보겠습니다.

MCP란 무엇인가?

Model Context Protocol(MCP)은 LLM 애플리케이션과 외부 데이터 소스 및 도구 간의 원활한 통합을 가능하게 하는 개방형 프로토콜입니다. 쉽게 말해 MCP는 AI 애플리케이션을 위한 USB-C 포트와 같은 역할을 합니다. 다양한 기기를 연결할 수 있는 표준 포트처럼, MCP는 LLM이 다양한 외부 도구와 소통할 수 있는 표준화된 방법을 제공합니다.

MCP 개념 다이어그램 MCP는 LLM과 다양한 도구들을 연결하는 표준 프로토콜 (출처: Medium)

MCP 서버가 필요한 이유

LLM은 텍스트 생성과 이해에 뛰어나지만, 다음과 같은 작업에는 한계가 있습니다:

  1. 정확한 계산: 복잡한 수학 계산이나 통계 처리
  2. 외부 데이터 접근: 최신 정보 검색이나 특정 데이터베이스 쿼리
  3. 특수 기능 수행: 이미지 생성/편집, 오디오 합성 등

MCP 서버는 이러한 한계를 극복하게 해주는 도구를 제공합니다. LLM이 필요할 때 이 도구들을 호출하여 자신의 기능을 확장할 수 있게 하는 것이죠.

Gradio란?

Gradio는 매월 100만 명 이상의 개발자가 사용하는 Python 라이브러리로, 머신러닝 모델을 위한 인터페이스를 쉽게 구축할 수 있게 해줍니다. 단순히 UI를 만드는 것을 넘어 API 기능도 제공하며, 이제는 MCP 서버로서의 기능도 지원합니다.

Gradio로 MCP 서버 구축하기

준비사항

먼저 필요한 패키지를 설치합니다:

pip install "gradio[mcp]"

이 명령어는 Gradio와 함께 MCP 관련 의존성을 설치합니다. 또한 Claude Desktop, Cursor, Cline 같은 MCP 프로토콜을 지원하는 LLM 애플리케이션(MCP 클라이언트)이 필요합니다.

기본 구현 방법 (5줄 코드 예제)

Gradio로 MCP 서버를 구축하는 것은 놀랍도록 간단합니다. 다음은 기본적인 예시 코드입니다:

import gradio as gr

def my_function(input1, input2):
    """내 함수에 대한 설명"""
    return process(input1, input2)

demo = gr.Interface(fn=my_function, inputs=["text", "text"], outputs="text")
demo.launch(mcp_server=True)  # MCP 서버 활성화!

위 코드에서 가장 중요한 부분은 마지막 줄입니다. mcp_server=True 옵션을 .launch() 메서드에 추가하는 것만으로 Gradio 앱이 MCP 서버로 동작하게 됩니다!

실제 활용 사례: 단어 속 글자 세기 예제

LLM은 단어 내 특정 글자의 수를 세는 간단한 작업도 종종 실수를 합니다. 예를 들어 “strawberry”에 ‘r’이 몇 번 나오는지 물어보면 잘못된 답을 줄 수 있습니다. 이런 문제를 해결하기 위한 MCP 도구를 만들어봅시다.

import gradio as gr

def letter_counter(word, letter):
    """단어 내 특정 글자의 등장 횟수를 세는 함수
    
    Args:
        word: 분석할 단어나 문장
        letter: 세고자 하는 글자
        
    Returns:
        해당 글자가 단어에 나타난 횟수
    """
    return word.lower().count(letter.lower())

demo = gr.Interface(
    fn=letter_counter,
    inputs=["text", "text"],
    outputs="number",
    title="글자 수 세기",
    description="단어 내 특정 글자가 몇 번 등장하는지 세기"
)

demo.launch(mcp_server=True)

이 코드를 실행하면 다음과 같은 일이 발생합니다:

  1. 일반 Gradio 웹 인터페이스 시작
  2. MCP 서버 시작
  3. 콘솔에 MCP 서버 URL 출력

MCP 서버는 다음 URL에서 접근할 수 있습니다:

http://your-server:port/gradio_api/mcp/sse

Gradio는 자동으로 letter_counter 함수를 LLM이 사용할 수 있는 MCP 도구로 변환합니다. 이때 함수의 docstring이 도구 설명과 매개변수 설명을 생성하는 데 사용됩니다.

 Gradio 앱의 API 보기에서 MCP 설정을 확인할 수 있습니다. (출처: Hugging Face)

MCP 클라이언트에 연결하기

이제 만든 MCP 서버를 LLM 애플리케이션에 연결해야 합니다. 클라이언트(Cursor, Cline 등)의 설정에 다음 구성을 추가합니다:

{
  "mcpServers": {
    "gradio": {
      "url": "http://your-server:port/gradio_api/mcp/sse"
    }
  }
}

일부 MCP 클라이언트(특히 Claude Desktop)는 아직 SSE 기반 MCP 서버를 지원하지 않습니다. 이 경우 mcp-remote 같은 도구를 사용할 수 있습니다:

{
  "mcpServers": {
    "gradio": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://your-server:port/gradio_api/mcp/sse"
      ]
    }
  }
}

Gradio-MCP 통합의 핵심 기능

1. 도구 변환

Gradio 앱의 각 API 엔드포인트는 자동으로 해당 이름, 설명, 입력 스키마를 가진 MCP 도구로 변환됩니다. 도구와 스키마를 보려면 http://your-server:port/gradio_api/mcp/schema를 방문하거나 Gradio 앱 푸터의 “View API” 링크를 클릭한 다음 “MCP”를 클릭하세요.

2. 환경 변수 지원

MCP 서버 기능을 활성화하는 방법은 두 가지가 있습니다:

# 1. mcp_server 매개변수 사용
demo.launch(mcp_server=True)

# 2. 환경 변수 사용
export GRADIO_MCP_SERVER=True

3. 파일 처리

MCP 서버는 다음과 같은 파일 데이터 변환을 자동으로 처리합니다:

  • base64 인코딩된 문자열을 파일 데이터로 변환
  • 이미지 파일 처리 및 올바른 형식으로 반환
  • 임시 파일 저장소 관리

입력 이미지와 파일은 전체 URL(“http://…” 또는 “https://…”)로 전달하는 것이 강력히 권장됩니다. MCP 클라이언트가 항상 로컬 파일을 올바르게 처리하지는 않기 때문입니다.

4. 허깅페이스 Spaces에서의 호스팅

Gradio 애플리케이션을 Hugging Face Spaces에 무료로 게시하여 무료 호스팅 MCP 서버를 보유할 수 있습니다. 예시: https://huggingface.co/spaces/abidlabs/mcp-tools

이 Space를 사용하기 위해 다음 설정을 MCP 클라이언트에 추가할 수 있습니다:

{
  "mcpServers": {
    "gradio": {
      "url": "https://abidlabs-mcp-tools.hf.space/gradio_api/mcp/sse"
    }
  }
}

마치며

Gradio를 사용하여 MCP 서버를 구축하면 LLM에 다양한 종류의 맞춤 기능을 쉽게 추가할 수 있습니다. 이제 우리는 LLM의 기본 능력을 넘어, 계산, 이미지 처리, 데이터 분석 등 더 많은 작업을 수행할 수 있는 강력한 AI 시스템을 만들 수 있게 되었습니다.

MCP와 Gradio의 결합은 AI 개발자들에게 큰 기회를 제공합니다. 간단한 Python 함수로 LLM의 능력을 확장할 수 있게 되었으니, 이제 여러분은 어떤 도구를 만들어볼 계획인가요? 데이터 시각화, 복잡한 계산, 외부 API 연동 등 가능성은 무한합니다.

추가 자료

더 자세히 알아보고 싶다면 다음 자료를 참고하세요:

참고자료: How to Build an MCP Server with Gradio

Comments