Practical Guide to Building MCP Servers with FastMCP and Str
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

MCP 서버 구축의 실전 교훈

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • 대상자: MCP 서버를 개발하거나 AI 에이전트와 연동하는 개발자
  • 난이도: 중급 이상 (MCP 프로토콜 이해 및 서버 구축 경험 필요)

핵심 요약

  • MCP 서버의 핵심 구성 요소:
  • @mcp.resource()@mcp.tool()을 활용한 도구(Tools)자원(Resources) 정의
  • 프롬프트(Prompts)를 통해 LLM과의 상호작용 구현
  • 트랜스포트 방식의 진화:
  • stdioSSEStreamable HTTP (현재 최적화된 방식)
  • 라이브러리 활용:
  • FastMCP 사용을 권장 (스트리밍 지원, 빠른 배포)

섹션별 세부 요약

1. MCP 서버의 주요 구성 요소

  • 도구(Tools): 특정 작업을 수행하는 함수 (예: @mcp.tool("math/add"))
  • 자원(Resources): 파라미터 기반의 데이터 조회 (예: @mcp.resource("availability://{user_id}/date"))
  • 프롬프트(Prompts): LLM에 전달되는 템플릿 (예: PyAirbyte에서 사용)

2. 트랜스포트 방식 비교

  • stdio: 로컬 실행 시 사용 (예: uv 명령어) → 광범위한 도구에는 부적합
  • SSE: 원격 서버에서 사용 (Express, FastMCP 서버 필요) → Claude Desktop 미지원
  • Streamable HTTP:
  • 장점: 스케일링, 재연결 지원, Vercel 호환
  • 단점: 현재 Client 툴 지원 미흡 (예: --transport http 파라미터 사용 중)

3. 라이브러리 및 코드 예시

  • FastMCP:

```python

from fastmcp import MCPApp

app = MCPApp()

@app.tool("math/add")

def add(a: int, b: int) -> int:

return a + b

```

  • Streamable HTTP 구현:

```python

from fastapi import FastAPI, Request

from fastapi.responses import StreamingResponse

```

4. 클라이언트 툴 호환성 문제

  • 지원되는 클라이언트:
  • 로컬 서버: Claude Desktop, Cline, Cursor
  • 원격 서버: Cline, Cursor, Claude Code
  • 환경 변수 전달 지원: Cursor, Claude Code (Heroku 배포 예시)

5. MCP 프로토콜의 진화

  • 문제점:
  • LLM의 정보가 지나치게 오래된 경우 (예: ChatGPT)
  • 로깅 에러의 불충분성
  • 추천: 최신 명세 문서 참조, Streamable HTTP 트랜스포트 채택

결론

  • Streamable HTTP 트랜스포트 사용을 권장하고, FastMCP 라이브러리로 서버 구축
  • 클라이언트 호환성을 고려해 mcp.json 구성 시 Cursor 또는 Claude Code 사용
  • MCP 프로토콜의 변화성을 인지하고, 최신 명세 문서를 항상 참고하세요.