Claude AI and Code

Set up

  1. Create CLAUDE.md. And, write down contents that ai should be aware of
    • /init command 로 CLAUDE.md 파일을 생성해도 되지만, 기본적인 내용을 채워서 줌. 내 요구사황과 맞지 않음
    • markdown file - it needs three headers
  2. Create settings.json file under .claude folder - Project scope
  3. Set up plugins

MCP / Plugin / Subagent

MCP

Comands

Check and select model

  • After inputing the command below, it returns a list of model, and user can select one of them.
/model

Do everything under local scope

/plugin install {plugin-name} -s local

How to create subagents and set up plugins

Questions for terminologies

Make MCP vs Make MCP server & Form of results

네, 아주 정확한 지적입니다! MCP(프로토콜)를 만드는 것MCP 서버(도구)를 만드는 것은 완전히 다릅니다. 대부분의 사용자나 개발자가 “MCP를 만든다”라고 말할 때는 사실 “MCP 서버를 만든다”는 뜻입니다. 질문하신 ‘결과물의 형태’가 무엇인지, 규약(Protocol)구현체(Server)로 나누어 명확히 보여드릴게요.


  1. MCP (Model Context Protocol) = “법전” (이미 만들어짐)
    • 누가 만들었나? Anthropic과 파트너사들이 만들었습니다.
    • 만드는 행위: 규칙을 정하고 문서를 쓰는 것입니다.
    • 결과물의 형태: 문서 (Specification Document)
    • “서로 통신할 때는 JSON-RPC 2.0 형식을 써라.”
    • “연결할 때는 initialize라는 메시지를 먼저 보내라.”
    • 이런 규칙들이 적힌 텍스트 문서(Markdown)와 이를 구현한 SDK(라이브러리)가 결과물입니다.
    • 사용자님이 이걸 다시 만들 일은 거의 없습니다.
  2. MCP 서버 (MCP Server) = “법을 따르는 시민” (우리가 만들 것)
    • 누가 만드나? 사용자님이나 일반 개발자가 만듭니다.
    • 만드는 행위: 실제 기능을 수행하는 코드를 짜는 것입니다.
    • 결과물의 형태: 실행 가능한 소스 코드 파일 (.py, .js, .ts)
    • 단순한 JSON 파일도 아니고, 단순한 글자 나열도 아닙니다.
    • 컴퓨터에서 돌아가는 프로그램입니다.
  • Example :🔍 “MCP 서버”를 만들면 실제로 남는 것

    • 사용자님이 “날씨 정보를 알려주는 MCP 서버”를 만든다면, 결과물은 아래와 같은 파이썬 코드 파일(weather_server.py) 하나입니다.

        # weather_server.py (이게 결과물입니다!)
      
        from mcp.server.fastmcp import FastMCP
      
        # 1. 서버 이름 짓기
        mcp = FastMCP("My Weather Server")
      
        # 2. 도구(Tool) 정의하기 (실제 기능)
        @mcp.tool()
        def get_weather(city: str) -> str:
            """도시 이름을 입력받아 날씨를 알려줍니다."""
            if city == "Seoul":
                return "맑음, 25도"
            return "알 수 없음"
      
        # 3. 서버 실행
        if __name__ == "__main__":
            mcp.run()
      
      
  • 결론
    • 단순 JSON인가요? ❌ 아니요. JSON은 이 서버가 Claude와 대화할 때 주고받는 말(메시지)의 형식일 뿐입니다. 결과물 자체는 코드(로직)입니다.
    • 단순 글자 문서인가요? ❌ 아니요. 실제로 실행되어야 하는 프로그램입니다.
  • 혼동의 원인: config.json

    • 사용자님이 “JSON 아닌가?”라고 생각하신 이유는 아마 설정 파일 때문일 겁니다. 만들어진 MCP 서버(weather_server.py)를 Claude에게 등록할 때는 JSON 설정 파일을 건드려야 합니다.

        // claude_desktop_config.json (이건 '등록증'입니다)
        {
        "mcpServers": {
            "my-weather-bot": {
            "command": "python",
            "args": ["weather_server.py"]
            }
        }
        }
      
      

Meaning of making Plugin

Plugin(플러그인)의 결과물은 결국 “잘 포장된 폴더(저장소)”라고 생각하시면 됩니다. MCP 서버가 단순히 “실행 가능한 코드 조각(부품)”이라면, 플러그인은 이 부품을 사용자가 쉽게 설치하고 사용할 수 있도록 설명서와 설정을 함께 넣은 “완제품 박스”입니다. 구체적으로 플러그인을 만들었을 때 결과물이 어떤 파일 구조를 가지는지 눈으로 확인시켜 드릴게요.


  • 📂 플러그인 결과물 (폴더 구조 예시)
    • 만약 사용자님이 my-weather-plugin이라는 플러그인을 만들었다면, 그 결과물은 아래와 같은 파일들이 들어있는 하나의 폴더(또는 GitHub 저장소)입니다.
        my-weather-plugin/             <-- 이게 플러그인 결과물입니다!
        ├── README.md                  # [설명서] "이 플러그인은 날씨를 알려줍니다."
        ├── claude-plugin.json         # [신분증] 이름, 버전, 실행 명령어 정보 (가장 중요!)
        ├── src/                       # [본체] 실제 기능이 들어있는 코드
        │   ├── main.py                # <-- 여기에 MCP 서버 코드가 들어있음
        │   └── utils.py
        ├── prompts/                   # [페르소나] (옵션) 이 플러그인을 쓸 때 Claude의 행동 지침
        │   └── weather-expert.md      # "너는 기상 캐스터처럼 말해라"
        └── requirements.txt           # [준비물] 필요한 파이썬 라이브러리 목록
      
      
  • 핵심 구성 요소 3가지
    1. 신분증 (Manifest File)
      • 보통 claude-plugin.json 또는 package.json 같은 파일입니다.
      • 역할: Claude에게 “내 이름은 이거고, 나를 실행하려면 python main.py라고 입력해”라고 알려주는 명찰입니다.
      • 이게 없으면 그냥 코드 덩어리일 뿐, 설치 가능한 플러그인이 아닙니다.
    2. 본체 (Code / Executable)
      • main.py 처럼 실제 날씨 정보를 가져오는 MCP 서버 코드입니다.
      • 앞서 말씀드린 “MCP를 만드는 과정”에서 나온 결과물이 바로 이 폴더 안에 들어갑니다.
    3. 페르소나/프롬프트 (Prompts - 옵션)
      • 단순히 기능만 주는 게 아니라, “이 도구를 쓸 때는 기상 캐스터 말투를 써줘” 같은 시스템 프롬프트를 포함할 수 있습니다.
      • 사용자님이 말씀하신 Subagent(서브에이전트)의 성격이 여기서 정의됩니다.

  • 🔌 차이점 한눈에 보기

    구분 MCP 서버 (부품) Plugin (완제품)
    비유 모터 (Engine) 선풍기 (Fan)
    형태 실행 가능한 코드 파일 (server.py) 코드를 포함한 설치 패키지 폴더
    설치법 사용자가 직접 설정 파일 열어서 코드를 복붙해야 함 (DIY) claude plugin install <이름> 명령어 한 번으로 설치됨
    구성 코드 + 라이브러리 코드 + 라이브러리 + 설치 정보(Manifest) + 프롬프트
  • 요약: 사용자님이 만들어야 할 것

    • 사용자님이 “나만의 기획/개발/테스트 플러그인”을 만든다면, 결과물은 다음과 같습니다.

      1. Github 저장소를 하나 만듭니다.
      2. 그 안에 각 에이전트의 역할이 적힌 프롬프트 파일을 넣습니다. (planner.md, developer.md)
      3. 필요하다면 자동화 스크립트(MCP)를 넣습니다.
      4. 마지막으로 “이걸 어떻게 설치해라”가 적힌 설정 파일(manifest)을 넣습니다.
    • 이 폴더 주소(URL) 자체가 바로 플러그인이 되는 것입니다!

How to deploy my MCP

Python으로 만든 MCP 서버를 다른 사람들에게 배포하는 방법은 크게 “전통적인 파이썬 패키지 배포 방식”“최신 MCP 전용 레지스트리 등록 방식” 두 가지로 나뉩니다. 사용자님이 만든 코드를 다른 사람이 쓰게 하려면 (1) 설치(Installation)(2) 연결(Configuration) 두 단계를 해결해줘야 합니다.


  • 방법 1. PyPI (파이썬 패키지 저장소) 배포 [가장 추천 ⭐]
    • 가장 표준적인 방법입니다. pipuv로 설치할 수 있게 만드는 것입니다.
      1. 패키징: pyproject.toml 파일을 만들고 프로젝트를 패키지로 만듭니다.
      2. 업로드: PyPI(Python Package Index)에 업로드합니다.
      3. 사용자 설치: 다른 사용자는 터미널에서 아래처럼 실행하거나, Claude 설정에 바로 입력할 수 있습니다.
        • 현대적인 방식 (uv 사용 시 - 매우 빠름): 사용자는 별도 설치 없이 설정 파일에 이렇게 적기만 하면 됩니다.

            {
            "mcpServers": {
                "weather-bot": {
                "command": "uvx",
                "args": ["weather-mcp-server"]
                }
            }
            }
          
          
    • 전통적인 방식 (pip 사용 시): 사용자가 먼저 pip install weather-mcp-server를 한 뒤, 설정 파일에 경로를 적습니다.
  • 방법 2. Docker 이미지 배포 [환경 문제 해결]

    • 사용자의 파이썬 버전이나 라이브러리 충돌을 걱정할 필요가 없는 가장 깔끔한 방법입니다.

      1. 이미지 빌드: Dockerfile을 작성해서 도커 이미지를 만듭니다.
      2. 업로드: Docker Hub에 올립니다. (예: runab/weather-mcp)
      3. 사용자 설정: 사용자는 Claude 설정 파일에 다음과 같이 적습니다.

         {
         "mcpServers": {
             "weather-bot": {
             "command": "docker",
             "args": ["run", "-i", "--rm", "runab/weather-mcp"]
             }
         }
         }
        
        
  • 방법 3. 깃허브(GitHub) 소스 공유 [가장 간단]

    • 개발자들끼리 공유할 때 주로 씁니다.

      1. 업로드: GitHub 리포지토리에 코드를 올립니다 (main.py, requirements.txt).
      2. 사용자 행동:
        • git clone https://github.com/runab/my-mcp.git
        • pip install -r requirements.txt
      3. 연결: 사용자가 자신의 로컬 경로를 설정 파일에 적습니다.

  • 🚀 “마켓플레이스”에 올리는 법 (Smithery.ai / Glama)

    • 아까 보셨던 marketplace add 명령어처럼, 사람들이 검색해서 쉽게 찾게 하려면 MCP 레지스트리에 등록해야 합니다. 현재 가장 유명한 두 곳이 있습니다.

      1. Smithery.ai: 현재 Claude Desktop용 MCP들이 가장 많이 모여있는 곳입니다.
        • GitHub에 코드를 올린 후, Smithery 웹사이트에서 “Submit” 버튼을 눌러 내 리포지토리 주소를 등록합니다.
        • 등록되면 다른 사람들이 npx -y @smithery/cli install @runab/weather-mcp 같은 명령어로 한 방에 설치할 수 있게 됩니다.
      2. Glama: 또 다른 MCP 검색 엔진입니다. 여기도 GitHub 리포지토리를 등록하면 사람들이 검색할 수 있습니다.

  • 요약: 배포 프로세스 4단계

    1. 코딩: main.py를 짭니다. (FastMCP 등 사용)
    2. 패키징: pyproject.toml을 설정해서 PyPI에 올리거나, Docker Hub에 올립니다.
    3. 홍보 (옵션): Smithery.ai 같은 레지스트리에 내 프로젝트를 등록합니다.
    4. 안내: 사용자에게 “이 JSON 코드를 claude_desktop_config.json에 복사/붙여넣기 하세요”라고 README.md에 적어줍니다.
  • 가장 추천하는 시작 방법: 일단 GitHub에 소스 코드를 올리는 것부터 시작하세요. 그리고 README.md 파일에 “어떻게 설정 파일에 추가하는지” JSON 예시를 적어두는 것이 배포의 첫걸음입니다!

results matching ""

    No results matching ""