IT/AI

[MCP] MCP 구축기

어린이개발자 2025. 6. 10. 22:46

아는분 회사에서 스터디 겸 사이드 프로젝트를 진행하는데 MCP 서버를 작게나마 구축하는 역할을 맡게 되었다. 그때 경험했던 일련의 과정들을 정리하고자 한다.

 

1. 정의

- AI 모델과 외부 데이터 소스 간의 원활한 통신을 가능하게 만드는 프로토콜 (AI 를 위한 USB 포트에 비유)

 

2. 역할

- AI 모델이 파일, 데이터베이스, API, 시스템 정보 등에 접근 가능

- 사용자 허가를 통해 안전한 데이터 연동

- 다양한 AI 모델 에서 공통적으로 사용할 수 있는 표준 인터페이스 제공

 

3. 구조

1) MCP Client

  - Claude Desktop

  - Cursor

  - 커스텀 Client

 

2) MCP Server

  - FastMCP

    - 다양한 언어 기반의 SDK 존재

    - Python 으로 샘플 생성

 

3) MCP Inspector

  - MCP Server 의 모든 기능 테스트

 

4. 기능

1) 리소스(Resource)

- AI 모델에게 필요한 정보와 컨텍스트 제공

- @mcp.resource(“config://app”)

 

2) 도구(tool)

- LLM 이 실행할 수 있는 함수로 등록

- @mcp.tool()

 

3) 프롬프트(prompt)

- LLM 과의 상호작용을 위한 템플릿

- 입력된 message 를 받아 LLM 에 전달할 재사용 가능한 지시문 제공

- @mcp.prompt()

 

5. 샘플링

1) 필요한 파일 및 라이브러리 설치

- Claude Desktop

- Python 버전 (3.10 이상)

- uvx, ux 등

 

2) 프로젝트 생성

- uvx create-mcp-server —path my_app(앱 이름)

 

3) 가상 환경 생성

- python3 -m vent myenv(가상환경 이름)

 

4) 가상 환경 활성화

- source myenv/bin/activate

 

5) 가상 환경에서 패키지 설치

- python -m pip install mcp-server

 

6) mcp server 로 활용할 .py 파일 생성 (여기선, demo.py 로 생성)

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Demo")
@mcp.tool()
def add(a: int, b: int) -> int:
    return a + b

@mcp.tool()
def multiply(a: int, b: int) -> int:
    return a * b

@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    return f"Hello, {name}!"

@mcp.prompt()
def review_code(code: str) -> str:
    return f"Please review this code:\n\n{code}"

if __name__ == "__main__":
    mcp.run

 

해당 파일 작성 후 my_app/src/my_app/demo.py 경로로 저장

 

7) mcp[cli] 설치

- pip3 install "mcp[cli]"

 

8) mcp server 실행

- mcp install demo.py

- mcp dev demo.py

 

위 과정 실행 시, 결과 MCP Client(Claude Desktop) 측에 신규로 생성한 MCP Server(demo.py) 등록

@mcp.tool() 로 등록한 기능을 MCP Client 에서 사용할 수 있다.

사용 결과는 아래와 같다.

 

 

프롬프트에 더해달라, 곱해달라고 요청한 것은 자동으로 add, multiply 함수를 요청한 것으로 인식하여 이를 사용할 것인지 질문하는 것을 확인할 수 있었다. 그러나 빼달라고 요청한 것은 관련 함수를 등록한 것이 없기 때문에 자체적으로 응답하는 것을 확인했다.