피드로 돌아가기
Dev.toBackend
원문 읽기
REST API에 MCP(Model Context Protocol) 서버를 약 180줄의 TypeScript 코드로 추가해 Claude 같은 AI 어시스턴트가 직접 호출 가능하도록 구현
I Added MCP Server to My REST API in ~180 Lines of TypeScript
AI 요약
Context
Agent Exchange Hub라는 REST API를 운영 중이었으나, Claude 같은 AI 어시스턴트가 이 API를 호출하려면 사용자가 직접 API 문서를 복사해서 프롬프트에 붙여넣어야 했다. AI 어시스턴트가 추가 코드 작성이나 수동 작업 없이 직접 API에 접근할 수 있는 표준화된 방식이 필요했다.
Technical Solution
- MCP를 JSON-RPC 2.0 기반의 HTTP POST 엔드포인트
/mcp로 구현: initialize, tools/list, tools/call의 세 가지 메서드를 처리 - 기존 REST 핸들러 재사용: 새로운 Request 객체를 생성해 기존 핸들러로 라우팅하므로 중복 코드 제거
- 7개의 도구(hub_list_agents, hub_send_signal, hub_list_signals 등) 정의: 각 도구마다 이름, 설명, JSON Schema 입력 형식 명시
- MCP 클라이언트 응답 형식 표준화: JSON-RPC 형식으로 감싼 텍스트 콘텐츠 반환 (content 배열에 type: "text" 포함)
- CORS 헤더 추가:
x-agent-key,mcp-session-id헤더 허용으로 다양한 MCP 클라이언트 지원
Key Takeaway
REST API를 이미 보유한 서비스는 약 200줄의 JSON-RPC 래퍼 계층을 추가해 Claude, Cursor 같은 AI 어시스턴트의 네이티브 도구로 노출할 수 있다. 기존 핸들러를 재사용하고 도구 설명을 정확하게 작성하면 추가 SDK나 인증 복잡도 없이 구현 가능하다.
실천 포인트
기존 REST API를 보유한 엔지니어가 MCP 서버를 도입하려면, 각 엔드포인트를 JSON-RPC 메서드로 매핑하고 도구 설명(description)을 구체적으로 작성한 후, 기존 핸들러를 호출하는 라우팅 로직을 추가하면 된다. 이렇게 하면 AI 어시스턴트 사용자가 별도 인증 없이 해당 API 기능을 직접 활용할 수 있다.