[AI] mcp server + claude desktop 으로 쉽게 딸깍~

늘 공부하는 괴짜·2025년 4월 21일
0

AI : mcp

목록 보기
1/9

1. uv 설치부터

아래 URL 을 참고하여 설치한다.
https://docs.astral.sh/uv/getting-started/installation/

2. uv 초기화

% uv init mcp-server --python 3.11
% cd mcp-server
% uv venv 

3. 가상환경 활성화

% source .venv/bin/activate

4. uv에 mcp 추가

% uv add "mcp[cli]"

5. toml 파일 확인

% cat pyproject.toml

6. server.py

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')

7. claude desktop 열기

7-1. Claude > 설정

7-2. 개발자 > 설정편집

7-3. claude_desktop_config.json

편집 후 claude desktop 을 종료한다.

{
  "mcpServers": {
    "exoluse": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/exoluse/Desktop/dev/mcp/mcp-server",
        "run",
        "server.py"
      ]
    }
  }
}

7-4. 다시 열어보면

7-3 에서 등록한 따끈한 mcp server가 보인다.

8. 이제 한번 물어보자.

8-1. 내가 등록한 mcp tool

망치 모양을 클릭하면 이런식으로 목록 확인이 가능하다.

8-1. 누가 너튜브 권한이 있는가?

이 뭔 개소리야?

8-2. 일단 가족 정보 도구에 접근한다.

8-3. 권한 정보 도구에 접근한다.

8-4. 권한 카테고리 도구에 접근한다.

8-5. 채널(플랫폼) 도구에 접근한다.

8-6. claude 가 적당히 얼버무려 주긴 했는데...

9. 확인

  • 일단 너튜브는 "all" 과 "sport" 에만 있다.
platform = {
    "all" : ["youtube", "naver", "kakao", "tiktok"],
    "sport" : ["youtube", "naver"],
    "music" : ["kakao"],
    "movie" : ["naver", "kakao"]
}
  • "all" 과 "sport" 는 "master", "admin" 에만 있다.
category = {
    "master" : ["all"],
    "admin" : ["sport", "music", "movie"],
    "user" : ["music"]
}
  • "master" 는 "exoluse" 이고 "admin" 은 "rlftns" 이다.
info = {
    "exoluse" : "master",
    "rlftns" : "admin",
    "lsy" : "user"
}
  • 결과는 나이스!

10. cursor ai 에서도 쉽게 구동된다.

10-1. Cursor Settings > MCP

Add new global MCP server 클릭

아래와 같이 입력

{
  "mcpServers": {
    "exoluse": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/exoluse/Desktop/dev/mcp/mcp-server",
        "run",
        "server.py"
      ]
    }
  }
}

10-2. Agent 로 질문을 던져보자.

Finally

MCP 를 해보니 AI 개발이 뭔가 좀... 장난과 놀이의 중간 쯤으로 느껴진다.
Langchain 을 만들어서 llm 과 데이터와 프롬프트를 연결하여 삽질했던 시간을 생각하면
MCP는 그걸 아주 쉽게 딸깍 해낸 것이다...

profile
인공지능이라는 옷을 입었습니다. 뭔가 멋지면서도 잘 맞습니다.

0개의 댓글