Dynamic MCP

Dynamic MCP

Dynamic MCP를 사용하면 AI 에이전트가 수동 구성 없이 대화 중에 MCP 서버를 주문형으로 탐색하고 추가할 수 있어요. 에이전트 세션을 시작하기 전에 모든 MCP 서버를 미리 구성하는 대신, 클라이언트가 MCP 카탈로그를 검색하고 필요할 때 서버를 추가할 수 있어요.

출처: 문서

본문

이 기능은 MCP 클라이언트를 MCP Toolkit에 연결하면 자동으로 활성화돼요. 게이트웨이가 런타임 중에 에이전트가 서버를 탐색하고 관리하는 데 사용하는 원시 도구(primordial tools) 세트를 제공해 줘요.

실험적(Experimental)

Dynamic MCP는 초기 개발 단계의 실험 기능이에요. 사용해 보고 그 기능을 탐색하는 건 환영이지만, 예상치 못한 동작이나 제한 사항을 만날 수도 있어요. 버그 신고는 GitHub issues, 일반 질문과 기능 요청은 GitHub discussions로 피드백을 보내 주세요.

동작 방식

클라이언트를 MCP Gateway에 연결하면 게이트웨이가 활성 프로필의 MCP 서버들과 함께 작은 관리 도구 세트를 노출해요. 이 관리 도구들을 통해 에이전트가 게이트웨이의 설정과 상호작용할 수 있어요:

도구 설명
mcp-find 이름이나 설명으로 카탈로그에서 MCP 서버 검색
mcp-add 현재 세션에 새 MCP 서버 추가
mcp-config-set MCP 서버의 설정 구성
mcp-remove 세션에서 MCP 서버 제거
mcp-exec 현재 세션에 존재하는 이름으로 도구 실행
code-mode 여러 MCP 서버 도구를 결합한 JavaScript 지원 도구 생성

이 도구들이 있으면 에이전트가 카탈로그를 검색하고, 서버를 추가하고, 인증을 처리하고, 재시작이나 수동 구성 없이 새로 추가한 도구를 바로 사용할 수 있어요.

동적으로 추가된 서버와 도구는 현재 세션에만 연결돼요. 프로필에 영구 저장되지는 않아요. 새 세션을 시작하면 MCP Toolkit이나 프로필을 통해 프로필에 추가한 서버만 사용할 수 있어요.

사전 요구 사항

Dynamic MCP를 사용하려면 다음이 필요해요:

  • MCP Toolkit이 활성화된 Docker Desktop 4.50 이상
  • MCP를 지원하는 LLM 애플리케이션(Claude Desktop, Visual Studio Code, Claude Code 등)
  • MCP Gateway에 연결하도록 구성된 클라이언트

설정 안내는 Docker MCP Toolkit 시작하기 문서를 참고해 주세요.

사용법

Dynamic MCP는 MCP Toolkit을 사용할 때 자동으로 활성화돼요. 연결된 클라이언트는 이제 대화 중에 mcp-find, mcp-add 같은 관리 도구를 사용할 수 있어요.

Dynamic MCP가 동작하는 모습을 보려면 AI 클라이언트를 Docker MCP Toolkit에 연결하고 다음 프롬프트를 시도해 보세요:

What MCP servers can I use for working with SQL databases?

이 프롬프트가 주어지면 에이전트가 MCP Toolkit이 제공하는 mcp-find 도구를 사용해 MCP 카탈로그에서 SQL 관련 서버를 검색해요.

세션에 서버를 추가하려면 프롬프트만 작성하면 MCP Toolkit이 서버 설치와 실행을 처리해 줘요:

Add the postgres mcp server

코드 모드로 도구 구성하기

code-mode 도구는 여러 MCP 서버 도구를 결합한 커스텀 JavaScript 함수를 만들 수 있는 실험 기능으로 제공돼요. 의도된 사용 사례는 단일 작업에서 여러 서비스를 조정하는 워크플로를 가능하게 하는 거예요.

참고: 코드 모드는 초기 개발 단계라 아직 일반 사용에 신뢰할 만한 수준은 아니에요. 문서는 현재 의도적으로 사용 예시를 생략하고 있어요.

핵심 Dynamic MCP 기능(mcp-find, mcp-add, mcp-config-set, mcp-remove)은 문서대로 동작하며 현재 사용에서는 이를 중심으로 하는 걸 권장해요.

아키텍처는 다음과 같이 동작해요:

  1. 에이전트가 서버 이름 목록과 도구 이름으로 code-mode를 호출한다
  2. 게이트웨이가 해당 서버들의 도구에 접근할 수 있는 샌드박스를 만든다
  3. 지정된 이름으로 현재 세션에 새 도구가 등록된다
  4. 에이전트가 새로 만든 도구를 호출한다
  5. 코드가 지정된 도구에 접근하며 샌드박스에서 실행된다
  6. 결과가 에이전트로 반환된다

샌드박스는 제한된 권한의 격리된 컨테이너에서 이미 실행 중인 MCP 도구를 통해서만 외부 세계와 상호작용할 수 있어요.

보안 고려 사항

Dynamic MCP는 MCP Toolkit의 정적 MCP 서버 구성과 동일한 보안 모델을 유지해요:

  • MCP 카탈로그의 모든 서버는 Docker가 빌드, 서명, 유지 관리해요
  • 서버는 제한된 리소스의 격리된 컨테이너에서 실행돼요
  • 코드 모드는 MCP 도구를 통해서만 상호작용할 수 있는 격리된 샌드박스에서 에이전트가 작성한 JavaScript를 실행해요
  • 자격 증명은 게이트웨이가 관리하고 컨테이너에 안전하게 주입해요

동적 기능의 핵심 차이는 에이전트가 런타임 중에 새 도구를 추가할 수 있다는 점이에요.

Dynamic MCP 비활성화

Dynamic MCP는 MCP Toolkit에서 기본적으로 활성화돼요. 정적으로 구성된 MCP 서버만 사용하고 싶다면 동적 도구 기능을 비활성화할 수 있어요:

$ docker mcp feature disable dynamic-tools

나중에 기능을 다시 활성화하려면:

$ docker mcp feature enable dynamic-tools

이 설정을 변경한 후에는 연결된 MCP 클라이언트를 재시작해야 할 수도 있어요.

더 보기

동적 도구를 어떻게 활용할 수 있는지에 대한 더 많은 예시와 영감은 Docker 블로그의 Dynamic MCP servers with Docker 게시물을 확인해 보세요.

더 알아보기 (Learn more)