We Are Missing the Point of MCP: It’s Not Just About Tools
- MCP(Model Context Protocol)는 단순히 도구(tools)에 관한 것이 아니라, 클라이언트와 서버 간의 양방향 통신을 가능하게 하는 프로토콜이다. 🤝
- 클라이언트의 역할이 중요하며, 클라이언트가 MCP 서버 호출을 담당하므로 사용자 경험에 큰 영향을 미친다. 💻
- MCP의 5가지 핵심 기능은 프롬프트(prompts), 리소스(resources), 도구(tools), 샘플링(sampling), 루트(routes)이다. 🔑
- 도구는 가장 흔히 사용되는 기능으로, Slack MCP 서버의 채널 목록 조회, 메시지 전송 등 Slack API 관련 작업을 수행한다. 🛠️
- 리소스는 클라이언트와 서버 간에 공유되는 추상적인 정의로, 파일이나 데이터베이스 내 특정 객체에 대한 URI를 제공한다. 🗂️
- 프롬프트 기능을 통해 서버는 클라이언트에게 완전한 프롬프트 템플릿을 제공하고, 파라미터 설정을 허용하여 서버 구현자의 부담을 줄인다. 💡
- 클라이언트는 샘플링을 통해 MCP 서버가 클라이언트의 LLM(Large Language Model) 생성을 요청할 수 있도록 한다. 🧪
- 루트는 리소스 접근에 대한 경계를 정의하여 MCP 서버가 다른 리소스를 실수로 건드리지 않도록 제한한다. 📍
- MCP 클라이언트와 서버는 초기화 단계를 거쳐 서로의 기능을 파악하고 양방향 통신 채널을 설정한다. 📡
- 실제 MCP 서버 구현은 대부분 도구 기능에 집중되어 있지만, MCP는 훨씬 더 많은 기능을 제공할 수 있다. 🌐
- Slack MCP 서버는 도구 기능만 제공하며, SQLite MCP 서버는 프롬프트 기능을 추가로 제공한다. 💾
- 클라이언트가 서버에서 제공하는 프롬프트 템플릿을 사용자에게 효과적으로 보여주는 것이 중요하다. 🖼️
- 많은 클라이언트들이 도구 기능만 구현하고 있으며, 샘플링 기능은 아직 구현되지 않은 경우가 많다. 🚧
- 샘플링은 클라이언트가 LLM 상호 작용을 제어하고, 다른 서버의 컨텍스트를 활용하여 협업할 수 있도록 하는 중요한 기능이다. 🧩