개요
Model Context Protocol (MCP)는 AI 에이전트가 MCP 서버로 알려진 외부 서비스와 통신함으로써 LLM에 컨텍스트를 제공할 수 있도록 표준화된 방식을 제공합니다.crewai-tools
라이브러리는 CrewAI의 기능을 확장하여, 이러한 MCP 서버에서 제공하는 툴을 에이전트에 원활하게 통합할 수 있도록 해줍니다.
이를 통해 여러분의 crew는 방대한 기능 에코시스템에 접근할 수 있습니다.
현재 다음과 같은 전송 메커니즘을 지원합니다:
- Stdio: 로컬 서버용 (동일 머신 내 프로세스 간 표준 입력/출력을 통한 통신)
- Server-Sent Events (SSE): 원격 서버용 (서버에서 클라이언트로의 일방향, 실시간 데이터 스트리밍, HTTP 기반)
- Streamable HTTP: 원격 서버용 (유연하며 잠재적으로 양방향 통신이 가능, 주로 SSE를 활용한 서버-클라이언트 스트림 제공, HTTP 기반)
비디오 튜토리얼
CrewAI와 MCP 통합에 대한 종합적인 안내를 위해 이 비디오 튜토리얼을 시청하세요:설치
crewai-tools
와 함께 MCP를 사용하기 전에, 아래 명령어를 통해 mcp
추가 crewai-tools
종속성을 설치해야 합니다:
주요 개념 및 시작하기
crewai-tools
의 MCPServerAdapter
클래스는 MCP 서버에 연결하고 해당 도구들을 CrewAI 에이전트에서 사용할 수 있도록 하는 기본 방법입니다. 다양한 전송 메커니즘을 지원하며 연결 관리를 간소화합니다.
파이썬 컨텍스트 매니저(with
문)를 사용하는 것이 MCPServerAdapter
를 위한 권장 방법입니다. 이를 통해 MCP 서버와의 연결 시작 및 종료가 자동으로 처리됩니다.
연결 구성
MCPServerAdapter
는 연결 동작을 맞춤화할 수 있는 여러 구성 옵션을 지원합니다:
connect_timeout
(선택 사항): MCP 서버에 연결을 설정하기 위해 대기할 최대 시간(초 단위)입니다. 명시하지 않으면 기본값은 30초입니다. 응답 시간이 가변적인 원격 서버에 특히 유용합니다.
필터링 도구
도구를 필터링하는 방법에는 두 가지가 있습니다:- 딕셔너리 스타일의 인덱싱을 사용하여 특정 도구에 접근하기.
- 도구 이름 목록을
MCPServerAdapter
생성자에 전달하기.
딕셔너리 스타일 인덱싱을 사용하여 특정 도구에 접근하기
MCPServerAdapter
생성자에 도구 이름의 리스트를 전달하세요.
CrewBase와 함께 사용하기
CrewBase 클래스 내에서 MCPServer 도구를 사용하려면get_mcp_tools
메서드를 사용하세요. 서버 구성은 mcp_server_params
속성을 통해 제공되어야 합니다. 단일 구성 또는 여러 서버 구성을 리스트 형태로 전달할 수 있습니다.
연결 타임아웃 구성
mcp_connect_timeout
클래스 속성을 설정하여 MCP 서버의 연결 타임아웃을 구성할 수 있습니다. 타임아웃을 지정하지 않으면 기본값으로 30초가 사용됩니다.
도구 필터링
get_mcp_tools
메서드에 도구 이름의 리스트를 전달하여, 에이전트에 제공되는 도구를 필터링할 수 있습니다.
MCP 통합 탐색
Stdio 전송
표준 입력/출력을 통해 로컬 MCP 서버에 연결합니다. 스크립트와 로컬 실행 파일에 이상적입니다.
SSE 전송
실시간 데이터 스트리밍을 위해 Server-Sent Events를 사용하여 원격 MCP 서버와 통합합니다.
스트림 가능한 HTTP 전송
유연한 스트림 가능한 HTTP를 활용하여 원격 MCP 서버와 안정적으로 통신할 수 있습니다.
다중 서버 연결
하나의 어댑터를 사용하여 여러 MCP 서버의 도구를 동시에 통합할 수 있습니다.
보안 고려사항
에이전트를 안전하게 보호하기 위한 MCP 통합의 중요한 보안 모범 사례를 검토하세요.
GitHub 저장소
CrewAI MCP 데모
MCP와 함께 안전하게 사용하기
항상 MCP 서버를 사용하기 전에 해당 서버를 신뢰할 수 있는지 확인하세요.
보안 경고: DNS 리바인딩 공격
SSE 전송은 적절하게 보안되지 않은 경우 DNS 리바인딩 공격에 취약할 수 있습니다. 이를 방지하려면 다음을 수행하세요:- 항상 Origin 헤더를 검증하여 들어오는 SSE 연결이 예상한 소스에서 오는지 확인합니다.
- 서버를 모든 네트워크 인터페이스(0.0.0.0)에 바인딩하는 것을 피하고, 로컬에서 실행할 때는 localhost(127.0.0.1)에만 바인딩합니다.
- 모든 SSE 연결에 대해 적절한 인증을 구현합니다.
제한 사항
- 지원되는 프리미티브: 현재
MCPServerAdapter
는 주로 MCPtools
를 어댑팅하는 기능을 지원합니다. 다른 MCP 프리미티브(예:prompts
또는resources
)는 현재 이 어댑터를 통해 CrewAI 컴포넌트로 직접 통합되어 있지 않습니다. - 출력 처리: 어댑터는 일반적으로 MCP tool의 주요 텍스트 출력(예:
.content[0].text
)을 처리합니다. 복잡하거나 멀티모달 출력의 경우 이 패턴에 맞지 않으면 별도의 커스텀 처리가 필요할 수 있습니다.