10분 안에 API에 MCP 서버를 제공하는 방법

발행: (2026년 3월 14일 오후 03:20 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

위에 제공된 소스 링크만으로는 번역할 실제 내용이 포함되어 있지 않습니다. 번역을 원하는 본문 텍스트(마크다운 형식 포함)를 제공해 주시면, 코드 블록과 URL은 그대로 두고 나머지 내용을 한국어로 번역해 드리겠습니다.

당신이 만들고 있는 것

MCP 서버는 기존 API와 이를 사용하려는 모든 AI 에이전트 사이에 위치하는 작은 어댑터 레이어입니다. 이 서버는 API의 기능을 도구로 노출합니다 — 이름이 지정되고, 타입이 정의되며, 설명 가능한 행동으로, 에이전트가 발견하고 호출할 수 있습니다.

API를 다시 작성하는 것이 아니라, 래핑하고 있습니다.

AI Agent → MCP Server → Your Existing API

MCP 서버는 프로토콜 변환을 처리하고, API는 그대로 유지됩니다.

1단계: MCP SDK 설치 (2분)

Anthropic은 공식 TypeScript SDK를 제공합니다:

npm install @modelcontextprotocol/sdk

Python SDK도 있습니다:

pip install mcp

단계 2: 도구 정의 (5분)

각 도구는 API 엔드포인트 중 하나에 매핑됩니다. 다음을 정의합니다:

  • Name – snake_case, 설명적
  • Description – 일반 영어; 에이전트가 언제 도구를 사용할지 결정하기 위해 읽습니다
  • Input schema – JSON Schema
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server(
  { name: "my-api", version: "1.0.0" },
  { capabilities: { tools: {} } }
);

server.setRequestHandler("tools/list", async () => ({
  tools: [
    {
      name: "create_task",
      description:
        "Create a new task in the workspace. Use when the user wants to add a task, to‑do, or action item.",
      inputSchema: {
        type: "object",
        properties: {
          title: { type: "string", description: "Task title" },
          assignee_email: { type: "string", description: "Email of assignee" },
          due_date: { type: "string", description: "Due date (YYYY‑MM‑DD)" }
        },
        required: ["title"]
      }
    }
  ]
}));

Tip: 설명은 생각보다 더 중요합니다. “Creates a task”와 같은 모호한 설명은 약합니다; 더 풍부한 설명은 모델에게 언제 사용할지에 대한 컨텍스트를 제공합니다.

3단계: 도구 호출 처리 (2분)

server.setRequestHandler("tools/call", async (request) => {
  const { name, arguments: args } = request.params;

  if (name === "create_task") {
    const response = await fetch("https://api.yourapp.com/tasks", {
      method: "POST",
      headers: {
        Authorization: `Bearer ${process.env.API_KEY}`,
        "Content-Type": "application/json"
      },
      body: JSON.stringify(args)
    });

    const task = await response.json();

    return {
      content: [{ type: "text", text: `Task created: "${task.title}" (ID: ${task.id})` }]
    };
  }

  throw new Error(`Unknown tool: ${name}`);
});

const transport = new StdioServerTransport();
await server.connect(transport);

응답 내용은 에이전트가 보는 것입니다. 사실대로 유지하세요 — 에이전트가 이를 사용자에게 자연어로 합성합니다.

단계 4: 테스트하기 (1분)

npx @modelcontextprotocol/inspector node your-server.js

이 명령은 실제 AI를 사용하기 전에 도구를 수동으로 호출할 수 있는 로컬 UI를 엽니다.

배포하기

  • 옵션 A: 기존 서버와 함께 /mcp 경로에서 HTTP(SSE 전송)를 통해 노출합니다.
  • 옵션 B: 독립 서비스로 배포합니다 — Firebase Functions, AWS Lambda, Railway 등.

인증을 위해 API 키를 MCP의 Authorization 헤더 또는 환경 변수로 전달합니다. 도구 인터페이스를 통해 자격 증명을 노출하지 마세요.

큰 그림

API에 MCP 지원을 추가하는 데는 오늘 10분 정도만 투자하면 되지만, 그 효과는 복리처럼 커집니다. MCP 지원을 추가하는 모든 AI 어시스턴트, 에이전트 프레임워크, 코딩 도구는 여러분의 API에 대한 잠재적인 배포 채널이 됩니다. 문서를 한 번도 본 적 없는 사용자도 이제 이미 신뢰하는 AI를 통해 여러분의 제품을 사용할 수 있습니다.

현재 에이전트‑준비가 된 제품은 AI‑구동 워크플로가 기본이 될 때 큰 선점을 차지하게 됩니다. 준비되지 않은 제품은 눈에 띄지 않게 됩니다.

서버 설정을 완전히 건너뛰고 싶다면, Botlington MCP Host가 여러분의 API를 위한 MCP 서버를 호스팅하고 관리합니다 — 도구는 여러분이 정의하고, 인프라, 인증, 라우팅은 그들이 처리합니다.

0 조회
Back to Blog

관련 글

더 보기 »

트라비고

Gemini와 함께 말하는 속도만큼 빠르게 여행하세요! 라이브 에이전트가 몰입형 스토리텔링 및 3D 내비게이션과 만나는 곳. 이 프로젝트는 Gemini Live Ag...에 진입하기 위해 만들어졌습니다.