Model Context Protocol(MCP)은 AI 어시스턴트가 내가 운영하는 서버의 도구를 호출하고 데이터를 읽을 수 있게 합니다. 많은 MCP 서버는 로컬에서 실행되지만, 여러 사람, 도구, 에이전트가 같은 기능을 공유해야 할 때는 VPS의 원격 서버가 유용합니다. 이 가이드는 설정 선택지와 안전한 기본 구성을 다룹니다.
로컬 MCP와 원격 MCP
- 로컬(stdio). 클라이언트가 내 기기에서 서버를 자식 프로세스로 시작합니다. 단순하고 비공개이지만 그 기기에서만 작동합니다.
- 원격(HTTP). 서버가 VPS에서 실행되고 클라이언트가 HTTPS로 연결합니다. 이것이 호스팅하는 방식입니다. 공유 도구, 장시간 작업, 고정 IP가 필요한 도구에 적합합니다.
사용하는 클라이언트가 지원하는 전송 방식은 최신 MCP 사양에서 확인하세요. 원격 서버에는 Streamable HTTP가 일반적인 선택입니다. 일반적인 워크로드별 사양은 MCP 서버 호스팅 페이지에 있습니다.
1단계: 서버 준비
새 Ubuntu LTS 서버를 사용하고 새 VPS 보안 설정 방법의 단계를 따르세요. 서비스용 사용자를 만드세요.
sudo adduser --disabled-password --gecos "" mcp
2단계: 서버 실행
공식 SDK나 기존 서버를 사용하세요. 이 Python 예제는 MCP SDK의 FastMCP 도우미를 사용합니다:
sudo -iu mcp
python3 -m venv ~/venv && . ~/venv/bin/activate
pip install "mcp[cli]"
# server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("demo", host="127.0.0.1", port=8000)
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
if __name__ == "__main__":
mcp.run(transport="streamable-http")
3단계: 서비스로 실행
[Unit]
Description=MCP server
After=network-online.target
[Service]
User=mcp
WorkingDirectory=/home/mcp
ExecStart=/home/mcp/venv/bin/python server.py
Restart=always
[Install]
WantedBy=multi-user.target
/etc/systemd/system/mcp.service로 저장하고 sudo systemctl enable --now mcp를 실행하세요.
4단계: HTTPS와 인증
MCP 서버는 코드를 실행하고 데이터를 읽을 수 있으므로 절대 열어 두지 마세요. TLS가 적용된 리버스 프록시 뒤에 두고 토큰을 요구하세요:
mcp.example.com {
@noauth not header Authorization "Bearer YOUR_LONG_RANDOM_TOKEN"
respond @noauth 401
reverse_proxy 127.0.0.1:8000
}
프로덕션 환경에서는 공유 토큰 하나 대신 MCP 인증 사양에 설명된 OAuth를 사용하세요.
안전 체크리스트
- 도구에는 필요한 최소한의 권한만 주세요. 그것이 목적이 아닌 한 도구에 셸 접근 권한을 주지 마세요.
- 비밀 값은
chmod 600을 적용한 환경 파일에 보관하세요. - 무슨 일이 있었는지 알 수 있도록 도구 호출을 기록하세요.
- 포트를 127.0.0.1에 바인딩해 두고 프록시만 노출하세요.