메인 콘텐츠로 이동하기
  1. Posts/

MCP를 이용한 카드뉴스 및 주간소식 제작 개선

·5 분

작년부터 개발·운영 중인 록 음악 커뮤니티 리얼그루브의 새로운소식 글을 이용해 일일 카드뉴스 제작주간소식 작성에 AI를 활용하고 있다.

그동안은 새로운소식 데이터를 직접 DB에서 추출한 뒤 AI에 입력하는 방식으로 작업을 진행했다. 하지만 매번 DB에 접속해 데이터를 조회·가공하고 다시 입력하는 과정을 반복해야 했고, 이 과정에서 불필요한 시간이 소모되었다. 또한 잘못된 쿼리나 실수가 발생할 경우 운영 중인 시스템 전체에 영향을 줄 가능성도 있었다.

그래서 데이터 추출과 AI 입력 과정을 보다 안전하고 효율적으로 처리하기 위해 MCP(Model Context Protocol)로 게시글을 조회하도록 하여 자동화 환경을 구현하게 되었다.

이 글에서 MCP를 어떻게 구현하고 적용했는지 작성해보려고 한다.

MCP(Model Context Protocol) #

MCP(Model Context Protocol)는 2024년 11월 25일 앤트로픽(Anthropic)이 제안한 공개 표준 프로토콜로, AI가 외부 데이터 소스와 도구, 다양한 시스템에 표준화된 방식으로 연결될 수 있도록 설계되었다. 프로토콜은 JSON-RPC 기반으로 구현되어 있으며, 특정 AI 서비스에 종속되지 않는 개방형 구조를 지향한다.

아키텍처 측면에서 MCP는 호스트(Host), 클라이언트(Client), 서버(Server)로 구성된다. 또한 MCP 서버가 AI에 기능을 제공하는 방식은 리소스(Resources), 도구(Tools), 프롬프트(Prompts)라는 세 가지 개념으로 나뉜다.1

쉽게 말해 AI 호스트2에 MCP 서버를 연결해두면, AI는 MCP 서버를 통해 필요한 데이터를 조회하거나 특정 기능을 실행할 수 있다. 이후 AI는 반환된 결과를 분석·가공해 사용자에게 자연어 형태로 전달한다. 이 과정에서 데이터 조회나 기능 실행은 도구(Tools) 또는 프롬프트(Prompts)34를 통해 이루어진다.

MCP 서버는 개발자의 PC와 같은 로컬 환경에 직접 구현할 수도 있고, 별도의 원격 서버에 구축한 뒤 AI 호스트와 연결하여 사용할 수도 있다.

현재 MCP는 앤트로픽 뿐만 아니라 OpenAI를 비롯한 다양한 AI 서비스에서도 지원하고 있으며, 관련 생태계도 빠르게 성장하고 있다. 이미 공개된 MCP를 손쉽게 설치하고 활용할 수 있도록 Smithery, PlayMCP와 같은 MCP 레지스트리 서비스도 제공되고 있다.

구현 #

최근 리얼그루브를 Laravel 12에서 13으로 업데이트했다. Laravel 13에는 AI AgentMCP가 공식 패키지⁠로 추가되었고, 이를 이용해 원격 MCP 서버를 구현했다.

이 MCP는 일반 사용자에게 공개하는 용도가 아니라 카드뉴스와 주간소식 제작용으로 사용한다. 비록 나 혼자 사용하는 서비스지만 운영 서버에 구축되어 외부에서 접근하므로 사용자 인증은 필수였고, API Key 기반 인증을 적용했다.

Tool 설계 #

일일 카드뉴스와 주간소식은 모두 새로운소식 게시글을 기반으로 제작된다. 두 작업의 차이는 조회하는 날짜 범위뿐이며, 사용하는 데이터는 동일하다. 따라서 날짜 범위에 맞는 새로운소식을 조회하는 Tool 하나를 구현해 공통으로 사용하도록 설계했다5.

Laravel MCP는 AI 클라이언트가 전달할 수 있는 입력값을 Schema로 정의⁠할 수 있다. 이를 함께 작성하면 AI가 어떤 매개변수를 사용할 수 있는지 이해하고 적절한 값을 전달할 수 있다.

Tool 구현 #

Laravel MCP의 Tool 구현은 일반적인 Controller를 작성하는 방식과 비슷해 생각보다 간단했다. 오히려 Tool을 구현하는 것보다 Laravel MCP의 동작 방식과 사용법을 이해하는 데 더 많은 시간을 사용했다.

또한 AI의 반복 호출이나 오작동으로 서버에 과도한 부하가 발생하는 상황을 방지하기 위해 Rate Limit을 적용하여 분당 최대 60회까지만 호출할 수 있도록 제한했다.

인증 #

MCP 서버는 운영 서버에 구축되어 있으며 외부에서 접근 가능하다. 비공개 서비스라고 하더라도 인증 없이 공개하는 것은 보안상 바람직하지 않다고 판단했다.

그래서 AI 클라이언트가 MCP를 사용할 때 API Key를 함께 전달하도록 구현했으며, 서버에서는 이를 검증한 뒤에만 Tool을 실행하도록 구성했다.

MCP 기능 추가 #

MCP를 구현하며 이 MCP를 카드뉴스, 주간소식 제작 뿐만 아니라 클로드 코드 등에서 궁금한 소식들을 직접 검색하여 사용할 수 있도록 검색어를 추가했다.

검색 기능 추가 후 테스트를 해보니, AI가 자체적으로 판단해 한글 검색어뿐만 아니라 영문으로도 검색을 시도하는 경우가 있었다. 예를 들어 메탈리카와 Metallica를 함께 검색하는 식이다.

이를 지원하기 위해 검색어를 쉼표(,)로 구분하면 OR 조건으로 여러 검색어를 동시에 조회할 수 있도록 검색 기능을 수정했다. 또한 검색어 Schema에도 해당 형식을 정의해 AI가 이를 활용할 수 있도록 했다.

결과 #

구현을 완료한 뒤 운영 서버에 배포하고, Claude Code에서 사용할 수 있도록 MCP 서버 주소와 API Key를 전역 설정에 등록했다.

설정을 마친 후 테스트한 결과, Claude Code가 원격 MCP 서버에 정상적으로 연결되었으며 새로운소식 데이터를 문제없이 조회할 수 있었다. 기존처럼 데이터를 직접 추출해 입력하지 않아도 AI가 필요한 시점에 MCP를 호출해 데이터를 가져오는 것을 확인할 수 있었다.

카드뉴스, 주간소식 스킬 수정 #

현재 일일 카드뉴스와 주간소식은 각각 Claude Code의 스킬(Skill)을 통해 생성하고 있다. 기존 스킬은 DB에서 직접 추출한 JSON 데이터를 입력받는 방식으로 작성되어 있었기 때문에, MCP를 이용하도록 내용을 수정했다.

이제는 다음과 같이 간단한 프롬프트만 입력하면 스킬이 자동으로 MCP를 호출해 필요한 데이터를 조회한 후 콘텐츠를 생성한다.

  • 리얼그루브 오늘 소식 카드뉴스 만들어줘
  • 리얼그루브 이번 주 주간소식 만들어줘

이제는 데이터를 직접 추출하거나 붙여넣을 필요 없이, AI가 필요한 데이터를 MCP를 통해 조회한 뒤 카드뉴스와 주간소식을 자동으로 작성할 수 있게 되었다.

마치며 #

실제 운영 중인 사이트에 MCP를 적용하면서 반복적으로 수행하던 작업을 자동화할 수 있었다.

MCP라는 개념은 문서와 예제를 통해 알고 있었지만, 직접 구현하고 운영 환경에 적용해보니 데이터가 AI까지 전달되는 과정과 동작 원리를 훨씬 명확하게 이해할 수 있었다. 역시 직접 만들어보고 사용해보는 경험이 가장 좋은 학습 방법이라는 것을 다시 한번 느꼈다.

실제로 카드뉴스와 주간소식을 제작해보니, 기존처럼 JSON을 직접 추출해 AI에 붙여넣는 방식보다 MCP를 통해 필요한 데이터를 조회하는 방식이 훨씬 편리했다. 반복적인 데이터 추출 과정이 사라지면서 작업 시간도 줄었고, 실수할 가능성도 함께 낮출 수 있었다.

현재 이 MCP는 개인적으로 사용하는 서비스이기 때문에 새로운소식 조회를 위한 Tool 하나만 구현했다. 하지만 외부에 공개하는 서비스로 확장한다면 기능별로 Tool을 세분화하고, 별도의 MCP 서버를 구축하는 방향이 적합할 것으로 생각한다. 그 과정에서 기능이 커진다면, 별도의 프로젝트로 구현 / 별도 서버에 배포하는 것이 구현과 유지보수가 훨씬 수월할 것이다. 이 때 현재 상황 등을 고려해 MCP Python SDK 등을 활용할 수도 있을 것이다.

이번 구현에서 특히 흥미로웠던 점은 AI가 MCP를 통해 조회한 데이터를 단순히 출력하는 것이 아니라 의미를 이해하고 가공해 결과를 만들어낸다는 점이었다. 이를 보면서 카드뉴스 제작뿐 아니라 리얼그루브의 검색 기능에도 AI를 접목할 수 있겠다는 가능성을 발견했다.

앞으로는 AI Agent를 리얼그루브에 적용해 사용자의 질문을 이해하고 관련 뉴스와 정보를 종합해 답변하는 검색 기능도 실험해보고자 한다. 물론 이를 위해서는 AI API 비용 문제를 해결하는 것이 먼저일 것이다.


  1. MCP(Model Context Protocol) 란? (2025 4). MCP란 무엇인가: LLM Agent 동작 흐름으로 이해하는 MCP - 한컴테크. https://tech.hancom.com/mcp-llm-agent ↩︎

  2. Claude Code, Claude Desktop과 같은 AI를 담고 있는 프로그램 ↩︎

  3. 도구(Tool)은 AI가 프롬프트를 분석해 사용자에게 확인(혹은 자동) 으로 호출하지만, 프롬프트(Prompt)는 사용자가 AI 호스트에서 명시적으로 호출해야 함 ↩︎

  4. 리소스(Resource)는 사용자가 아닌 AI가 참조하는 요소로, AI 모델이 컨텍스트(맥락)를 파악하기 위해 읽을 수 있는 데이터 및 정보(파일, 데이터베이스, API 응답 등)를 정의하는 요소 (개발자가 정의해야 함) ↩︎

  5. 프롬프트(Prompt)로 구현하지 않는 이유는 프롬프트는 AI 호스트에 사용자가 직접 명시적으로 호출해야 하기 때문이다. 스킬에 넣어 사용하는 방법도 고려했으나, 프롬프트의 목적(원래 사용자가 AI 호스트에서 직접 선택·호출하는 설계)에 맞지 않기 때문에 제외였음 ↩︎