23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
DEVOCEAN OpenLab 2025 프로젝트의 일환으로 진행된 '멀티모달 기반 AI 챗봇 기술 연구 및 개발' 중 Dify와 Morphik MCP(Model Context Protocol) 연동 테스트 결과를 자세히 공유합니다 [i].
이 글은 MCP가 무엇인지부터 실제 연동 과정에서 발생한 기술적 문제, 그리고 성능 분석을 통해 얻은 향후 개선 방향을 소개합니다.
세미나 발표자료 파일 첨부하여 드립니다. (Dify & Morphik MCP 연동테스트 결과)
AI 모델이 단순히 질문에 답하는 것을 넘어 외부 서비스나 도구를 활용하려면 표준화된 통신 방식이 필요합니다.
MCP(Model Context Protocol)는 AI 모델과 외부 도구/서비스를 연결하는 표준 프로토콜입니다 [i].
MCP의 주요 개요 및 장점은 다음과 같습니다:
개요: 다양한 데이터 소스와 AI 에이전트의 통합을 용이하게 합니다 [i].
장점: 도구 연동을 일관된 방식으로 처리하며 [i], 새로운 도구 추가가 용이하고 [i], 다양한 AI 플랫폼과 호환 가능합니다 [i].
Dify 플랫폼에서 MCP 도구를 활용하는 방법은 크게 두 가지가 있습니다.
방법 | 커스텀 도구 생성 (OpenAPI 방식) | 플러그인 활용 (Marketplace 방식) |
|---|---|---|
장점 | 특정 기능을 세밀하게 제어 가능 | 간편한 설정으로 다양한 MCP 서버 연동 |
OpenAPI 방식으로 직접 도구 등록 | 여러 MCP 서비스를 동시에 관리 가능 | |
단점 | OpenAPI 스키마 직접 작성 필요 등 구현의 어려움 | 커스터마이징의 제약 (세부 파라미터 조정 제한적) |
API 변경 시 스키마 수동 업데이트 필요 | 플러그인이 제공하는 기능 및 업데이트에 의존적 |
본 테스트에서는 간편한 연동 및 관리의 장점을 활용하기 위해 Dify Marketplace에서 제공하는 플러그인 방식을 채택했습니다.
선택한 플러그인: Dify Marketplace에는 540개 이상의 플러그인이 있으며, 이 중 MCP 프로토콜을 지원하는 'Agent Strategies' 플러그인이 주목받고 있습니다.
저희는 **Agent Strategies (Support MCP Tools)**를 선택했으며, 이 플러그인은 88,667회 이상의 많은 설치 수를 보유하고 있으며 Function Calling과 ReAct 에이전트 전략을 모두 제공합니다.
안정적이고 확장 가능한 MCP 통신을 위해 전송 방식은 빠르게 진화했습니다.
MCP는 초기 HTTP+SSE 방식의 한계를 극복하고 2025년 3월에 Streamable HTTP를 공식 표준으로 변경했습니다.
항목 | HTTP + SSE 방식 (2024.11 ~ 2025.03) | Streamable HTTP 방식 (2025.03 ~ 현재) |
|---|---|---|
엔드포인트 | 양방향 통신을 위해 2개 필요 (서버→클라이언트: SSE, 클라이언트→서버: HTTP POST) | 하나의 HTTP 엔드포인트로 양방향 통신 구현 |
연결 지속성 | 네트워크 끊김 시 스트림 재개 불가능 | messageId 기반 Resume 기능 지원, 중단 지점부터 재개 가능 |
서버 부하 | 장시간 연결 유지 필요, 사용자 증가 시 서버 리소스 과부하 | 짧은 연결로 구성 가능, 서버 리소스 효율적 |
호환성/표준 | 제한적 양방향 통신 | MCP 공식 표준으로 채택 (2025-03-26부터) |
로드밸런서/프록시 호환성 우수 및 방화벽 친화적 |
Streamable HTTP 방식은 Transfer-Encoding: chunked를 통해 점진적 응답을 제공하며,
AI 응답 중 사용자 제어(중단/수정)가 가능하여 기존 방식의 한계를 극복했습니다.
이번 테스트의 목적은 사용자 질문이 Morphik 검색이 필요한지를 판단하고, 필요하다면 MCP 에이전트가 지식 베이스를 검색하여 답변하도록 하는 워크플로우를 구성하는 것이었습니다.
테스트 환경 및 절차:
환경:
MCP 서버: http://morphik_mcp.dev.moonid.ai.kr:8976/mcp
Dify 플랫폼: https://dify.dev.moonid.ai.kr
플러그인: Agent Strategies (Support MCP Tools)
연동 절차: Morphik MCP 서버 구성 → Dify Marketplace에서 MCP 플러그인 설치 → Dify 워크플로우에 Agent 노드 추가 → MCP 서버 설정 입력 및 연결 테스트 → 질의응답 테스트 실행.
워크플로우 설정 예시:
시작 노드: 실제 예시 질문 ("Morphik 문서 데이터베이스에 몇 개의 문서가 있나요?") 추가.
질문 분류 노드: "Morphik 지식베이스 검색이 필요한지 vs 일반 질문인지"를 분류하도록 기준 명시.
문제 발생: Claude Desktop에서는 정상 작동하던 Morphik MCP 도구가 Dify 환경에서 LLM 모델 호출을 차단하는 에러를 발생시켰습니다.
원인: ingest-file-from-path 도구의 rules 파라미터가 구체적인 타입 정보 없이 z.array(z.any()) 형태로 정의되어 있었기 때문입니다.
Dify는 이러한 불명확한 스키마를 허용하지 않았습니다.
해결 과정: 문제 툴(ingest-file-from-path, ingest-files-from-paths, ingest-text 등 데이터 업로드 기능)들이 타입 정보가 부족한 업로드 툴임을 확인하고,
업로드 기능을 제외한 조회 기능에 대해서만 테스트를 진행했습니다.
이 수정 이후 LLM 호출에 성공하며 정상 작동을 확인했습니다.
테스트 결과, Streamable HTTP 방식을 사용하여 Dify와 Morphik의 MCP 연동에는 성공했습니다.
MCP 도구 정상 호출 및 응답이 확인되었습니다.
성공적인 연동에도 불구하고, 다음과 같은 심각한 성능 제약 사항이 발견되었습니다:
낮은 답변 품질: Morphik Dashboard 대비 답변 퀄리티가 낮았습니다.
토큰 제한 초과: 검색 시 토큰 초과로 답변 생성이 실패하는 경우가 다수 발생했습니다.
기능적 한계: "Morphik 지식 베이스에 등록된 파일의 총 개수는?"과 같은 간단한 목록 조회 수준의 질문만 답변 가능했습니다.
복잡한 작업 실패: "Morphik 지식 베이스에서 resume_1.pdf - Sally Branders의 이력서를 읽고 요약해주세요"와 같이 파일을 읽고 답하는 것은 거의 불가능했습니다.
구조적 제약: MCP 플러그인 방식의 구조적 한계로 인해 세부 파라미터(예: top_k, min_score) 제어가 제한적이었습니다.
비효율적인 검색 결과: 과도한 메타데이터 및 불필요한 정보가 검색 결과에 포함되어 처리 효율이 낮았습니다.
항목 | Morphik Dashboard | Dify Morphik MCP 연동 |
|---|---|---|
답변 품질 | 높음 | 중간 |
토큰 제한 | 여유로움 | 자주 초과 |
파라미터 제어 | 세밀한 조정 가능 | 제한적 |
테스트 결과를 바탕으로, Dify 환경에서의 MCP 성능을 최적화하기 위한 개선 방향을 단기, 중기, 장기로 나누어 계획하고 있습니다.
단기: Dify 커스텀 도구로 직접 구현하여 플러그인 방식의 한계를 극복하고 더 세밀한 제어를 확보할 계획입니다.
중기: 플러그인 성능 최적화 작업을 진행할 예정입니다.
장기: Agno + LangGraph + Dify + n8n 조합 등을 활용하여 생태계 확장 및 고도화를 목표로 합니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.