10분 안에 API에 MCP 서버를 제공하는 방법
Source: Dev.to
위에 제공된 소스 링크만으로는 번역할 실제 내용이 포함되어 있지 않습니다. 번역을 원하는 본문 텍스트(마크다운 형식 포함)를 제공해 주시면, 코드 블록과 URL은 그대로 두고 나머지 내용을 한국어로 번역해 드리겠습니다.
당신이 만들고 있는 것
MCP 서버는 기존 API와 이를 사용하려는 모든 AI 에이전트 사이에 위치하는 작은 어댑터 레이어입니다. 이 서버는 API의 기능을 도구로 노출합니다 — 이름이 지정되고, 타입이 정의되며, 설명 가능한 행동으로, 에이전트가 발견하고 호출할 수 있습니다.
API를 다시 작성하는 것이 아니라, 래핑하고 있습니다.
AI Agent → MCP Server → Your Existing APIMCP 서버는 프로토콜 변환을 처리하고, API는 그대로 유지됩니다.
1단계: MCP SDK 설치 (2분)
Anthropic은 공식 TypeScript SDK를 제공합니다:
npm install @modelcontextprotocol/sdkPython 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 서버를 호스팅하고 관리합니다 — 도구는 여러분이 정의하고, 인프라, 인증, 라우팅은 그들이 처리합니다.