mcp-hub
무엇인가
MCP Hub는 여러 Model Context Protocol 서버를 하나의 프로세스가 대신 붙잡고 있으면서, 클라이언트에게는 단일 MCP 엔드포인트를 노출하는 중계 서버다. MCP 생태계에서 클라이언트와 서버 사이에 끼어드는 프록시 계층에 해당하며, MCP 2025-03-26 사양을 구현한다. 서버를 각 클라이언트에 직접 등록하는 대신 허브 한 곳에 모아 두는 구조다.
어떻게 동작하나
구성은 Hub Server와 그것이 관리하는 MCP 서버들로 나뉜다. Hub Server는 각 서버와의 연결을 유지하고 수명 주기와 상태를 감시한다. 로컬 서버는 STDIO 스크립트로, 원격 서버는 streamable-http 또는 SSE로 연결하며 원격에는 OAuth PKCE 흐름과 헤더 기반 토큰 인증이 붙는다. 클라이언트가 /mcp로 보낸 요청은 서버 이름 접두어가 붙은 이름을 보고 해당 서버로 라우팅된다. 예를 들어 filesystem__search와 database__search는 서로 다른 서버의 도구다. 관리 쪽은 /api/* REST 엔드포인트와 웹 UI가 맡고, 실시간 이벤트는 /api/events의 SSE 스트림으로 나간다.
무엇과 다른가
일반적인 MCP 사용 방식은 클라이언트 설정 파일마다 접속할 서버를 나열하는 것이다. MCP Hub는 그 목록을 허브 쪽으로 옮긴다. 서버를 추가하거나 제거하면 연결된 클라이언트의 도구·리소스 목록이 실시간으로 갱신되고, 클라이언트 설정은 엔드포인트 하나로 끝난다. 설정 형식은 VS Code의 .vscode/mcp.json과 호환되며 mcpServers와 servers 키를 모두 받는다. 여러 설정 파일을 순서대로 병합할 수 있어 전역·프로젝트·환경별 설정을 겹쳐 쓸 수 있다.
어떻게 쓰나
설정 파일에 mcpServers 항목으로 서버를 정의하고 허브를 실행한다. 값 안에서는 ${ENV_VAR}, ${env:VAR}, ${cmd: command args}, ${workspaceFolder}, ${userHome}, ${pathSeparator} 같은 플레이스홀더가 해석된다. VS Code의 ${input:} 변수는 MCP_HUB_ENV 환경 변수로 값을 넘긴다. 기존 .vscode/mcp.json을 그대로 가리켜 실행할 수도 있다. Claude Desktop, Cline 같은 클라이언트에는 localhost:37373/mcp 하나만 등록한다.
전제와 한계
동작 기준은 MCP 2025-03-26 사양이며 JavaScript로 작성되어 Node.js 런타임에서 돈다. 서버 연결은 STDIO와 streamable-http/SSE 두 전송 방식만 다룬다. 설정 파일이 없으면 해당 파일은 조용히 건너뛴다. 클라이언트가 하나도 연결되지 않았을 때 자동 종료하는 옵션이 있고, 활성 인스턴스 목록은 XDG 규격 상태 디렉터리의 전역 워크스페이스 캐시에 기록된다.