본문 바로가기

인공지능

MCP 서버 구축 가이드: AI와 데이터를 연결하는 새로운 방식

728x90
반응형

🔹 MCP란 무엇인가?

AI가 더 똑똑해지려면 단순한 훈련 데이터에 의존하지 않고, 외부 데이터를 안전하게 가져와야 합니다. 여기서 등장하는 것이 **MCP(Model Context Protocol)**입니다.

MCP는 대형 언어 모델(LLM)이 외부 데이터 및 기능과 상호작용할 수 있도록 도와주는 표준화된 프로토콜입니다. 쉽게 말해, AI를 위한 USB 포트와 같습니다.

✔️ MCP의 주요 역할

✅ LLM이 파일, 데이터베이스, API, 시스템 정보 등에 접근 가능
✅ 사용자 허가를 통해 안전한 데이터 연동
✅ 다양한 LLM에서 공통적으로 사용할 수 있는 표준 인터페이스 제공

기존에는 AI가 사전에 학습된 정보에만 의존해야 했지만, MCP를 사용하면 실시간으로 최신 데이터를 가져와 활용할 수 있습니다.

반응형

🔹 MCP 리소스(Resources)란?

MCP에서 **리소스(Resource)**는 AI가 읽을 수 있도록 제공하는 외부 데이터를 의미합니다.

✔️ MCP 리소스의 예시

📂 파일 리소스 → file://example.txt (텍스트 파일 내용 읽기)
📊 데이터베이스 리소스 → database://users/123 (사용자 정보 가져오기)
🌐 API 응답 리소스 → api://weather/today (날씨 정보 불러오기)
🔧 시스템 정보 리소스 → system://cpu/usage (CPU 사용량 조회)

각 리소스는 고유한 URI, 이름, 설명, MIME 타입, 데이터 내용을 포함합니다.

✔️ 왜 MCP 리소스를 사용해야 할까?

✅ AI가 최신 데이터를 확인하고 응답 가능
✅ 정해진 형식으로 표준화된 데이터 제공
데이터 접근을 제한하여 보안 강화

예를 들어, 고객 피드백 데이터를 AI가 분석하려면 customers://feedback/recent와 같은 MCP 리소스를 설정하면 AI가 실시간으로 데이터를 읽을 수 있습니다.


🔹 MCP 서버 구축하기

이제 직접 MCP 서버를 만들어보겠습니다.

1️⃣ 개발 환경 설정

먼저 프로젝트 폴더를 생성하고 MCP SDK를 설치합니다.

mkdir hello-mcp
cd hello-mcp
npm init -y
npm install @modelcontextprotocol/sdk
npm install -D typescript @types/node

이제 **TypeScript 설정 파일(tsconfig.json)**을 생성합니다.

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "Node16",
    "moduleResolution": "Node16",
    "outDir": "./build",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"]
}

2️⃣ MCP 서버 코드 작성

이제 MCP 서버를 구현하는 코드를 작성하겠습니다.

📌 📂 src/index.ts 파일 생성 후 아래 코드 추가

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import {
  ListResourcesRequestSchema,
  ReadResourceRequestSchema,
} from "@modelcontextprotocol/sdk/types.js";

// MCP 서버 생성
const server = new Server(
  {
    name: "hello-mcp",
    version: "1.0.0",
  },
  {
    capabilities: {
      resources: {}, // 리소스 기능 활성화
    },
  }
);

// MCP 리소스 목록 설정
server.setRequestHandler(ListResourcesRequestSchema, async () => {
  return {
    resources: [
      {
        uri: "hello://world",
        name: "Hello World Message",
        description: "간단한 인사 메시지",
        mimeType: "text/plain",
      },
    ],
  };
});

// 리소스 내용 제공
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
  if (request.params.uri === "hello://world") {
    return {
      contents: [
        {
          uri: "hello://world",
          text: "Hello, World! This is my first MCP resource.",
        },
      ],
    };
  }
  throw new Error("Resource not found");
});

// 서버 시작
const transport = new StdioServerTransport();
await server.connect(transport);
console.info('{"jsonrpc": "2.0", "method": "log", "params": { "message": "Server running..." }}');

이제 이 서버를 실행하면 hello://world URI를 가진 리소스를 제공하는 MCP 서버가 동작하게 됩니다.


🔹 MCP 서버 실행 및 테스트

1️⃣ MCP 서버 실행

아래 명령어를 실행하면 MCP 서버가 시작됩니다.

npx tsc
node build/index.js

2️⃣ Claude Desktop에서 테스트하기

MCP 서버가 제대로 동작하는지 확인하려면 Claude Desktop을 활용할 수 있습니다.

1. Claude Desktop 설정 파일(claude_desktop_config.json) 수정

{
  "mcpServers": {
    "hello-mcp": {
      "command": "node",
      "args": ["/절대경로/hello-mcp/build/index.js"]
    }
  }
}

2. Claude를 재시작한 후 MCP 리소스를 선택
3. "Hello World Message" 리소스가 정상적으로 표시되는지 확인


3️⃣ MCP Inspector로 테스트하기

MCP Inspector를 사용하면 MCP 서버의 모든 기능을 테스트할 수 있습니다.

아래 명령어로 실행합니다.

npx @modelcontextprotocol/inspector node build/index.js

"List Resources" 버튼 클릭 → "Hello World Message" 리소스 확인
리소스를 클릭하면 "Hello, World!" 메시지 출력 확인

이제 MCP 서버가 정상적으로 동작하는 것을 확인할 수 있습니다! 🚀


728x90

이번 글에서는 MCP(Model Context Protocol) 개념부터 직접 MCP 서버를 구축하는 방법까지 배웠습니다.

✔️ 정리하면?

✅ MCP는 LLM이 외부 데이터와 상호작용할 수 있도록 도와주는 표준 프로토콜
✅ MCP 리소스를 활용하면 파일, API, 데이터베이스 등의 데이터를 AI가 안전하게 접근 가능
✅ 직접 MCP 서버를 만들고, Claude Desktop과 MCP Inspector를 활용해 테스트하는 방법까지 익힘

🚀 MCP의 미래는?

앞으로 MCP를 활용하면 AI가 실시간 데이터를 활용하는 더욱 강력한 애플리케이션을 개발할 수 있습니다.
기업 내부 데이터, 실시간 로그 분석, 고객 피드백 수집 등 AI 기반 자동화의 핵심 기술로 자리 잡을 것입니다.

MCP를 활용하여 여러분의 AI 시스템을 한 단계 업그레이드해 보세요! 😊✨

728x90
반응형