11월 25일 엔트로픽(클로드)에서 MCP라는 것에 대한 공지가 올라왔다.
https://www.anthropic.com/news/model-context-protocol
MCP
MCP는 오픈소스 Model Context Protocol이고 이 프로토콜을 통해서 모델이 어떤 데이터(기능)에 직접 접근 할 수 있도록 해준다.
MCP 와 Tool
이전에도 Tool 이라는 개념으로 LLM이 툴 리스트를 보고 사용하면 좋을만한 툴을 골라서 사용하는 방식으로 외부 데이터에 접근할 수 있었다. 그러나 툴은 그냥 정해진 규약 없이 개발자들이 원하는 방식으로 만드는 것이라, 재사용성이 적다고 할 수 있다.
사실 MCP는 Tool의 정형화된 규약이라고 볼 수 있다. 마치 RESTFul이나 OpenTelemetry처럼 개발자들이 공통으로 사용할 규약이고 이에 맞춰서 개발하면 내껄 공유하기도 다른 사람것을 가져다 쓰기도 좋다. LLM과 데이터 소스의 통신 규약이라고 생각하면 될 것 같다.
The Protocol
MCP 프로토콜은 크게 서버, 클라이언트, 리소스로 나뉜다.
클라이언트는 MCP로 서버에게 리소스를 요청하고 서버는 MCP를 보고 실제로 리소스에 접근하는 코드를 통해서 리소스를 가져온 후, 클라이언트에게 프로토콜에 명시된 형태로 리소스를 전달한다.
SQL example
MySQL 데이터에 접근하는 것을 MCP 서버를 이용해서 하는 과정은 위와 같다. 누군가 MySQL과 통신해서 데이터를 가져오는 table list, query, search 등을 MCP 서버로 구현해놨다. LLM이 필요한 데이터가 MySQL에 있으면 우리는 이미 구현되어있는 MCP 서버를 내 로컬의 MySQL 데이터베이스에 붙히는것만 설정해주면 된다. 아래는 Claude Desktop App으로 LLM을 사용할 때 설정하면 되는 것이다.
{
"mcpServers": {
"sqlite": {
"command": "uvx",
"args": ["mcp-server-sqlite", "--db-path", "/Users/YOUR_USERNAME/test.db"]
}
}
}
이렇게 설정해주면 Claude는 MCP 서버가 어떤 일을 할 수 있는 지 알게 되고, 해당 기능이 필요할때 MCP 서버에게 요청을 보낼 수 있게 된다.
What is Good
"LLM이 데이터에 접근할 수 있게 하는 MCP"라는 멋있어보이는 타이틀이 있지만 사실 엄청 신기하고 대단한것은 아니다. 기존에 Tool로 충분히 접근하고 있던 그 방식에 권위있는 단체에서 Open된 정형화된 형식을 공표했다는데 큰 의의가 있다.
API호출로 서로 다른 서비스를 연결하는 것이 간단해졌듯이, 이런 표준화된 프로토콜은 LLM과의 통합을 더 간단하게 만들어줄 것이라고 생각한다.
Top comments (0)