MCP 도구
Sinaptic® DROID+는 외부 도구를 에이전트에 연결하기 위해 Model Context Protocol (MCP)을 지원합니다. MCP 서버는 웹 검색, 파일 액세스, 데이터베이스 쿼리 및 모든 맞춤형 API와 같은 기능을 제공하며, 에이전트는 이를 호출 가능한 도구로 사용할 수 있습니다.
Sinaptic® DROID+에서의 MCP 작동 방식
MCP 서버는 Sinaptic® DROID+와 함께 서브프로세스로 실행됩니다. 이들은 JSON-RPC 2.0을 사용하여 stdio를 통해 통신합니다. 에이전트가 도구를 사용해야 할 때, Sinaptic® DROID+는 해당 MCP 서버에 요청을 보내고 그 결과를 LLM에 반환합니다.
에이전트 → DROID+ → MCP 서버 (서브프로세스) → 외부 서비스
← 결과
각 MCP 서버는 이름, 설명 및 입력 스키마와 함께 도구 세트를 선언합니다. LLM은 이를 사용 가능한 함수 호출(function call)로 인식합니다.
설정
MCP 서버는 droid.yaml의 mcp 섹션에서 설정합니다.
mcp:
servers:
web-search:
command: "npx"
args: ["-y", "@anthropic/mcp-web-search"]
env:
BRAVE_API_KEY: "${BRAVE_API_KEY}"
filesystem:
command: "npx"
args: ["-y", "@anthropic/mcp-filesystem", "/data"]
각 서버 항목은 다음을 지정합니다:
- command — 실행할 실행 파일
- args — 명령줄 인수
- env — 서브프로세스에 전달되는 환경 변수 (
${VAR}구문 지원)
에이전트에서 MCP 도구 사용하기
MCP 서버가 전역적으로 설정되면, 에이전트는 해당 도구를 참조하여 사용할 수 있습니다.
# configs/agents/research-agent.yaml
name: "research-agent"
description: "웹 검색 및 파일 읽기가 가능한 에이전트"
model:
name: "gpt-4o-mini"
personality: |
당신은 리서치 어시스턴트입니다. 최신 정보를 찾으려면 웹 검색을 사용하고,
참조 문서를 읽으려면 파일 시스템을 사용하세요.
tools:
- name: "current_time"
type: "builtin"
# 설정된 서버의 MCP 도구들은 자동으로 사용 가능해집니다
droid.yaml에 MCP 서버가 설정되면, 해당 도구들은 모든 에이전트에서 사용할 수 있습니다. LLM은 함수 호출 스키마의 일부로 도구 정의를 수신하며 필요에 따라 이를 호출할 수 있습니다.
인기 있는 MCP 서버
웹 검색 (Brave)
mcp:
servers:
web-search:
command: "npx"
args: ["-y", "@anthropic/mcp-web-search"]
env:
BRAVE_API_KEY: "${BRAVE_API_KEY}"
web_search 도구를 제공합니다. Brave Search API 키가 필요합니다.
파일 시스템 액세스
mcp:
servers:
filesystem:
command: "npx"
args: ["-y", "@anthropic/mcp-filesystem", "/data/docs"]
read_file, write_file, list_directory 도구를 제공합니다. 경로 인수는 해당 디렉토리로 액세스를 제한합니다.
데이터베이스 (PostgreSQL)
mcp:
servers:
database:
command: "npx"
args: ["-y", "@anthropic/mcp-postgres"]
env:
DATABASE_URL: "${DATABASE_URL}"
데이터베이스에 대한 읽기 전용 SQL 쿼리를 위한 query 도구를 제공합니다.
맞춤형 MCP 서버
원하는 언어로 직접 MCP 서버를 작성할 수 있습니다. 서버는 다음 사항만 충족하면 됩니다:
- stdin에서 JSON-RPC 2.0 메시지 수신
- stdout에 응답 작성
tools/list메서드를 통해 사용 가능한 도구 선언
Python MCP 서버 예시:
mcp:
servers:
my-tools:
command: "python"
args: ["./tools/my_server.py"]
env:
API_TOKEN: "${MY_API_TOKEN}"
서버 구축에 대한 자세한 내용은 MCP 사양을 참조하세요.
MCP + Docker
Docker에서 Sinaptic® DROID+를 실행할 때, MCP 서버는 컨테이너 내부에서 해당 런타임을 사용할 수 있어야 합니다. npm 기반 MCP 서버의 경우 이미지에 Node.js가 필요합니다.
옵션 1: Node.js를 추가하는 맞춤형 Dockerfile 사용:
FROM sinapticai/droid:latest AS base
# MCP 서버 종속성 추가
COPY --from=node:20-alpine /usr/local/bin/node /usr/local/bin/
COPY --from=node:20-alpine /usr/local/bin/npx /usr/local/bin/
옵션 2: MCP 서버를 별도의 컨테이너로 실행하고 Sinaptic® DROID+가 stdio 대신 네트워크를 통해 연결하도록 설정 (네트워크 지원 MCP 전송 계층 필요).
MCP 디버깅
MCP 통신을 확인하려면 디버그 로깅을 활성화하세요.
logging:
level: "debug"
이렇게 하면 도구 호출 및 결과를 포함하여 Sinaptic® DROID+와 MCP 서버 간의 모든 JSON-RPC 메시지가 기록됩니다.
제한 사항
- Community Edition의 MCP 서버는 Pro/Enterprise 버전과 동일하게 작동하며, MCP에 대한 기능 제한은 없습니다.
- 각 MCP 서버는 별도의 서브프로세스로 실행됩니다. 서버 수를 적절하게 유지하세요(일반적으로 2~5개).
- MCP 서버는 Sinaptic® DROID+가 실행되는 시스템(또는 컨테이너)에서 사용 가능해야 합니다.