Pinterest가 AI에이전트를 위한 프로덕션 MCP 에코시스템을 구축한 방법
(medium.com)- MCP를 AI 에이전트의 도구 연결 표준으로 채택해, IDE·내부 챗·AI 에이전트 등 실제 엔지니어링 워크플로우에 프로덕션 수준으로 통합한 Pinterest의 구축 경험
- 단일 모놀리식 서버 대신 도메인별 다수의 MCP 서버(Presto, Spark, Airflow 등)와 중앙 레지스트리를 조합한 아키텍처 선택
- 엔드유저 JWT + SPIFFE 메시 아이덴티티 이중 인증 레이어와 비즈니스 그룹 기반 접근 제어로 민감 데이터에 대한 최소 권한 원칙 적용
- 2025년 1월 기준 월 66,000건 호출, 844명의 월간 활성 사용자, 추정 월 7,000시간 절감이라는 정량적 성과 달성
- MCP를 단순 실험이 아닌 엔지니어 생산성 인프라로 자리잡게 한 핵심은 보안 우선 설계, 통합 배포 파이프라인, 그리고 직원이 이미 사용하는 도구에의 직접 통합
MCP 도입 배경
- Model Context Protocol(MCP) 은 LLM이 도구·데이터 소스와 통신할 때 모델·도구별로 별도 통합을 구현하는 대신 통합 클라이언트-서버 프로토콜을 사용하는 오픈소스 표준
- Pinterest는 MCP를 단순 Q&A가 아닌 엔지니어링 작업 자동화 기반으로 활용—"로그를 읽고 문제를 찾아라"부터 "버그 티켓을 분석해 수정 PR을 제안하라"까지를 목표로 설정
초기 아키텍처 설계
로컬이 아닌 클라우드 호스팅
- 로컬 MCP 서버(stdio 통신) 방식도 지원하지만, 내부 클라우드 호스팅 MCP 서버를 기본 경로(paved path)로 채택
- 내부 라우팅·보안 로직 적용이 용이한 환경에서의 운영이 목적
- 로컬 서버는 실험 용도로만 허용
다수의 소형 서버 vs. 단일 모놀리식 서버
- 단일 거대 서버 대신 도메인별 소형 MCP 서버 다수를 선택
- 서버별로 서로 다른 접근 제어 적용 가능
- 모델의 컨텍스트가 불필요하게 채워지는 문제 방지
- 초기 피드백: 새 MCP 서버 구축에 배포 파이프라인·서비스 설정·운영 셋업 등 사전 작업이 너무 많다는 문제 제기
- 해결책으로 통합 배포 파이프라인 구축—팀은 도구 로직만 정의하면 플랫폼이 배포·스케일링을 자동 처리
내부 MCP 레지스트리
- 승인된 MCP 서버 목록과 연결 방법을 관리하는 단일 진실 공급원(source of truth)
- 웹 UI: 사람이 서버 탐색, 소유 팀, 지원 채널, 보안 태세, 라이브 상태, 사용 가능한 도구 확인
- API: AI 클라이언트(내부 AI 챗, IDE 통합, 에이전트)가 서버 탐색·검증, "이 사용자가 서버 X를 사용할 수 있는가" 판단에 활용
- 레지스트리에 등록된 서버만 프로덕션 승인 서버로 인정—거버넌스 백본 역할
운영 중인 MCP 서버 현황
주요 서버 (사용량 기준)
- Presto MCP 서버: 트래픽 기준 최고 사용량 서버—에이전트(AI 지원 IDE 포함)가 Presto 기반 데이터를 온디맨드로 조회해 대시보드 전환 없이 워크플로우 내 직접 데이터 활용
- Spark MCP 서버: AI Spark 디버깅 경험의 기반—Spark 잡 실패 진단, 로그 요약, 구조화된 근본 원인 분석 기록 지원으로 운영 스레드를 재사용 가능한 지식으로 전환
- Knowledge MCP 서버: 범용 지식 엔드포인트—내부 AI 봇이 회사 지식·Q&A, 문서 및 디버깅 질문에 활용
Pinterest 내부 서비스 통합
- 다수 Pinterest 직원이 매일 사용하는 내부 LLM 웹 챗 인터페이스에 MCP 도구 통합
- 프론트엔드가 자동으로 OAuth 플로우 처리 후 현재 사용자에게 허용된 도구 목록 반환
- AI 챗 에이전트가 MCP 도구를 에이전트 툴셋에 직접 바인딩해 일반 도구 호출과 동일한 경험 제공
-
내부 채팅 플랫폼 AI 봇에도 MCP 도구 탑재
- 레지스트리 API를 통한 인증·인가 처리
- 특정 MCP 도구를 특정 채널로 제한하는 기능 지원 (예: Spark MCP 도구는 Airflow 지원 채널에서만 사용 가능)
보안·거버넌스·정책
MCP 보안 표준
- MCP Security Standard 별도 정의—실험용이 아닌 모든 MCP 서버는 반드시 소유 팀 지정, 내부 레지스트리 등록, 보안/법무·개인정보보호/(해당 시) GenAI 검토 티켓 승인 필수
- 검토 결과에 따라 서버 접근 가능 사용자 그룹 등 보안 정책 결정
인증(AuthN) 및 인가(AuthZ) 이중 레이어
-
엔드유저 JWT 기반 플로우
- 사용자가 AI 챗, IDE 플러그인, AI 봇 등 서피스에서 상호작용
- 클라이언트가 내부 인증 스택 대상 OAuth 플로우 수행 후 JWT를 MCP 레지스트리·대상 서버로 전달
- Envoy가 JWT 검증 및
X-Forwarded-User,X-Forwarded-Groups헤더 매핑, 거친 수준의 보안 정책 적용 - 서버 내부에서
@authorize_tool(policy='…')데코레이터로 세밀한 권한 제어 (예:get_revenue_metrics는 Ads-eng 그룹만 호출 가능)
-
비즈니스 그룹 기반 접근 게이팅
- 모든 인증된 Pinterest 직원·계약자에게 일괄 접근 허용 대신, 민감 서버는 JWT에서 비즈니스 그룹 멤버십 추출 후 승인된 그룹 소속 여부 검증
- Presto MCP 서버는 넓은 서피스에서 기술적으로 접근 가능하지만, Ads·Finance·특정 인프라팀 등 승인된 그룹만 세션 수립 및 고권한 도구 실행 가능
-
서비스 전용 SPIFFE 기반 플로우
- 저위험·읽기 전용 시나리오에서는 SPIFFE 기반 인증(메시 아이덴티티)만으로 처리
- 루프에 엔드 유저가 없고 폭발 반경이 엄격히 제한된 경우에만 사용
MCP OAuth 표준과의 차이
- MCP 공식 스펙은 서버별 OAuth 2.0 인증 플로우(동의 화면, 서버별 토큰 관리)를 정의하나, Pinterest는 기존 세션을 재활용하는 방식을 채택
- 사용자가 AI 챗 등 서피스를 열 때 이미 내부 인증 스택 인증 완료—추가 로그인 프롬프트·동의 대화 불필요
- Envoy와 정책 데코레이터가 백그라운드에서 투명하게 인가 처리
Human-in-the-Loop
- MCP 서버가 자동화 액션을 가능하게 하므로 수동 조작 대비 폭발 반경이 큼
- 에이전트 가이던스에 따라 민감하거나 비용이 큰 액션 전 사람의 승인 필수—에이전트가 액션을 제안하면 사람이 (일괄 처리도 가능) 승인·거부
- elicitation 활용으로 위험한 액션(예: 테이블 데이터 덮어쓰기) 전 확인 요청
관측 가능성 및 성과 지표
- 모든 MCP 서버에 라이브러리 함수 적용—입출력 로깅, 호출 횟수, 예외 추적, 텔레메트리 기본 제공
- 에코시스템 수준 측정 지표: 등록된 MCP 서버·도구 수, 전체 서버 호출 수, 호출당 예상 절감 시간(서버 소유자가 경량 사용자 피드백·이전 수작업 워크플로우 비교 기반으로 산정)
- 단일 북극성 지표: 절약된 시간(time saved)—호출 횟수 × 호출당 분 절감으로 영향도 개략 산출
- 2025년 1월 기준: 월 66,000건 호출, 844명의 월간 활성 사용자, 추정 월 7,000시간 절감