생성형 AI 활용하기

AI의 새로운 트렌드 - MCP 개발 방법!

Pro.Dev 2025. 3. 9. 16:28
반응형

Model Context Protocol 이란

Model Context Protocol (MCP)은 이름만 들어서는 지루하게 느껴지지만, AI와 소프트웨어의 근본을 바꿀 잠재력을 지니고 있습니다. 이 글에서는 MCP가 무엇인지, 왜 중요한지, 그리고 MCP 서버를 활용해 AI 에이전트와 상호작용하는 방법에 대해 알아보겠습니다.

1. MCP란 무엇인가?  https://youtu.be/khK0ax4TSxo 

설명

  • MCP (Model Context Protocol): 다양한 서비스와 애플리케이션을 연결해 주는 표준 프로토콜.
  • 비유: USB-C가 모든 기기를 연결하듯, MCP는 모든 웹서비스와 AI 에이전트를 연결.
  • Github Open Source Project : https://github.com/modelcontextprotocol 

예시

  • MCP 서버를 통해 클로드(Claude)나 커서(Cursor)가 인스타그램, 아마존 같은 서비스를 직접 사용.

핵심

  • 통합된 프로토콜로 웹 브라우저를 거치지 않고 에이전트가 직접 서비스에 접근 가능.


2. MCP의 구성 요소

설명

  • MCP 호스트: LLM을 실행하고 프로세스를 수행.
  • MCP 클라이언트: 호스트 내에서 실행되어 서비스와 통신.
  • MCP 서버: 클라이언트와 서비스 사이의 중계 역할.

예시

  • MCP 서버: API를 통해 아마존에서 상품 주문.
  • 클라이언트: 클로드나 커서.
  • 호스트: AI가 실행되는 환경.

  • 클라이언트와 서버를 설정해 직접 실습해 보세요.

3. MCP 서버 개발 방법: Python uv와 Node npx 예시

MCP (Model Context Protocol) 서버는 다양한 서비스와 AI 에이전트 간의 통신을 가능하게 해주는 중계 서버입니다. MCP 서버를 Python의 uv와 Node의 npx를 사용해 구축하는 방법을 단계별로 설명합니다.

3-1. MCP 서버의 기본 구조

설명

  • MCP 호스트: LLM을 실행하고 명령을 수행하는 환경.
  • MCP 클라이언트: MCP 서버와 통신해 데이터를 주고받는 역할.
  • MCP 서버: 클라이언트의 요청을 받아 API와 통신해 결과를 반환.

3-2. Python uv를 이용한 MCP 서버 개발

준비 사항

  • Python 3.9 이상 설치
  • pip를 이용해 uvicorn 설치: pip install uvicorn

예시: 간단한 MCP 서버 구축

# app.py
from fastapi import FastAPI
import uvicorn

app = FastAPI()

@app.get("/api/data")
async def get_data():
    return {"message": "MCP 서버가 정상 작동 중입니다!"}

if __name__ == "__main__":
    uvicorn.run("app:app", host="0.0.0.0", port=8000)

실행 방법

uvicorn app:app --reload

설명

  • FastAPI: 경량 웹 프레임워크로 MCP 서버 개발에 적합.
  • uvicorn: 비동기 서버로 MCP 서버의 빠른 응답 처리 가능.

3-3. Node npx를 이용한 MCP 서버 개발

준비 사항

  • Node.js와 npm 설치
  • express 설치: npx express-generator

예시: 간단한 MCP 서버 구축

// index.js
const express = require('express');
const app = express();
const PORT = 8000;

app.get('/api/data', (req, res) => {
    res.json({ message: 'MCP 서버가 정상 작동 중입니다!' });
});

app.listen(PORT, () => {
    console.log(`서버가 ${PORT}번 포트에서 실행 중입니다.`);
});

실행 방법

npx node index.js

설명

  • express: 간편한 REST API 구축 가능.
  • npx: 패키지 설치 없이 일회성으로 실행 가능.

3-4. MCP 서버와 클라이언트 통신

예시: 클라이언트에서 API 호출

import requests

response = requests.get("http://localhost:8000/api/data")
print(response.json())

설명

  • requests 라이브러리를 사용해 MCP 서버와 통신.
  • JSON 형식으로 데이터를 송수신.

MCP 클라이언트 개발 방법

MCP 클라이언트는 MCP 서버와 통신해 데이터를 요청하고, 결과를 받아오는 역할을 합니다. 이를 통해 AI 에이전트가 다양한 서비스와 상호작용할 수 있습니다. MCP 클라이언트를 Python과 Node.js로 만드는 방법을 단계별로 설명합니다.


1️⃣ MCP 클라이언트의 역할

설명

  • API 요청: MCP 서버에 HTTP 요청을 전송.
  • 데이터 처리: MCP 서버가 반환한 JSON 데이터를 처리.
  • 인증: 보안 토큰을 통해 인증 처리.

2️⃣ Python으로 MCP 클라이언트 만들기

라이브러리 설치

pip install requests

MCP 클라이언트 코드 (Python)

import requests

def get_recommendations(genre):
    url = "http://localhost:8000/api/recommend"
    params = {"genre": genre}
    headers = {"Authorization": "Bearer YOUR_TOKEN"}

    response = requests.get(url, params=params, headers=headers)
    if response.status_code == 200:
        return response.json()["recommendations"]
    else:
        return {"error": "요청 실패"}

# 실행 예시
print(get_recommendations("Sci-Fi"))

설명

  • requests: HTTP 요청을 위해 사용.
  • headers: 인증 토큰 적용 가능.

3️⃣ Node.js로 MCP 클라이언트 만들기

라이브러리 설치

npm install axios

MCP 클라이언트 코드 (Node.js)

const axios = require('axios');

async function getRecommendations(genre) {
    try {
        const response = await axios.get('http://localhost:8000/api/recommend', {
            params: { genre },
            headers: { Authorization: 'Bearer YOUR_TOKEN' }
        });
        console.log(response.data.recommendations);
    } catch (error) {
        console.error('요청 실패:', error);
    }
}

getRecommendations('Sci-Fi');

설명

  • axios: 비동기 HTTP 요청을 간편하게 처리.
  • async/await: 비동기 처리를 위한 문법.

4️⃣ MCP 클라이언트 개발 시 주의사항

  • CORS: MCP 서버에 CORS 설정 필요.
  • 타임아웃: 요청 실패 방지를 위해 타임아웃 설정.

  • MCP 클라이언트는 MCP 서버와의 통신을 위해 필수.

MCP 호스트 개발 방법

MCP 호스트는 LLM(Large Language Model)을 실행하고, MCP 클라이언트와 MCP 서버 간의 요청을 처리하는 중간 관리자 역할을 합니다. MCP 호스트를 Python과 Node.js로 만드는 방법을 단계별로 설명합니다.


1️⃣ MCP 호스트의 역할

설명

  • 요청 처리: MCP 클라이언트로부터 요청을 받아 MCP 서버로 전달.
  • 데이터 가공: 서버로부터 받은 데이터를 LLM이 이해할 수 있도록 가공.
  • LLM 실행: GPT 같은 LLM을 통해 자연어 처리 및 응답 생성.

2️⃣ Python으로 MCP 호스트 만들기

라이브러리 설치

pip install openai fastapi uvicorn

MCP 호스트 코드 (Python)

from fastapi import FastAPI
import openai
import requests

app = FastAPI()
openai.api_key = "YOUR_OPENAI_API_KEY"

@app.get("/api/host")
async def host_request(genre: str):
    # MCP 서버에 요청
    response = requests.get(f"http://localhost:8000/api/recommend?genre={genre}")
    data = response.json()
    recommendations = data.get("recommendations", [])

    # LLM을 통한 자연어 응답 생성
    prompt = f"다음 영화들을 추천합니다: {', '.join([r['title'] for r in recommendations])}"
    completion = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "system", "content": prompt}]
    )

    return {"response": completion['choices'][0]['message']['content']}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run("app:app", host="0.0.0.0", port=9000, reload=True)

설명

  • FastAPI: MCP 호스트로 HTTP 요청 처리.
  • OpenAI API: LLM을 사용해 자연어 응답 생성.
  • requests: MCP 서버와의 통신.

3️⃣ Node.js로 MCP 호스트 만들기

라이브러리 설치

npm install express axios openai

MCP 호스트 코드 (Node.js)

const express = require('express');
const axios = require('axios');
const { Configuration, OpenAIApi } = require('openai');

const app = express();
const PORT = 9000;

const openai = new OpenAIApi(new Configuration({
    apiKey: 'YOUR_OPENAI_API_KEY',
}));

app.get('/api/host', async (req, res) => {
    const genre = req.query.genre;
    try {
        const response = await axios.get(`http://localhost:8000/api/recommend?genre=${genre}`);
        const recommendations = response.data.recommendations;

        const prompt = `다음 영화들을 추천합니다: ${recommendations.map(r => r.title).join(', ')}`;
        const completion = await openai.createChatCompletion({
            model: 'gpt-3.5-turbo',
            messages: [{ role: 'system', content: prompt }]
        });

        res.json({
            response: completion.data.choices[0].message.content
        });
    } catch (error) {
        res.status(500).json({ error: '서버 에러 발생' });
    }
});

app.listen(PORT, () => {
    console.log(`MCP 호스트가 ${PORT}번 포트에서 실행 중입니다.`);
});

설명

  • axios: MCP 서버와 통신.
  • OpenAI API: LLM을 통한 응답 생성.

  • MCP 호스트는 LLM과 MCP 서버를 연결해주는 핵심 요소.

5. 보안 고려사항

설명

  • 인증 토큰과 HTTPS 사용 권장.
  • 불필요한 API 엔드포인트 비활성화.

  • Python의 uv와 Node의 npx는 MCP 서버를 간편하게 개발할 수 있는 유용한 도구.
  • 인증 및 보안을 고려해 서버를 구축해야 함.

6. 보안 문제와 해결 방안

설명

  • MCP의 가장 큰 문제는 보안.
  • 인증되지 않은 서버나 코드를 사용할 경우 위험.

예시

  • GitHub에서 신뢰할 수 있는 MCP 서버만 다운로드.

  • 주간 다운로드 수나 GitHub Stars를 기준으로 서버 선택.

7. MCP를 활용한 비즈니스 기회: 실제 적용 사례

MCP (Model Context Protocol)는 다양한 서비스와 AI 에이전트를 연결해 주는 중계 역할을 합니다. 이 기능을 활용해 새로운 비즈니스 모델을 구축할 수 있습니다. MCP를 활용한 실제 적용 사례를 통해 비즈니스 기회를 알아보겠습니다.

7-1. AI 에이전트 기반 고객 지원 서비스

설명

  • MCP 서버를 활용해 다양한 고객 지원 채널(웹, 앱, 메일)과 AI 에이전트를 연동.
  • AI가 고객의 질문을 분석하고 적절한 응답이나 작업을 수행.

예시

  • 전자상거래: 주문 조회, 환불 요청 처리.
  • 금융: 계좌 잔액 조회, 거래 내역 설명.

비즈니스 기회

  • AI 기반 고객 지원 SaaS 개발 및 제공.

7-2. 자동화된 데이터 분석 서비스

설명

  • MCP 서버를 통해 다양한 데이터베이스와 AI 분석 모델을 연결.
  • 실시간 데이터 분석과 리포트 생성.

예시

  • 마케팅: 웹사이트 방문자 분석 및 타겟 광고.
  • 제조업: 생산 효율성 분석 및 예측.

비즈니스 기회

  • 데이터 분석 SaaS 또는 컨설팅 서비스.

7-3. AI 기반 추천 시스템

설명

  • MCP를 통해 이커머스, OTT 서비스에 AI 추천 알고리즘 적용.

예시

  • 쇼핑몰: 개인 맞춤 상품 추천.
  • 스트리밍: 시청 기록 기반 추천.

비즈니스 기회

  • 추천 시스템 솔루션 제공.

7-4. 기업용 자동화 솔루션

설명

  • MCP 서버를 이용해 ERP, CRM 등 기업 시스템 자동화.

예시

  • ERP: 재고 관리 자동화.
  • CRM: 고객 이탈 예측 및 대응.

비즈니스 기회

  • 자동화 솔루션 구축 대행.

  • MCP는 다양한 비즈니스 기회를 제공합니다.
  • 초기 진입이 중요하므로 빠르게 MCP를 이해하고 활용해 보세요.

결론

  • MCP는 단순한 프로토콜을 넘어 AI가 웹과 상호작용하는 방식을 혁신.
  • 빠르게 MCP를 이해하고 실습해보면 AI 트렌드에서 앞서 나갈 수 있습니다.
반응형