아래 URL 을 참고하여 설치한다.
https://docs.astral.sh/uv/getting-started/installation/
% uv init mcp-server --python 3.11
% cd mcp-server
% uv venv
% source .venv/bin/activate
% uv add "mcp[cli]"
% cat pyproject.toml
from typing import Any
import httpx
from mcp.server.fastmcp import FastMCP
import time
# FastMCP 서버 초기화
mcp = FastMCP("exoluse")
@mcp.tool(
name="get_family_info",
description="권한 정보를 반환할 때 같이 조회합니다. "
)
def get_family_info(id: str):
info = {
"exoluse" : "master",
"rlftns" : "admin",
"lsy" : "user"
}
return info[id]
@mcp.tool(
name="get_permission_info",
description="""
권한 정보 취득 Tool
가장 먼저 권한 정보를 반환합니다.
"""
)
def get_permission_info(name: str):
info = {
"exoluse" : "master",
"rlftns" : "admin",
"lsy" : "user"
}
return info
@mcp.tool(
name="get_category_info",
description="""
카테고리 정보 취득 Tool
권한 정보를 취득한 후 카테고리 정보를 반환합니다.
"""
)
def get_category_info(permission: str):
category = {
"master" : ["all"],
"admin" : ["sport", "music", "movie"],
"user" : ["music"]
}
return category[permission]
@mcp.tool(
name="get_channel_info",
description="""
채널 정보 취득 Tool
카테고리 정보를 취득한 후 채널 정보를 반환합니다.
"""
)
def get_platform_info(category: list):
# list 를 받아 채널 정보를 반환합니다.
platform = {
"all" : ["youtube", "naver", "kakao", "tiktok"],
"sport" : ["youtube", "naver"],
"music" : ["kakao"],
"movie" : ["naver", "kakao"]
}
# list 는 배열 타입이다.
# 예시 : list = ["music", "sport"] ==> ["youtube", "naver", "kakao"] 가 되도록 설계
new_channel = []
for i in category:
new_channel.append(platform[i])
return new_channel
if __name__ == "__main__":
# 서버 초기화 및 실행
mcp.run(transport='stdio')
편집 후 claude desktop 을 종료한다.
{
"mcpServers": {
"exoluse": {
"command": "uv",
"args": [
"--directory",
"/Users/exoluse/Desktop/dev/mcp/mcp-server",
"run",
"server.py"
]
}
}
}
7-3 에서 등록한 따끈한 mcp server가 보인다.
망치 모양을 클릭하면 이런식으로 목록 확인이 가능하다.
이 뭔 개소리야?
platform = {
"all" : ["youtube", "naver", "kakao", "tiktok"],
"sport" : ["youtube", "naver"],
"music" : ["kakao"],
"movie" : ["naver", "kakao"]
}
category = {
"master" : ["all"],
"admin" : ["sport", "music", "movie"],
"user" : ["music"]
}
info = {
"exoluse" : "master",
"rlftns" : "admin",
"lsy" : "user"
}
Add new global MCP server 클릭
아래와 같이 입력
{
"mcpServers": {
"exoluse": {
"command": "uv",
"args": [
"--directory",
"/Users/exoluse/Desktop/dev/mcp/mcp-server",
"run",
"server.py"
]
}
}
}
MCP 를 해보니 AI 개발이 뭔가 좀... 장난과 놀이의 중간 쯤으로 느껴진다.
Langchain 을 만들어서 llm 과 데이터와 프롬프트를 연결하여 삽질했던 시간을 생각하면
MCP는 그걸 아주 쉽게 딸깍 해낸 것이다...