앞에서는 add라는 도구를 직접 호출하는 방식이었는데, 이제는 이를 LLM의 프롬프트 내에서 호출하여 사용해 보도록 하겠습니다. 사실 MCP의 사용 이유는 LLM이 프롬프트를 사용해 호출할 수 있다는 것 때문입니다.

Dify에서 ‘에이전트’ 앱 스타일로 빈 앱을 하나 만들면서 시작합니다.

여기서 사용한 프롬프트는 다음과 같습니다.


# 가능한 것
`add` 라는 도구를 사용해서 덧셈을 계산하는게 가능해. 

# 작업 순서
a에는 를 b에는  를 할당해 `add`를 사용해 계산하면 됨

너는 `add` 라는 도구를 호출하면 되. 호출 할 때 JSON을 만들어 호출해야 해

예를 들어 다음과 같은 json포멧이면 OK

```json

{
  "add": {
    "tool_name": "add",
    "arguments": "{\"a\": 5,\"b\":4}"
  }
}

```

위 동영상내에서 수행중에 잠깐 서버 접속 오류가 발생한 이유는 제가 모르고 서버를 안띄워 놓았기 때문이었습니다.

수행 영상 중 ‘도구’ 부분에 ‘fetch tool’ 과 ‘call tool’ 을 추가하는 부분이 있는데 fetch tool은 접속된 MCP 서버의 모든 도구 목록을 가져오며 여기에서 call tool을 통해 LLM이 프롬프트에서 언급된 도구를 호출하게 됩니다.

여기까지 해서 MCP SSE를 Dify에 적용하여 어떻게 사용되는지를 정리했습니다. MCP를 사용하는 분들이 ‘보안’ 에 대해 많은 우려를 하던데 제가 봐도 인증 매커니즘이 따로 없어 MCP로 원격 소스를 연결하여 쓰는 일은 좀 위험하다는 생각이 들었습니다. Remote로 MCP + Database 서버를 핸들링한다 했을 때 누구나 DB에 접근하고 수정할 수 있을 것 같았습니다( 스미더리 사이트 에서 보더라도 Remote 보다도 Local이 많은 이유가 바로 이 문제 때문이 아닌가 하는 생각이 듭니다).

MCP서버가 RAG와의 차이점도 생각해 보면

  장점 단점
MCP 다양한 기능 확장 가능 속도가 느리고 유사검색이 안됨
RAG 벡터 검색이 가능하며 속도가 빠름 검색 이외의 기능에 대해서는 지원이 어려움

어쨌든 기술은 재미있게 발전하고 있네요…!