Skip to main content
Glama
server.py5.2 kB
""" FastMCP 서버 초기화 (FastMCP Server Initialization) 이 파일은 MCP 서버의 핵심 설정과 초기화를 담당합니다. Java로 비유하면 Spring Boot의 @SpringBootApplication이 있는 메인 클래스와 유사합니다. FastMCP란? - MCP(Model Context Protocol) 서버를 쉽게 만들 수 있게 해주는 Python 프레임워크입니다. - Java의 Spring Framework처럼 서버 구축을 간편하게 해줍니다. - AI 모델(Claude 등)이 사용할 수 있는 도구(tools)를 등록하고 관리합니다. """ # logging: Python의 표준 로깅 라이브러리 (Java의 log4j, slf4j와 동일) import logging # FastMCP: MCP 서버를 만들기 위한 메인 클래스 # Java의 @SpringBootApplication과 유사한 역할입니다. from fastmcp import FastMCP # 설정 파일과 도구 등록 함수를 import from app.core.config import config from app.routers.tool_router import register_tools # ======================================== # 로깅 설정 (Logging Configuration) # ======================================== # logging.basicConfig(): 로깅 시스템의 기본 설정을 합니다. # Java의 log4j.properties 또는 logback.xml 설정과 동일한 역할입니다. logging.basicConfig( level=config.LOG_LEVEL, # 로그 레벨 설정 (예: INFO, DEBUG, ERROR) # format: 로그 메시지의 형식을 정의합니다. # %(asctime)s = 시간 (Java의 %d{yyyy-MM-dd HH:mm:ss}와 유사) # %(name)s = 로거 이름 (보통 모듈 이름) # %(levelname)s = 로그 레벨 (INFO, ERROR 등) # %(message)s = 실제 로그 메시지 format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", ) # logger: 이 모듈(파일)에서 사용할 로거 인스턴스를 생성합니다. # __name__은 현재 모듈의 이름을 자동으로 가져옵니다. (예: "app.server") # Java로 비유하면: # private static final Logger logger = LoggerFactory.getLogger(ServerClass.class); logger = logging.getLogger(__name__) def create_app() -> FastMCP: """ FastMCP 애플리케이션을 생성하고 설정합니다. Java Spring Boot로 비유하면: @Bean public Application createApp() { ... } 실행 흐름: 1. FastMCP 인스턴스를 생성합니다. (서버 객체 생성) 2. 도구(tools)를 등록합니다. (API 엔드포인트 등록과 유사) 3. 설정이 완료된 서버 인스턴스를 반환합니다. 반환값 (Returns): FastMCP: 설정이 완료된 MCP 서버 인스턴스 MCP의 "도구(Tool)"란? - AI 모델이 호출할 수 있는 함수/기능입니다. - Java의 REST API 엔드포인트(@GetMapping, @PostMapping)와 비슷한 개념입니다. - 예: "ask_question"이라는 도구를 등록하면, AI가 이 함수를 호출해서 질문을 할 수 있습니다. """ # 로그 출력: 서버 생성 시작을 알립니다. # logger.info()는 Java의 logger.info()와 완전히 동일합니다. logger.info(f"Creating FastMCP server: {config.AGENT_NAME}") # ======================================== # FastMCP 인스턴스 생성 # ======================================== # FastMCP 객체를 생성합니다. 생성자에 에이전트 이름을 전달합니다. # Java로 비유하면: # FastMCP mcp = new FastMCP(config.getAgentName()); # # 이 객체가 실제 MCP 서버의 핵심입니다. # 모든 도구(tool) 등록, 요청 처리 등이 이 객체를 통해 이루어집니다. mcp = FastMCP(config.AGENT_NAME) # ======================================== # 도구 등록 (Tool Registration) # ======================================== # register_tools() 함수를 호출하여 AI가 사용할 수 있는 도구들을 등록합니다. # Java Spring으로 비유하면: # - @RestController 클래스의 @GetMapping, @PostMapping 메서드들을 등록하는 것과 유사합니다. # # tool_router.py 파일에서 @mcp.tool() 데코레이터로 정의된 함수들이 등록됩니다. # 예: ask_question(), get_greeting() 같은 함수들 register_tools(mcp) # 로그 출력: 서버 생성 완료를 알립니다. logger.info("FastMCP server created successfully") # 설정이 완료된 MCP 서버 인스턴스를 반환합니다. return mcp # ======================================== # 전역 MCP 인스턴스 (Global MCP Instance) # ======================================== # create_app()을 호출하여 MCP 서버 인스턴스를 생성하고 전역 변수에 저장합니다. # 이것은 싱글톤 패턴과 유사합니다. # # Java로 비유하면: # public static final FastMCP mcp = createApp(); # # 왜 전역 변수로 만드나요? # - 애플리케이션 전체에서 하나의 MCP 서버 인스턴스만 사용하기 위해서입니다. # - entrypoint.py에서 이 mcp 인스턴스를 import해서 서버를 실행합니다. # # Python의 모듈 시스템: # - Python에서는 모듈(파일)을 import할 때, 그 파일의 최상위 코드가 한 번만 실행됩니다. # - 따라서 이 mcp 변수는 프로그램이 실행되는 동안 딱 한 번만 생성됩니다. mcp = create_app()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tmzmfldkqls/test-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server