dummy_mcp_server

restful3/dummy_mcp_server

3.2

If you are the rightful owner of dummy_mcp_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This project is a simple MCP (Meta-agent Communication Protocol) server built using the FastMCP framework, providing communication via SSE (Server-Sent Events) and offering 'echo' and 'dummy' tools.

Tools
  1. dummy

    A simple synchronous tool that logs and returns the received message.

  2. echo

    Demonstrates SSE streaming by repeating the input message three times with delays.

Dummy MCP Server

이 ν”„λ‘œμ νŠΈλŠ” FastMCP ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬μΆ•λœ κ°„λ‹¨ν•œ MCP (Meta-agent Communication Protocol) μ„œλ²„μž…λ‹ˆλ‹€. μ„œλ²„λŠ” SSE (Server-Sent Events)λ₯Ό 톡해 ν†΅μ‹ ν•˜λ©°, echo 도ꡬ와 dummy 도ꡬλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

μ£Όμš” 기술 μŠ€νƒ

  • FastAPI: μ›Ή ν”„λ ˆμž„μ›Œν¬ (FastMCP의 기반)
  • Uvicorn: ASGI μ„œλ²„ (FastAPI μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰)
  • FastMCP: MCP μ„œλ²„ ꡬ좕을 μœ„ν•œ ν”„λ ˆμž„μ›Œν¬ (버전 1.0.0)
  • Docker & Docker Compose: μ»¨ν…Œμ΄λ„ˆν™” 및 μ„œλΉ„μŠ€ 관리
  • Python: μ£Ό 개발 μ–Έμ–΄

ν”„λ‘œμ νŠΈ ꡬ쑰

.dummy_mcp_server/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ main.py         # FastAPI μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 MCP μ„œλ²„ μ„€μ •, 도ꡬ 등둝
β”‚   └── tools/
β”‚       β”œβ”€β”€ __init__.py
β”‚       β”œβ”€β”€ dummy.py    # 'dummy' 도ꡬ κ΅¬ν˜„
β”‚       └── echo.py     # 'echo' 도ꡬ κ΅¬ν˜„
β”œβ”€β”€ docker-compose.yml  # Docker Compose μ„€μ • 파일
β”œβ”€β”€ README.md           # 이 파일
└── requirements.txt    # Python μ˜μ‘΄μ„± λͺ©λ‘`

μ„€μ • 및 μ‹€ν–‰

μš”κ΅¬ 사항

  • Docker
  • Docker Compose

둜컬 μ‹€ν–‰ (Docker Compose μ‚¬μš©)

  1. μ €μž₯μ†Œ 클둠 (이미 λ‘œμ»¬μ— μžˆλŠ” 경우 μƒλž΅)

  2. Docker 이미지 λΉŒλ“œ 및 μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰: ν”„λ‘œμ νŠΈ 루트 λ””λ ‰ν† λ¦¬μ—μ„œ λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•©λ‹ˆλ‹€. 이 λͺ…령은 ν•„μš”μ‹œ 이미지λ₯Ό λΉŒλ“œν•˜κ³  λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€.

    docker-compose up --build -d
    

    μ„œλ²„λŠ” Docker μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ 0.0.0.0:8002μ—μ„œ μ‹€ν–‰λ˜λ©°, docker-compose.yml 섀정에 따라 호슀트 λ¨Έμ‹ μ˜ http://localhost:8002 (λ˜λŠ” Docker 호슀트 IP의 8002 포트)둜 λ…ΈμΆœλ©λ‹ˆλ‹€.

  3. 둜그 확인:\

    docker-compose logs -f dummy_mcp_server
    
  4. μ„œλ²„ 쀑지:\

    docker-compose down
    

n8n 연동 κ°€μ΄λ“œ

dummy-mcp-serverλ₯Ό n8n μ›Œν¬ν”Œλ‘œμš°μ™€ μ—°λ™ν•˜λ €λ©΄ λ‹€μŒ 단계λ₯Ό λ”°λ₯΄μ‹­μ‹œμ˜€.

  1. Docker λ„€νŠΈμ›Œν¬:

    • dummy-mcp-server μ»¨ν…Œμ΄λ„ˆμ™€ n8n μ»¨ν…Œμ΄λ„ˆκ°€ λ™μΌν•œ Docker λ„€νŠΈμ›Œν¬ ν™˜κ²½μ—μ„œ μ‹€ν–‰λ˜κ³  μžˆμ–΄μ•Ό μ„œλ‘œ 톡신할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • ν˜„μž¬ docker-compose.yml은 dummy-mcp-server μ„œλΉ„μŠ€λ₯Ό μƒμ„±ν•˜λ©°, λ³„λ„μ˜ λ„€νŠΈμ›Œν¬λ₯Ό λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ©΄ Docker Composeκ°€ μƒμ„±ν•˜λŠ” κΈ°λ³Έ λ„€νŠΈμ›Œν¬μ— μ—°κ²°λ©λ‹ˆλ‹€. n8n μ»¨ν…Œμ΄λ„ˆλ„ 이 λ„€νŠΈμ›Œν¬μ— μ—°κ²°λ˜μ–΄ μžˆκ±°λ‚˜, λ˜λŠ” 두 μ»¨ν…Œμ΄λ„ˆκ°€ κ³΅μœ ν•˜λŠ” μ™ΈλΆ€ λ„€νŠΈμ›Œν¬(예: nginx-n8n-net)에 ν•¨κ»˜ μ—°κ²°λ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
    • λ§Œμ•½ n8nκ³Ό dummy-mcp-serverκ°€ λ™μΌν•œ docker-compose.yml 파일 λ‚΄μ—μ„œ μ„œλΉ„μŠ€λ‘œ μ •μ˜λ˜μ–΄ μžˆλ‹€λ©΄, Docker Composeκ°€ μžλ™μœΌλ‘œ 같은 λ„€νŠΈμ›Œν¬μ— λ°°μΉ˜ν•˜λ―€λ‘œ μ„œλΉ„μŠ€ 이름(μ»¨ν…Œμ΄λ„ˆ 이름)으둜 μ„œλ‘œλ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.
  2. n8n MCP Client λ…Έλ“œ μ„€μ •:

    • n8n μ›Œν¬ν”Œλ‘œμš°μ—μ„œ "MCP Client" λ…Έλ“œλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
    • SSE Endpoint: λ‹€μŒ URL을 μž…λ ₯ν•©λ‹ˆλ‹€.
      http://dummy-mcp-server:8002/sse
      
      • dummy-mcp-server: docker-compose.yml에 μ •μ˜λœ μ„œλΉ„μŠ€ μ΄λ¦„μž…λ‹ˆλ‹€. Docker λ‚΄λΆ€ DNSκ°€ 이 이름을 dummy-mcp-server μ»¨ν…Œμ΄λ„ˆμ˜ IP둜 ν•΄μ„ν•©λ‹ˆλ‹€. (λ§Œμ•½ n8n이 Docker μ™ΈλΆ€μ—μ„œ μ‹€ν–‰λ˜κ³  dummy-mcp-server만 Docker둜 μ‹€ν–‰ 쀑이라면, localhost λ˜λŠ” Docker 호슀트의 IPλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€: http://localhost:8002/sse)
      • 8002: dummy-mcp-serverκ°€ λ¦¬μŠ€λ‹ν•˜λŠ” ν¬νŠΈμž…λ‹ˆλ‹€.
      • /sse: FastMCP λΌμ΄λΈŒλŸ¬λ¦¬κ°€ SSE μŠ€νŠΈλ¦Όμ„ μœ„ν•΄ μ‚¬μš©ν•˜λŠ” κΈ°λ³Έ κ²½λ‘œμž…λ‹ˆλ‹€.
    • Authentication: ν˜„μž¬ dummy-mcp-serverλŠ” 인증을 μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ "None"으둜 μ„€μ •ν•©λ‹ˆλ‹€.
    • Tools to Include: "All"둜 μ„€μ •ν•˜κ±°λ‚˜ ν•„μš”μ— 따라 νŠΉμ • λ„κ΅¬λ§Œ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

Python μ˜μ‘΄μ„± (requirements.txt)

λ‹€μŒμ€ μ£Όμš” μ˜μ‘΄μ„± λͺ©λ‘μž…λ‹ˆλ‹€ (전체 λͺ©λ‘μ€ requirements.txt 파일 μ°Έμ‘°):

fastmcp==1.0.0
httpx>=0.27.0
uvicorn
numpy
fastapi==0.109.2
# python-dotenv (주석 처리됨)
# ... 기타 mcp 및 fastapi μ˜μ‘΄μ„±

μ œκ³΅λ˜λŠ” 도ꡬ

μ„œλ²„λŠ” app/main.py에 λ‹€μŒκ³Ό 같은 두 κ°€μ§€ 도ꡬλ₯Ό λ“±λ‘ν•˜μ—¬ μ œκ³΅ν•©λ‹ˆλ‹€.

  1. dummy 도ꡬ

    • μ†ŒμŠ€ 파일: app/tools/dummy.py
    • μ„€λͺ…: μž…λ ₯받은 λ¬Έμžμ—΄ λ©”μ‹œμ§€λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•˜κ³ , 성곡 μƒνƒœμ™€ ν•¨κ»˜ μˆ˜μ‹ ν•œ λ©”μ‹œμ§€λ₯Ό λ°˜ν™˜ν•˜λŠ” κ°„λ‹¨ν•œ 동기 λ„κ΅¬μž…λ‹ˆλ‹€.
    • μž…λ ₯ νŒŒλΌλ―Έν„°:
      • message (str): 더미 도ꡬ가 받을 λ¬Έμžμ—΄μž…λ‹ˆλ‹€.
    • λ°˜ν™˜: {\"status\": \"success\", \"tool_message\": \"Dummy tool received: [μž…λ ₯된 λ©”μ‹œμ§€]\"}
  2. echo 도ꡬ

    • μ†ŒμŠ€ 파일: app/tools/echo.py
    • μ„€λͺ…: SSE 슀트리밍 κΈ°λŠ₯을 μ‹œμ—°ν•˜λŠ” 예제 λ„κ΅¬μž…λ‹ˆλ‹€. μž…λ ₯된 λ©”μ‹œμ§€λ₯Ό 3회 λ°˜λ³΅ν•˜κ³ , 각 λ©”μ‹œμ§€ 사이에 1초의 지연을 두어 SSE 슀트림으둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.
    • μž…λ ₯ νŒŒλΌλ―Έν„°:
      • message (str): 에코할 λ¬Έμžμ—΄μž…λ‹ˆλ‹€.
    • λ°˜ν™˜: 슀트리밍 응닡 ν›„ {\"status\": \"Echo stream completed\"}λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

MCP μ„œλ²„ 정보

  • 이름: Dummy MCP Server
  • μ„€λͺ…: FastMCP 1.0.0 with SSE, echo tool, and dummy tool.
  • 호슀트: 0.0.0.0 (Docker μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€)
  • 포트: 8002 (Docker μ™ΈλΆ€ 및 λ‚΄λΆ€ 동일 포트 λ§€ν•‘)
  • 톡신 방식: SSE (Server-Sent Events) - κΈ°λ³Έ μ—”λ“œν¬μΈνŠΈ /sse μ‚¬μš©.