로컬 vs 원격 MCP 서버 차이: stdio와 Streamable HTTP
로컬 MCP 서버는 여러분의 컴퓨터에서 실행되어 stdio로 통신하고, 원격 MCP 서버는 다른 곳에서 실행되며 Streamable HTTP로 URL에 접속합니다. 고르는 방법을 정리합니다.

로컬 MCP 서버는 여러분의 컴퓨터에서 실행됩니다. AI 앱이 이 서버를 하위 프로세스로 실행하고 stdio(표준 입출력)로 메시지를 주고받으며, 서버는 여러분의 사용자 계정 권한으로 동작합니다. 원격 MCP 서버는 여러분의 컴퓨터가 아니라 인터넷에 호스팅되며, 보통 OAuth 로그인을 거치거나 API 키를 담아 Streamable HTTP로 URL에 접속합니다. 원격 서버는 보통 여러 클라이언트를 상대하며, 여러분의 컴퓨터에서 코드를 실행하지 않습니다.
트랜스포트 규칙은 MCP 명세의 트랜스포트 페이지(2025-11-25 개정판), MCP 아키텍처 개요, 그리고 로컬·원격 서버 연결 가이드에서 가져왔습니다. 클라이언트별 내용은 각 클라이언트의 문서에서 가져왔으며, 모두 2026-09-28에 확인했습니다. Sume 쪽 내용은 MCP 개요와 MCP 도구와 게이트를 바탕으로 합니다.
로컬 MCP 서버와 원격 MCP 서버는 무엇이 다른가요?
서버가 어디에서 실행되는지가 나머지를 정합니다. 트랜스포트, 클라이언트 설정에 넣을 내용, 로그인 방식이 모두 여기에 달려 있습니다. Cursor의 mcp.json 같은 설정 파일에서 로컬 항목에는 실행할 명령어를, 원격 항목에는 URL을 적습니다. 표 아래 예시가 그 모습을 보여 줍니다.
| 질문 | 로컬 MCP 서버 | 원격 MCP 서버 |
|---|---|---|
| 어디에서 실행되나요? | 여러분의 컴퓨터. 클라이언트가 하위 프로세스로 실행 | 서버. 여러 클라이언트 연결을 처리할 수 있는 독립 프로세스로 실행 |
| 어떤 트랜스포트를 쓰나요? | stdio | Streamable HTTP |
| 클라이언트를 몇 개 상대하나요? | 보통 하나 | 보통 여러 개 |
| 설정에는 무엇을 넣나요? | args를 붙인 npx 같은 셸 명령어 | 서버 HTTP 엔드포인트의 URL |
| 인증은 어떻게 하나요? | 직접 설정. 예: env에 넣은 API 키 | OAuth, 또는 헤더에 담은 bearer 토큰이나 API 키 |
| 어디에서 쓸 수 있나요? | 설치하고 설정한 각 기기 | 인터넷에 연결된 모든 MCP 클라이언트 |
{
"mcpServers": {
"local-server": {
"command": "npx",
"args": ["-y", "mcp-server"]
},
"sume": {
"url": "https://mcp.sume.com/mcp"
}
}
}stdio와 Streamable HTTP는 무엇이 다른가요?
둘 다 MCP의 표준 트랜스포트입니다. 메시지는 양쪽 모두 같은 JSON-RPC이고, 전달 방식만 다릅니다. 명세는 클라이언트에 가능한 한 stdio를 지원하라고 합니다.
- stdio: 클라이언트가 서버를 하위 프로세스로 실행합니다. 서버는 표준 입력에서 JSON-RPC 메시지를 읽고 표준 출력에 메시지를 한 줄에 하나씩 쓰며, 표준 오류에는 로그를 쓸 수 있습니다.
- Streamable HTTP: 서버는
https://example.com/mcp같은 단일 엔드포인트에서 여러 클라이언트 연결을 처리할 수 있는 독립 프로세스로 실행됩니다. 클라이언트 메시지는 모두 새 HTTP POST이며, 서버는 요청마다 JSON 객체 하나로 응답하거나 Server-Sent Events 스트림을 엽니다. - 이전 HTTP 트랜스포트인 HTTP+SSE는 지원 중단(deprecated)되었습니다. 이 변경은 MCP SSE vs Streamable HTTP에서 설명합니다.
로컬 MCP 서버도 HTTP를 쓸 수 있나요?
네. Cursor 문서는 두 HTTP 트랜스포트를 모두 로컬 또는 원격용으로 나열하며, 원격 서버 예시는 http://localhost:3000/mcp를 가리킵니다. 명세는 이런 경우의 규칙을 둡니다. 서버는 모든 연결에서 Origin 헤더를 반드시 검증해야 하고, 로컬에서 실행되는 서버는 localhost(127.0.0.1)에만 바인딩해야 하며, 서버는 인증을 요구해야 합니다. 이런 보호 장치가 없으면 원격 웹사이트가 DNS 리바인딩으로 로컬 MCP 서버에 접근할 수 있습니다.
로컬과 원격 MCP 서버 중 어느 쪽이 더 안전한가요?
서버가 무엇에 접근할 수 있느냐에 달려 있습니다. MCP 가이드와 Hugging Face smolagents 문서는 모두 신뢰할 수 있는 출처의 서버만 쓰라고 하며, 위험의 성격은 서로 다릅니다.
- 로컬: stdio 서버는 여러분의 컴퓨터에서 코드를 실행하며, smolagents는 이것을 stdio 서버의 의도된 기능이라고 부릅니다. MCP 가이드는 filesystem 서버가 여러분의 사용자 계정 권한으로 실행되므로, 여러분이 할 수 있는 모든 파일 작업을 할 수 있다고 짚습니다.
- 원격: 여러분의 컴퓨터에서 코드를 실행하지는 않지만, 여러분이 허용한 계정과 데이터에 대해 동작합니다. MCP 가이드는 인증 중에 요청되는 권한을 검토하라고 합니다.
어느 쪽을 써야 하나요?
- 로컬: 작업 대상이 여러분의 컴퓨터에 있을 때 씁니다. Claude Code 문서는 stdio 서버가 시스템에 직접 접근해야 하는 도구나 사용자 지정 스크립트에 이상적이라고 설명합니다.
- 원격: 작업 대상이 호스팅 서비스일 때 씁니다. MCP 가이드는 원격 서버가 웹 기반 AI 애플리케이션, 그리고 서버 측 처리나 인증이 필요한 서비스에 이상적이라고 설명합니다.
- 클라이언트가 무엇을 지원하는지 확인하세요. Android Studio의 MCP 연동은 stdio 서버를 지원하지 않으며, Claude 도움말 센터는 Claude Desktop에 설정한 로컬 서버를 claude.ai에서는 쓸 수 없다고 설명합니다.
- 클라이언트가 어디에서 접속하는지 확인하세요. Claude 커스텀 커넥터는 Anthropic 클라우드에서 원격 서버에 접속하므로, 사설 네트워크에 있거나 VPN 뒤에 있거나 방화벽에 막힌 서버에는 연결되지 않습니다.
Sume MCP 서버는 로컬인가요, 원격인가요?
원격 전용입니다. Sume 호스팅 MCP는 streamable HTTP를 쓰는 클라이언트를 위한 원격 HTTP 서버이며, 주소는 https://mcp.sume.com/mcp입니다(이 URL이 무엇인지). MCP OAuth와 API 키에 따라 OAuth로 로그인하거나, Sume API 키를 Authorization: Bearer 또는 x-api-key로 보냅니다. Sume 문서에 따르면 호스팅 MCP는 여러분의 노트북에 있는 파일을 읽을 수 없으므로 로컬 파일 경로는 아무 의미가 없으며, Sume 생성 요청은 미디어를 공개 HTTPS URL로 받습니다(미디어 입력).
Sume 기초 페이지는 호스팅 MCP가 여전히 동작하지만 현재 주 경로는 아니라고 설명합니다.
출처
- MCP 명세 2025-11-25: 트랜스포트 (2026-09-28 확인)
- Model Context Protocol: 아키텍처 개요 (2026-09-28 확인)
- Model Context Protocol: 로컬 MCP 서버에 연결하기 (2026-09-28 확인)
- Model Context Protocol: 원격 MCP 서버에 연결하기 (2026-09-28 확인)
- Cursor 문서: Model Context Protocol(MCP) (2026-09-28 확인)
- Claude Code 문서: MCP로 Claude Code를 도구에 연결하기 (2026-09-28 확인)
- Claude 도움말 센터: 원격 MCP를 사용한 커스텀 커넥터 시작하기 (2026-09-28 확인)
- Hugging Face smolagents: 도구 (2026-09-28 확인)
- Android Developers: MCP 서버 추가하기 (2026-09-28 확인)
- MCP 개요
- MCP 빠른 시작
- MCP OAuth와 API 키
- MCP 도구와 게이트
- 미디어 입력
- Sume 기초
관련 글
개발자 카테고리의 다른 글
- 롱 폴링과 숏 폴링의 차이는 무엇인가요?
숏 폴링은 타이머에 맞춰 요청하고 즉시 답을 받습니다. 롱 폴링은 새 소식이 생기거나 타임아웃이 될 때까지 요청을 열어 두었다가 응답을 받으면 다시 요청합니다.
- MCP 오류 코드: -32601, -32602, -32001의 의미
MCP 오류 코드는 JSON-RPC 코드입니다. -32700부터 -32603까지의 의미, -32001이 클라이언트 쪽 타임아웃인 이유, 실패한 도구 호출과의 차이를 정리합니다.
- MCP JSON 설정 파일: mcp.json 구조와 클라이언트별 차이
MCP JSON 설정은 서버를 이름별로 나열합니다. 로컬 서버에는 명령어를, 원격 서버에는 URL과 헤더를 적습니다. 클라이언트마다 키 이름이 다른 이유도 정리합니다.
- MCP 도구 호출 결과 구조: content와 structuredContent
MCP 도구 호출 결과에는 content 배열, 선택 필드 structuredContent, isError가 있습니다. 각 필드의 내용과 이미지 전달 방식, 오류의 모습을 정리합니다.
작성자 Sume