본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 25. 14:30

온디바이스 AI 모델을 MCP 도구로 노출하는 방법 (로컬 MCP 서버, 클라우드 미사용)

요약

Off Grid AI Desktop은 로컬 온디바이스 모델을 MCP(Model Context Protocol) 도구로 노출하여 클라우드 없이 사용할 수 있게 해주는 오픈 소스 앱입니다. 사용자의 Mac 또는 PC에서 채팅, 비전, 음성 모델 등을 실행하며 모든 데이터와 기능이 기기 내에 머무릅니다.

핵심 포인트

  • 로컬 MCP 엔드포인트를 통해 온디바이스 모델을 MCP 클라이언트에 제공
  • 데이터 유출 걱정 없는 완전한 오프라인 및 로컬 실행 환경 지원
  • OpenAI 호환 API와 MCP 엔드포인트를 동시에 제공
  • GGUF 양자화 모델을 사용하여 소비자용 하드웨어(Apple Silicon, NVIDIA GPU) 최적화

여러분의 노트북은 자체 GPU를 사용하여 채팅 모델, 비전 모델, 확산 모델(diffusion model), 그리고 전사 모델(transcriber)을 실행할 수 있습니다. 대부분의 설정은 여전히 모든 도구 호출(tool call)을 토큰당 비용이 발생하고 여러분이 보내는 모든 내용을 읽는 클라우드 모델을 통해 라우팅합니다. Off Grid AI Desktop은 이러한 모델들을 Mac 또는 PC에서 실행하고 로컬 MCP 엔드포인트를 통해 모든 MCP 클라이언트에게 제공하는 무료 오픈 소스 앱입니다.

GitHub ->

무료, 오픈 소스 (AGPL-3.0), 오프라인 실행.

MCP란 무엇인가 (두 단락 요약)

Model Context Protocol (MCP)은 AI 클라이언트가 외부 기능(capabilities)을 호출할 수 있는 표준화된 방식입니다. 클라이언트는 서버가 제공하는 도구(tools) 목록을 나열한 다음, 구조화된 인자(arguments)로 이를 호출하고 구조화된 결과를 읽습니다. 이는 내부적으로 JSON-RPC를 사용합니다. 핵심은 규격을 준수하는 클라이언트라면 별도의 커스텀 연결 코드(glue) 없이도 규격을 준수하는 서버를 사용할 수 있다는 점입니다.

대부분의 MCP 서버는 SaaS API를 래핑합니다: Notion 서버, GitHub 서버, 데이터베이스 서버 등이 그 예입니다. 도구는 원격 어딘가에서 실행되며 데이터가 그곳으로 이동합니다. Off Grid AI Desktop은 그 반대로 동작합니다. 여러분의 온디바이스(on-device) 모델을 MCP 도구로 래핑합니다. 기능과 데이터 모두 여러분의 기기에 머무릅니다.

요약 버전

Off Grid AI Desktop은 http://127.0.0.1:7878/mcp에서 MCP를 제공합니다. 이는 스트리밍 가능한 HTTP(Streamable HTTP)이며, 상태가 없는(stateless) JSON-RPC 방식입니다. 로컬 채팅, 비전, 이미지, 음성 및 임베딩(embedding) 모델이 MCP 도구로 나타납니다. MCP 클라이언트가 연결하여 해당 도구들을 나열하고 호출합니다. 모든 호출은 온디바이스에서 실행됩니다. 다른 누군가가 소유한 서버를 거쳐 라우팅되는 것은 아무것도 없습니다.

필요한 사항

앱에 추론 엔진(inference engines)이 포함되어 있으므로, 요구 사항은 모델을 실행할 수 있는 하드웨어입니다.

등급MacWindowsRAM/VRAM디스크
최소Apple Silicon M1NVIDIA GPU 또는 최신 CPU16 GB20 GB 여유 공간
권장M3 / M48 GB 이상의 VRAM을 가진 RTX32 GB40 GB 이상의 여유 공간

모델은 소비자용 메모리에 적합하도록 양자화(quantized)된 GGUF 형식입니다. Mac은 통합 메모리(unified memory) 상에서 Metal을 사용합니다. Windows는 CUDA 또는 Vulkan을 사용하며, CPU 폴백(fallback)을 지원합니다.

작동 원리

동일한 앱이 http://127.0.0.1:7878/v1에서 OpenAI 호환 HTTP API를 제공하고, http://127.0.0.1:7878/mcp에서 MCP 엔드포인트(endpoint)를 제공합니다. HTTP API는 이미 OpenAI 방식을 사용하는 코드를 위한 것입니다. MCP 엔드포인트는 MCP를 지원하며, 더 큰 에이전트 루프(agent loop) 내에서 사용자의 로컬 모델을 도구(tool)로 취급하고자 하는 클라이언트(client)를 위한 것입니다.

두 엔드포인트 모두 루프백(loopback)에만 바인딩됩니다. 서버는 사용자의 로컬 머신에만 응답합니다. 키(key)도, 계정도, 클라우드 경유(cloud hop)도 없습니다.

Step 1: 도구 목록 나열하기 (List the tools)

MCP는 tools/list 호출로 시작됩니다. 서버는 로컬 모델을 호출 가능한 도구로 반환합니다. 다음은 Streamable HTTP 엔드포인트를 통한 원시 JSON-RPC 예시입니다.

curl http://127.0.0.1:7878/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
...

사용자는 온디바이스 모델을 기반으로 하는 도구 목록을 받게 됩니다: 채팅(chat), 비전(vision), 이미지 생성(image generation), 음성(speech), 그리고 임베딩(embeddings)입니다. 엔드포인트는 상태를 유지하지 않는(stateless) 방식이므로, 각 요청은 독립적으로 처리됩니다. 계속 유지해야 하는 세션(session)은 없습니다.

Step 2: 도구 호출하기 (Call a tool)

tools/call은 인자(arguments)와 함께 이름으로 특정 도구를 호출합니다. 이는 로컬 채팅 모델을 MCP 도구로서 호출합니다.

curl http://127.0.0.1:7878/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
...

모델은 사용자의 GPU에서 실행되며 MCP 봉투(envelope)를 통해 결과를 반환합니다. 도구 이름과 인자를 바꾸면 비전, 이미지 생성, 음성 또는 임베딩도 동일한 방식으로 호출할 수 있습니다.

Step 3: 클라이언트에 연결하기 (Point a client at it)

대부분의 MCP 클라이언트는 설정(config)에서 서버 URL을 받습니다. 로컬 엔드포인트를 HTTP MCP 서버로 추가하세요.

{
  "mcpServers": {
    "offgrid-local": {
...

클라이언트를 다시 로드합니다. 로컬 모델이 클라이언트의 도구 목록에 나타납니다. 이제 해당 클라이언트에서 실행되는 에이전트는 파일을 전사(transcribe)하거나, 이미지를 설명하거나, 이미지를 생성할 수 있으며, 이 모든 작업은 사용자의 하드웨어에서 수행됩니다.

왜 굳이 MCP를 통해 모델을 라우팅하는가

이미 HTTP API를 통해 모델에 접근할 수 있습니다. 하지만 MCP는 그와는 다른 이점을 제공합니다. MCP를 사용하면 여러 도구를 오케스트레이션(orchestrate)하는 클라이언트가 사용자의 개인 모델을 동일한 루프 내의 또 다른 도구로 취급할 수 있게 해줍니다. 플래닝 에이전트(planning agent)는 단 하나의 프로토콜과 하나의 도구 목록을 통해, 한 단계에서는 원격 도구를 호출하고 다음 단계에서는 로컬 비전 모델(vision model)을 호출할 수 있습니다.

이를 통해 민감한 단계들을 로컬에 유지할 수 있습니다. 업로드하고 싶지 않은 이미지는 온디바이스 비전 도구(on-device vision tool)에 의해 설명됩니다. 외부로 전송하고 싶지 않은 오디오는 온디바이스 음성 도구(on-device speech tool)에 의해 전사(transcribe)됩니다. 에이전트는 이러한 호출을 위해 기기를 벗어날 필요가 전혀 없습니다.

모델이 메모리를 공유하는 방식

앱은 모든 모델을 한꺼번에 로드하지 않습니다. 각 모달리티(modality)는 해당 도구가 호출될 때 로드되고, 호출이 끝나면 언로드(offload)됩니다. 채팅 모델(chat model)과 확산 모델(diffusion model)은 RAM에 동시에 머물지 않습니다. 16GB 사양의 기기에서도 메모리 부족 현상 없이, 한 번에 하나의 호출씩 모든 도구를 지원할 수 있습니다.

동일한 도구에 대한 반복적인 호출은 해당 모델을 '웜(warm)' 상태로 유지합니다. 콜드 호출(cold call)의 경우 짧은 로드 비용이 발생합니다. 이미지 생성과 같이 실행 시간이 긴 도구의 경우, 기반 API가 폴링 URL(poll URL)을 통한 비동기(async) 방식을 지원하므로 느린 렌더링 작업이 전체 프로세스를 차단하지 않습니다.

개인정보 보호: 호스팅된 도구 서버보다 강력함

호스팅된 MCP 서버는 사용자가 전달하는 모든 인자(argument)와 반환되는 모든 결과를 볼 수 있습니다. 또한 인증 정보가 필요하며 트래픽을 로그로 남깁니다. 반면 Off Grid AI Desktop MCP 엔드포인트는 127.0.0.1에 바인딩되어 있어 오직 사용자의 기기에만 응답합니다. 텔레메트리(telemetry), 계정, 키가 전혀 없습니다. 코드는 AGPL-3.0 라이선스이므로 동작을 감사(auditable)할 수 있습니다. 사용자의 프롬프트, 이미지, 녹음 파일은 디스크에 그대로 머뭅니다.

시작하기

  1. github.com/off-grid-ai/desktop에서 다운로드하거나 클론(clone)합니다.
  2. 앱을 설치하고 실행합니다.
  3. 도구로 노출하고 싶은 각 모달리티에 맞는 모델을 다운로드합니다.
  4. MCP 엔드포인트는 http://127.0.0.1:7878/mcp에서 활성화됩니다. tools/list를 실행하여 확인합니다.
  5. 해당 URL을 MCP 클라이언트 설정에 추가하고 다시 로드합니다.

/docs에서 제공되는 대화형 HTTP 문서와 /openapi.json의 명세는 두 인터페이스를 모두 사용하고자 할 경우 동반되는 /v1 API를 포함합니다.

향후 계획

  • 로컬 메시(mesh) 네트워크를 통해 연결된 다른 기기에서 MCP 엔드포인트에 접속할 수 있게 하여, 휴대폰이나 태블릿이 데스크톱의 모델을 도구 (tools)로 사용할 수 있도록 할 예정입니다. 클라우드 없이 로컬에서만 작동합니다.
  • 도구 (tools) 뒤에 더 많은 번들 모델 (bundled models)을 지원할 예정입니다.
  • 온디바이스 모달리티 (on-device modalities)가 확장됨에 따라 더 넓은 범위의 도구 (tool) 지원을 제공할 예정입니다.

FAQ

Q: 정말 무료인가요?

네. AGPL-3.0 라이선스에 따라 무료이며 오픈 소스 (open-source)입니다. MCP 엔드포인트는 오픈 코어 (open core)의 일부입니다.

Q: 오프라인에서도 작동하나요?

네. 모델이 다운로드되면 모든 도구 호출 (tool call)은 네트워크 연결 없이 온디바이스 (on-device)에서 실행됩니다.

Q: 어떤 MCP 클라이언트가 작동하나요?

Streamable HTTP를 통한 HTTP MCP 서버를 지원하는 모든 클라이언트가 작동합니다. 해당 URL을 지정하면 도구 (tools) 목록을 불러옵니다.

Q: API 키나 계정이 필요한가요?

아니요. 엔드포인트는 두 가지 모두 확인하지 않습니다. 설계 단계부터 로컬 전용 (local-only)으로 만들어졌습니다.

Q: 다른 컴퓨터가 제 MCP 엔드포인트에 접속할 수 있나요?

현재는 불가능합니다. 현재는 루프백 (loopback)에 바인딩됩니다. 로컬 메시 (local mesh)를 통한 기기 간 액세스는 별도의 향후 기능으로 예정되어 있습니다.

Q: 어떤 모델이 도구 (tools)를 지원하나요?

앱이 채팅 (chat), 비전 (vision), 이미지 생성 (image generation), 음성 (speech), 임베딩 (embeddings)을 위해 실행하는 것과 동일한 온디바이스 (on-device) 모델들이 사용됩니다. GET /v1/models를 실행하여 모달리티 (modality)별로 어떤 모델이 활성화되어 있는지 확인할 수 있습니다.

외부로 데이터를 전송하지 않는 로컬 도구 (local tools)를 에이전트 (agent)에게 부여하세요.

GitHub ->

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0