enhanced-mcp-server

onesound71/enhanced-mcp-server

3.2

If you are the rightful owner of enhanced-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The Model Context Protocol (MCP) server facilitates secure and real-time access for AI models to external tools and data.

Tools
  1. query_employee_database

    Queries the company employee database for information.

  2. calculate_bonus

    Calculates employee bonuses based on performance scores.

πŸš€ Enhanced MCP Server - λ‚˜μ˜ λ™λ£Œμ—κ²Œ μ„€λͺ…ν•˜λŠ” MCP

πŸ“š λͺ©μ°¨

  1. MCPλž€ 무엇인가?
  2. ν”„λ‘œμ νŠΈ ꡬ쑰 μ΄ν•΄ν•˜κΈ°
  3. MCP μ„œλ²„ λ™μž‘ 원리
  4. μ†ŒμŠ€μ½”λ“œ 상세 뢄석
  5. μ‹€μŠ΅: MCP μ„œλ²„ μ‹€ν–‰ν•˜κΈ°
  6. μ»€μŠ€ν…€ 도ꡬ λ§Œλ“€κΈ°

πŸ€” MCPλž€ 무엇인가?

**MCP (Model Context Protocol)**λŠ” AI λͺ¨λΈμ΄ μ™ΈλΆ€ 도ꡬ와 데이터에 μ•ˆμ „ν•˜κ²Œ μ ‘κ·Όν•  수 있게 ν•΄μ£ΌλŠ” ν‘œμ€€ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

πŸ—οΈ MCP의 핡심 κ°œλ…

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    MCP Protocol    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   AI Model  β”‚ ←──────────────→   β”‚ MCP Server  β”‚
β”‚ (Cursor AI) β”‚                    β”‚ (우리 μ„œλ²„) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                           β”‚
                                           β–Ό
                                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                   β”‚   Tools &   β”‚
                                   β”‚    Data     β”‚
                                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ€·β€β™‚οΈ μ™œ MCPκ°€ ν•„μš”ν• κΉŒμš”?

Q: AIκ°€ 이미 λ˜‘λ˜‘ν•œλ° μ™œ MCPκ°€ ν•„μš”ν•œκ°€μš”? A: AIλŠ” ν•™μŠ΅λœ λ°μ΄ν„°λ§Œ μ•Œκ³  μžˆμ–΄μš”. 우리 νšŒμ‚¬μ˜ μ‹€μ‹œκ°„ 직원 정보, ν”„λ‘œμ νŠΈ μƒνƒœ, λΉ„λ°€ μ½”λ“œ 등은 λͺ¨λ¦…λ‹ˆλ‹€!

Q: κ·Έλƒ₯ AIμ—κ²Œ 직접 데이터λ₯Ό μ£Όλ©΄ μ•ˆ λ˜λ‚˜μš”? A: λ³΄μ•ˆμƒ μœ„ν—˜ν•˜κ³ , 데이터가 계속 λ³€κ²½λ˜λ©΄ 맀번 AIλ₯Ό λ‹€μ‹œ ν•™μŠ΅μ‹œμΌœμ•Ό ν•΄μš”. MCPλŠ” μ‹€μ‹œκ°„μœΌλ‘œ μ•ˆμ „ν•˜κ²Œ 데이터λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€!

🌟 MCP의 κ°•λ ₯ν•œ μž₯점: ν•œ 번 λ§Œλ“€λ©΄ μ–΄λ””μ„œλ“  μ‚¬μš©!

        🏒 μš°λ¦¬κ°€ λ§Œλ“  MCP μ„œλ²„
                    β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚               β”‚               β”‚
    β–Ό               β–Ό               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚Cursor AIβ”‚   β”‚   n8n   β”‚   β”‚ Make.comβ”‚
β”‚  μ½”λ”©   β”‚   β”‚ μ›Œν¬ν”Œλ‘œμš°β”‚   β”‚μžλ™ν™”νˆ΄ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    β”‚               β”‚               β”‚
    β–Ό               β–Ό               β–Ό
"κΉ€κ°œλ°œ 정보     "맀일 μ˜€μ „      "Slack에
 μ•Œλ €μ€˜"         직원 ν˜„ν™©       κΈ‰μ—¬ 정보
                λ³΄κ³ μ„œ 생성"     μ•Œλ¦Ό 전솑"

🎯 μ‹€μ œ ν™œμš© μ‹œλ‚˜λ¦¬μ˜€

πŸ“ μ‹œλ‚˜λ¦¬μ˜€ 1: 개발자 (Cursor AI)
개발자: "κΉ€κ°œλ°œλ‹˜μ΄ λ‹΄λ‹Ήν•œ ν”„λ‘œμ νŠΈ μ§„ν–‰λ₯ μ΄ μ–΄λ–»κ²Œ λ˜λ‚˜μš”?"
AI: MCP μ„œλ²„μ—μ„œ 데이터 쑰회 β†’ "MCP-Integration ν”„λ‘œμ νŠΈ 65% μ™„λ£Œ"
개발자: "그럼 μ˜ˆμƒ μ™„λ£ŒμΌμ€?"
AI: "2025λ…„ 7μ›” 15일 마감 μ˜ˆμ •μž…λ‹ˆλ‹€"
πŸ”„ μ‹œλ‚˜λ¦¬μ˜€ 2: μžλ™ν™” (n8n)
맀일 μ˜€μ „ 9μ‹œ μžλ™ μ‹€ν–‰:
1. MCP μ„œλ²„μ—μ„œ λͺ¨λ“  직원 정보 쑰회
2. νœ΄κ°€ 쀑인 직원 필터링
3. κ΄€λ¦¬μžμ—κ²Œ 이메일 λ°œμ†‘
4. Slack 채널에 ν˜„ν™© μ—…λ°μ΄νŠΈ
πŸ“Š μ‹œλ‚˜λ¦¬μ˜€ 3: λ…Έμ½”λ“œ μžλ™ν™” (Make.com)
ν”„λ‘œμ νŠΈ 마감일 μ•Œλ¦Ό μ‹œμŠ€ν…œ:
1. MCP μ„œλ²„μ—μ„œ ν”„λ‘œμ νŠΈ μƒνƒœ 확인
2. 마감일 7일 전인 ν”„λ‘œμ νŠΈ μ°ΎκΈ°
3. λ‹΄λ‹Ήμžμ—κ²Œ μžλ™ μ•Œλ¦Ό 전솑
4. μ§„ν–‰λ₯ μ΄ 50% 미만이면 κ΄€λ¦¬μžμ—κ²Œ μ—μŠ€μ»¬λ ˆμ΄μ…˜

πŸ” 더 ꡬ체적인 질문과 λ‹΅λ³€

Q: MCP μ„œλ²„ ν•˜λ‚˜λ‘œ 정말 μ—¬λŸ¬ ν”Œλž«νΌμ—μ„œ μ‚¬μš©ν•  수 μžˆλ‚˜μš”? A: λ„€! MCPλŠ” ν‘œμ€€ ν”„λ‘œν† μ½œμ΄λΌμ„œ ν•œ 번 λ§Œλ“€λ©΄:

  • βœ… Cursor AIμ—μ„œ μ½”λ”© λ„μš°λ―Έλ‘œ
  • βœ… n8nμ—μ„œ μ›Œν¬ν”Œλ‘œμš° μžλ™ν™”λ‘œ
  • βœ… Make.comμ—μ„œ λ…Έμ½”λ“œ μžλ™ν™”λ‘œ
  • βœ… 심지어 직접 λ§Œλ“  μ•±μ—μ„œλ„ μ‚¬μš© κ°€λŠ₯!

Q: λ³΄μ•ˆμ€ μ–΄λ–»κ²Œ κ΄€λ¦¬ν•˜λ‚˜μš”? A: MCP μ„œλ²„μ—μ„œ κΆŒν•œμ„ 쀑앙 κ΄€λ¦¬ν•©λ‹ˆλ‹€:

// 예: κΈ‰μ—¬ μ •λ³΄λŠ” HR λΆ€μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯
if (requestType === 'salary' && !user.hasRole('HR')) {
  throw new Error('κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€');
}

Q: μ‹€μ‹œκ°„ 데이터도 κ°€λŠ₯ν•œκ°€μš”? A: λ¬Όλ‘ μž…λ‹ˆλ‹€!

// μ‹€μ‹œκ°„ μ‹œμŠ€ν…œ λͺ¨λ‹ˆν„°λ§
async getRealtimeSystemStatus() {
  return {
    cpu: getCurrentCPUUsage(),
    memory: getCurrentMemoryUsage(),
    timestamp: new Date().toISOString()
  };
}

πŸš€ MCP의 μ‹€μ œ λΉ„μ¦ˆλ‹ˆμŠ€ κ°€μΉ˜

κΈ°μ‘΄ 방식MCP λ°©μ‹κ°œμ„  효과
맀번 μˆ˜λ™μœΌλ‘œ 데이터 확인AIκ°€ μžλ™μœΌλ‘œ 쑰회⏰ μ‹œκ°„ 90% μ ˆμ•½
각 νˆ΄λ§ˆλ‹€ 별도 연동 κ°œλ°œν•œ 번 개발둜 λͺ¨λ“  툴 μ—°λ™πŸ’° κ°œλ°œλΉ„μš© 70% 절감
데이터 뢈일치 μœ„ν—˜λ‹¨μΌ μ†ŒμŠ€λ‘œ 일관성 보μž₯🎯 정확도 99% ν–₯상
λ³΄μ•ˆ μ •μ±… λΆ„μ‚° 관리쀑앙 집쀑식 λ³΄μ•ˆ κ΄€λ¦¬πŸ”’ λ³΄μ•ˆ 리슀크 80% κ°μ†Œ

μ‰½κ²Œ λ§ν•˜λ©΄: AIκ°€ "κΉ€κ°œλ°œ 직원 정보 μ•Œλ €μ€˜"라고 물어보면, MCP μ„œλ²„κ°€ νšŒμ‚¬ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 정보λ₯Ό μ°Ύμ•„μ„œ AIμ—κ²Œ μ „λ‹¬ν•΄μ£ΌλŠ” 쀑간 닀리 역할을 ν•©λ‹ˆλ‹€!


πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰 μ΄ν•΄ν•˜κΈ°

enhanced-mcp-server/
β”œβ”€β”€ πŸ“„ package.json          # ν”„λ‘œμ νŠΈ μ„€μ • 파일
β”œβ”€β”€ πŸ”§ enhanced-server.js    # MCP μ„œλ²„ 메인 μ½”λ“œ
β”œβ”€β”€ 🎯 .cursor-mcp.json     # Cursor AI 연동 μ„€μ •
β”œβ”€β”€ πŸ§ͺ test-enhanced.js     # ν…ŒμŠ€νŠΈ 파일
└── πŸ“š README.md            # 이 파일!

각 파일의 μ—­ν• 

νŒŒμΌμ—­ν• μ‹ μž…μ‚¬μ›μ΄ μ•Œμ•„μ•Ό ν•  점
package.jsonν”„λ‘œμ νŠΈ 정보와 μ˜μ‘΄μ„± 관리npm νŒ¨ν‚€μ§€ κ΄€λ¦¬μ˜ κΈ°λ³Έ
enhanced-server.jsMCP μ„œλ²„μ˜ 핡심 λ‘œμ§κ°€μž₯ μ€‘μš”ν•œ 파일!
.cursor-mcp.jsonCursor AIμ™€μ˜ μ—°κ²° μ„€μ •AIκ°€ 우리 μ„œλ²„λ₯Ό μ°ΎλŠ” 방법
test-enhanced.jsμ„œλ²„ ν…ŒμŠ€νŠΈ μ½”λ“œκ°œλ°œ ν›„ κ²€μ¦ν•˜λŠ” 방법

βš™οΈ MCP μ„œλ²„ λ™μž‘ 원리

1단계: μ„œλ²„ μ΄ˆκΈ°ν™”

// enhanced-server.js의 핡심 λΆ€λΆ„
class EnhancedMcpServer {
  constructor() {
    // πŸ—„οΈ νšŒμ‚¬ λ°μ΄ν„°λ² μ΄μŠ€ (AIκ°€ λͺ¨λ₯΄λŠ” 정보!)
    this.companyDatabase = {
      employees: [
        { id: 'EMP001', name: 'κΉ€κ°œλ°œ', department: 'Engineering', salary: 8500 },
        // ... 더 λ§Žμ€ 직원 정보
      ]
    };
    
    // πŸ”§ MCP μ„œλ²„ 생성
    this.server = new Server({
      name: 'enhanced-mcp-server',
      version: '2.0.0'
    });
  }
}

2단계: 도ꡬ(Tools) 등둝

// AIκ°€ μ‚¬μš©ν•  수 μžˆλŠ” 도ꡬ듀을 μ •μ˜
{
  name: 'query_employee_database',
  description: '🏒 νšŒμ‚¬ 직원 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 정보λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€',
  inputSchema: {
    type: 'object',
    properties: {
      query_type: { type: 'string', enum: ['all', 'by_department', 'by_name'] },
      filter: { type: 'string', description: 'ν•„ν„° κ°’' }
    }
  }
}

3단계: 도ꡬ μ‹€ν–‰ 둜직

// AIκ°€ 도ꡬλ₯Ό ν˜ΈμΆœν•˜λ©΄ μ‹€ν–‰λ˜λŠ” ν•¨μˆ˜
async queryEmployeeDatabase(queryType, filter) {
  const employees = this.companyDatabase.employees;
  
  switch (queryType) {
    case 'by_name':
      return employees.filter(emp => emp.name.includes(filter));
    case 'by_department':
      return employees.filter(emp => emp.department === filter);
    default:
      return employees;
  }
}

πŸ” μ†ŒμŠ€μ½”λ“œ 상세 뢄석

πŸ“„ package.json 뢄석

{
  "name": "enhanced-mcp-server",
  "version": "2.0.0",
  "type": "module",                    // ← ES6 λͺ¨λ“ˆ μ‚¬μš©
  "dependencies": {
    "@modelcontextprotocol/sdk": "^0.4.0"  // ← MCP 곡식 SDK
  }
}

μ‹ μž…μ‚¬μ› 포인트:

  • "type": "module": μ΅œμ‹  JavaScript 문법 μ‚¬μš©
  • MCP SDK: OpenAIμ—μ„œ λ§Œλ“  곡식 라이브러리

🎯 .cursor-mcp.json 뢄석

{
  "mcpServers": {
    "enhanced-mcp-server": {
      "command": "node",
      "args": ["enhanced-server.js"],
      "cwd": "/Users/sangsoonhwang/Documents/GitHub/enhanced-mcp-server"
    }
  }
}

μ‹ μž…μ‚¬μ› 포인트:

  • Cursor AIκ°€ 우리 μ„œλ²„λ₯Ό μ°ΎλŠ” GPS 같은 μ—­ν• 
  • command: μ„œλ²„ μ‹€ν–‰ λͺ…λ Ήμ–΄
  • cwd: μ„œλ²„κ°€ μžˆλŠ” 폴더 μœ„μΉ˜

πŸ”§ enhanced-server.js 핡심 ꡬ쑰

1. 클래슀 ꡬ쑰
class EnhancedMcpServer {
  constructor() {
    this.companyDatabase = { /* 데이터 */ };  // πŸ“Š 데이터 μ €μž₯μ†Œ
    this.server = new Server(/* μ„€μ • */);     // πŸ”§ MCP μ„œλ²„
    this.setupToolHandlers();                 // πŸ› οΈ 도ꡬ μ„€μ •
  }
}
2. 도ꡬ 등둝 κ³Όμ •
setupToolHandlers() {
  // πŸ“‹ μ‚¬μš© κ°€λŠ₯ν•œ 도ꡬ λͺ©λ‘ 제곡
  this.server.setRequestHandler(ListToolsRequestSchema, async () => {
    return {
      tools: [
        {
          name: 'query_employee_database',
          description: '직원 정보 쑰회',
          inputSchema: { /* μž…λ ₯ ν˜•μ‹ μ •μ˜ */ }
        }
        // ... 더 λ§Žμ€ 도ꡬ듀
      ]
    };
  });

  // πŸ”§ 도ꡬ μ‹€ν–‰ 처리
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
    const { name, arguments: args } = request.params;
    
    switch (name) {
      case 'query_employee_database':
        return await this.queryEmployeeDatabase(args.query_type, args.filter);
      // ... λ‹€λ₯Έ 도ꡬ듀
    }
  });
}
3. μ‹€μ œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직
async queryEmployeeDatabase(queryType, filter) {
  console.log(`πŸ” 직원 쑰회: ${queryType}, ν•„ν„°: ${filter}`);
  
  const employees = this.companyDatabase.employees;
  let result;

  switch (queryType) {
    case 'by_name':
      result = employees.filter(emp => emp.name.includes(filter));
      break;
    case 'by_department':
      result = employees.filter(emp => emp.department === filter);
      break;
    case 'all':
    default:
      result = employees;
  }

  return {
    content: [{
      type: 'text',
      text: `πŸ“Š 쑰회 κ²°κ³Ό: ${JSON.stringify(result, null, 2)}`
    }]
  };
}

πŸš€ μ‹€μŠ΅: MCP μ„œλ²„ μ‹€ν–‰ν•˜κΈ°

1단계: μ˜μ‘΄μ„± μ„€μΉ˜

npm install

2단계: μ„œλ²„ ν…ŒμŠ€νŠΈ

npm test

μ˜ˆμƒ 좜λ ₯:

πŸ§ͺ κ°„λ‹¨ν•œ MCP ν…ŒμŠ€νŠΈ μ‹œμž‘...

πŸ“‹ 파일 확인:
βœ… package.json - μ‘΄μž¬ν•¨
βœ… enhanced-server.js - μ‘΄μž¬ν•¨
βœ… .cursor-mcp.json - μ‘΄μž¬ν•¨

πŸŽ‰ κΈ°λ³Έ μ„€μ • 확인 μ™„λ£Œ!

3단계: μ„œλ²„ μ‹€ν–‰

npm start

4단계: λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ ν…ŒμŠ€νŠΈ

🎯 Cursor AIμ—μ„œ ν…ŒμŠ€νŠΈ
  1. Cursor AIμ—μ„œ 이 ν”„λ‘œμ νŠΈ 폴더 μ—΄κΈ°
  2. MCP μ„œλ²„ μ—°κ²° ν—ˆμš©
  3. λ‹€μŒ μ§ˆλ¬Έλ“€ μ‹œλ„ν•΄λ³΄κΈ°:
    • "우리 νšŒμ‚¬ Engineering λΆ€μ„œ 직원듀을 μ‘°νšŒν•΄μ€˜"
    • "κΉ€κ°œλ°œ μ§μ›μ˜ 정보λ₯Ό μ•Œλ €μ€˜"
    • "ALPHA-7 μ½”λ“œλ₯Ό ν•΄λ…ν•΄μ€˜"
πŸ”„ n8nμ—μ„œ μ—°λ™ν•˜κΈ°
{
  "nodes": [
    {
      "name": "MCP Server Call",
      "type": "n8n-nodes-base.httpRequest",
      "parameters": {
        "url": "http://localhost:3000/mcp",
        "method": "POST",
        "body": {
          "tool": "query_employee_database",
          "args": {
            "query_type": "by_department",
            "filter": "Engineering"
          }
        }
      }
    }
  ]
}

n8n μ›Œν¬ν”Œλ‘œμš° 예제:

  1. μŠ€μΌ€μ€„λŸ¬: 맀일 μ˜€μ „ 9μ‹œ μ‹€ν–‰
  2. MCP 호좜: 직원 ν˜„ν™© 쑰회
  3. 데이터 가곡: νœ΄κ°€μž, ν”„λ‘œμ νŠΈλ³„ λΆ„λ₯˜
  4. μ•Œλ¦Ό λ°œμ†‘: Slack/μ΄λ©”μΌλ‘œ λ³΄κ³ μ„œ 전솑
πŸ“Š Make.comμ—μ„œ μ—°λ™ν•˜κΈ°
// Make.com HTTP λͺ¨λ“ˆ μ„€μ •
{
  "url": "http://localhost:3000/mcp",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "tool": "get_project_status",
    "args": {
      "project_name": "MCP-Integration"
    }
  }
}

Make.com μ‹œλ‚˜λ¦¬μ˜€ 예제:

  1. 트리거: Google Sheets μ—…λ°μ΄νŠΈ 감지
  2. MCP 쑰회: ν•΄λ‹Ή μ§μ›μ˜ ν”„λ‘œμ νŠΈ 정보 확인
  3. 쑰건 λΆ„κΈ°: μ§„ν–‰λ₯ μ— λ”°λ₯Έ λ‹€λ₯Έ μ•‘μ…˜
  4. μ•‘μ…˜: μžλ™ 이메일 λ°œμ†‘ λ˜λŠ” Slack μ•Œλ¦Ό
πŸ”Œ 직접 API ν˜ΈμΆœν•˜κΈ°
# curl을 μ‚¬μš©ν•œ 직접 호좜
curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "query_employee_database",
    "args": {
      "query_type": "by_name",
      "filter": "κΉ€κ°œλ°œ"
    }
  }'
🐍 Pythonμ—μ„œ μ‚¬μš©ν•˜κΈ°
import requests

def get_employee_info(name):
    response = requests.post('http://localhost:3000/mcp', json={
        'tool': 'query_employee_database',
        'args': {
            'query_type': 'by_name',
            'filter': name
        }
    })
    return response.json()

# μ‚¬μš© 예
employee = get_employee_info('κΉ€κ°œλ°œ')
print(f"직원 정보: {employee}")

πŸ› οΈ μ»€μŠ€ν…€ 도ꡬ λ§Œλ“€κΈ°

μƒˆλ‘œμš΄ 도ꡬ μΆ”κ°€ν•˜λŠ” 방법

1단계: 도ꡬ μ •μ˜ μΆ”κ°€
// setupToolHandlers() λ©”μ„œλ“œμ˜ tools 배열에 μΆ”κ°€
{
  name: 'calculate_bonus',
  description: '직원 λ³΄λ„ˆμŠ€ 계산',
  inputSchema: {
    type: 'object',
    properties: {
      employee_id: { type: 'string', description: '직원 ID' },
      performance_score: { type: 'number', description: 'μ„±κ³Ό 점수 (1-10)' }
    },
    required: ['employee_id', 'performance_score']
  }
}
2단계: μ‹€ν–‰ 둜직 μΆ”κ°€
// CallToolRequestSchema ν•Έλ“€λŸ¬μ˜ switch문에 μΆ”κ°€
case 'calculate_bonus':
  return await this.calculateBonus(args.employee_id, args.performance_score);
3단계: λ©”μ„œλ“œ κ΅¬ν˜„
async calculateBonus(employeeId, performanceScore) {
  const employee = this.companyDatabase.employees.find(emp => emp.id === employeeId);
  
  if (!employee) {
    throw new McpError(ErrorCode.InvalidRequest, `직원 ${employeeId}λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€`);
  }

  const baseBonus = employee.salary * 0.1; // κΈ°λ³Έ λ³΄λ„ˆμŠ€ 10%
  const performanceMultiplier = performanceScore / 10;
  const finalBonus = baseBonus * performanceMultiplier;

  return {
    content: [{
      type: 'text',
      text: `πŸ’° ${employee.name}λ‹˜μ˜ λ³΄λ„ˆμŠ€: ${finalBonus.toLocaleString()}λ§Œμ› (μ„±κ³Όμ μˆ˜: ${performanceScore}/10)`
    }]
  };
}

🎯 μ‹ μž…μ‚¬μ›μ„ μœ„ν•œ 핡심 포인트

βœ… κΌ­ κΈ°μ–΅ν•΄μ•Ό ν•  것듀

  1. MCP = AI와 데이터 μ‚¬μ΄μ˜ 닀리

    • AIκ°€ 직접 μ ‘κ·Όν•  수 μ—†λŠ” 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ 제곡
  2. 도ꡬ(Tool) = AIκ°€ μ‚¬μš©ν•  수 μžˆλŠ” κΈ°λŠ₯

    • 각 λ„κ΅¬λŠ” λͺ…ν™•ν•œ λͺ©μ κ³Ό μž…λ ₯/좜λ ₯ ν˜•μ‹μ„ 가짐
  3. μŠ€ν‚€λ§ˆ(Schema) = 도ꡬ μ‚¬μš©λ²• μ„€λͺ…μ„œ

    • AIκ°€ 도ꡬλ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ κ°€μ΄λ“œ
  4. 비동기 처리 (async/await)

    • λͺ¨λ“  도ꡬ 싀행은 λΉ„λ™κΈ°λ‘œ 처리됨

🚨 μ£Όμ˜μ‚¬ν•­

  • λ³΄μ•ˆ: λ―Όκ°ν•œ μ •λ³΄λŠ” μ μ ˆν•œ κΆŒν•œ 검사 ν›„ 제곡
  • μ—λŸ¬ 처리: μ˜ˆμƒμΉ˜ λͺ»ν•œ μž…λ ₯에 λŒ€ν•œ μ μ ˆν•œ μ—λŸ¬ λ©”μ‹œμ§€
  • μ„±λŠ₯: λŒ€μš©λŸ‰ 데이터 처리 μ‹œ νŽ˜μ΄μ§• κ³ λ €

🌐 λ‹€μ–‘ν•œ ν”Œλž«νΌ 연동 팁

Q: μ–΄λ–€ ν”Œλž«νΌλΆ€ν„° μ‹œμž‘ν•˜λŠ” 게 μ’‹μ„κΉŒμš”? A: μΆ”μ²œ μˆœμ„œ:

  1. Cursor AI (κ°€μž₯ 쉬움) β†’ κ°œλ°œν•˜λ©΄μ„œ λ°”λ‘œ ν…ŒμŠ€νŠΈ
  2. n8n (쀑간 λ‚œμ΄λ„) β†’ μ‹œκ°μ  μ›Œν¬ν”Œλ‘œμš°λ‘œ μžλ™ν™” ꡬ좕
  3. Make.com (쀑간 λ‚œμ΄λ„) β†’ λ…Έμ½”λ“œλ‘œ λ³΅μž‘ν•œ μ‹œλ‚˜λ¦¬μ˜€ κ΅¬ν˜„
  4. 직접 API 호좜 (κ³ κΈ‰) β†’ μ»€μŠ€ν…€ μ•± 개발

Q: 각 ν”Œλž«νΌμ˜ μž₯단점은?

ν”Œλž«νΌμž₯μ λ‹¨μ μΆ”μ²œ μš©λ„
Cursor AI🟒 μ„€μ • 간단, μ¦‰μ‹œ μ‚¬μš©πŸ”΄ 개발 ν™˜κ²½μ—μ„œλ§Œ μ‚¬μš©κ°œλ°œ 쀑 데이터 쑰회
n8n🟒 μ˜€ν”ˆμ†ŒμŠ€, μ‹œκ°μ  νŽΈμ§‘πŸ”΄ μ„œλ²„ μ„€μΉ˜ ν•„μš”λ‚΄λΆ€ μ›Œν¬ν”Œλ‘œμš° μžλ™ν™”
Make.com🟒 ν΄λΌμš°λ“œ, λ‹€μ–‘ν•œ μ—°λ™πŸ”΄ 유료, λ³΅μž‘ν•œ μ„€μ •μ™ΈλΆ€ μ„œλΉ„μŠ€ 연동
직접 API🟒 μ™„μ „ν•œ μ œμ–΄, μ»€μŠ€ν„°λ§ˆμ΄μ§•πŸ”΄ 개발 지식 ν•„μš”μ „μš© μ•± 개발

πŸ“ˆ λ‹€μŒ 단계

  1. 더 λ³΅μž‘ν•œ 도ꡬ λ§Œλ“€κΈ°: λ°μ΄ν„°λ² μ΄μŠ€ 연동, API 호좜 λ“±
  2. λ³΄μ•ˆ κ°•ν™”: 인증, κΆŒν•œ 관리 μ‹œμŠ€ν…œ μΆ”κ°€
  3. λͺ¨λ‹ˆν„°λ§: λ‘œκΉ…, λ©”νŠΈλ¦­ μˆ˜μ§‘ μ‹œμŠ€ν…œ ꡬ좕
  4. 닀쀑 ν”Œλž«νΌ 지원: REST API μ—”λ“œν¬μΈνŠΈ μΆ”κ°€
  5. μ‹€μ‹œκ°„ μ•Œλ¦Ό: WebSocket μ—°λ™μœΌλ‘œ μ‹€μ‹œκ°„ 데이터 ν‘Έμ‹œ

🀝 도움이 ν•„μš”ν•˜λ‹€λ©΄

  • MCP 곡식 λ¬Έμ„œ: https://modelcontextprotocol.io/
  • GitHub Issues: ν”„λ‘œμ νŠΈ 이슈 등둝
  • νŒ€ λ©˜ν† : κΆκΈˆν•œ 점은 μ–Έμ œλ“  μ§ˆλ¬Έν•˜μ„Έμš”!

πŸŽ‰ μΆ•ν•˜ν•©λ‹ˆλ‹€! 이제 μ—¬λŸ¬λΆ„λ„ MCP μ „λ¬Έκ°€μ˜ μ²«κ±ΈμŒμ„ λ‚΄λ””λŽ μŠ΅λ‹ˆλ‹€!