-
Python으로 MCP Server 만들기Language/Python 2025. 3. 7. 16:23
프로젝트 생성
$ mkdir mcp-python-250309
소스코드
python
- server.py
대충 로그 찍어두고 서버 기동하자
from mcp.server.fastmcp import FastMCP import logging import sys # 로깅 설정 logging.basicConfig( level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.StreamHandler(sys.stdout) ] ) logger = logging.getLogger("mcp-server") # Create an MCP server # mcp = FastMCP("MCP 서버") mcp = FastMCP(name="MCP 서버", debug=True) # Add an addition tool @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" message = f"Add {a} and {b}" logger.info(message) # 로거를 통한 로그 출력 return a + b @mcp.tool() def echo_tool(message: str) -> str: """Echo a message as a tool""" log_message = f"Tool echo: {message}" logger.info(log_message) # 로거를 통한 로그 출력 return message @mcp.prompt() def echo_prompt(message: str) -> str: """Create an echo prompt""" log_message = f"Prompt echo: {message}" logger.info(log_message) return f"Please process this message: {message}" # Add a dynamic greeting resource @mcp.resource("greeting://{name}") def get_greeting(name: str) -> str: """Get a personalized greeting""" log_message = f"Greeting for: {name}" logger.info(log_message) return f"Hello, {name}!" @mcp.resource("echo://{message}") def echo_resource(message: str) -> str: """Echo a message as a resource""" log_message = f"Resource echo: {message}" logger.info(log_message) return f"Resource echo: {message}" if __name__ == "__main__": logger.info("Starting MCP server...") # transport 옵션을 변경해봅니다 mcp.run(transport="sse")
도커
- requirements.txt
mcp
- Dockerfile
FROM python:3.13-slim # pip 업그레이드 # RUN pip install --no-cache-dir --upgrade pip WORKDIR /app COPY docker/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 8000 CMD ["python", "server.py"]
- docker-compose.yml
services: mcp-python-250309: build: . image: gundam/mcp-python-250309:1.0.0 container_name: mcp-python-250309 ports: - "8000:8000" volumes: - ./src:/app restart: unless-stopped networks: - mcp-network environment: - PYTHONUNBUFFERED=1 - LOG_LEVEL=DEBUG - FASTMCP_PORT=8000 - FASTMCP_TRANSPORT=sse - FASTMCP_DEBUG=true - FASTMCP_HOST=0.0.0.0 networks: mcp-network: driver: bridge
프로젝트 실행
- 실행
# 이미지 빌드 및 컨테이너 시작 및 백그라운드 $ docker-compose up -d --build # 로그 확인 (백그라운드 실행 시) $ docker-compose logs -f # 서버 중지 $ docker-compose down # 동시 실행 $ docker-compose down & docker-compose up -d --build & docker-compose logs -f
- 콘솔
docker-compose down & docker-compose up -d --build & docker-compose logs -f Curser IDE에서 실행 및 테스트
MCP Server 추가 (sse)
MCP Server 추가 > mcp-python-250309 Chat해서 확인해 보기
2+6은? (mcp-python-250309)
2+6은? (mcp-python-250309) 잘된다..!!
첨고)
https://github.com/jlowin/fastmcp/issues/69
https://github.com/punkpeye/fastmcp?tab=readme-ov-file
https://github.com/modelcontextprotocol/python-sdk/pull/83
https://github.com/modelcontextprotocol/python-sdk/tree/main
'Language > Python' 카테고리의 다른 글
uv/uvx란 무엇이고 설치는? (0) 2025.03.07 selenium으로 크롤링하고 Slack에 메시지 전송 (2) 2024.11.24 파이썬으로 Slack 메시지 보내기 (0) 2024.11.24 ChromeDriverManager install 에러 (1) 2024.11.24 Python/Docker (2) 2022.09.02