Language/Python
Python으로 MCP Server 만들기
건담아빠
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
- 콘솔
Curser IDE에서 실행 및 테스트
MCP Server 추가 (sse)
Chat해서 확인해 보기
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