본문으로 바로가기
리옵트 핸드북
리옵트 핸드북
Kiro 고급 활용Ch1. 플랜 & 환경 설정Ch2. Steering 마스터하기Ch3. 멀티세션 워크플로우Ch4. 서브에이전트 활용Ch5. Hooks 시스템Ch6. MCP 서버 연동Ch7. Powers & 커스텀 도구Ch8. Autopilot 모드 활용Ch9. 컨텍스트 관리Ch10. IDE 기능 활용Ch11. Spec 기반 개발Ch12. 바이브코딩 실전 패턴Ch13. 커뮤니티 & 리소스Ch14. 트러블슈팅 & FAQ엔터프라이즈 패턴빠른 참조 가이드

업데이트 히스토리
핸드북›Kiro 고급 활용›Ch6. MCP 서버 연동

Ch6. MCP 서버 연동

Kiro에서 Model Context Protocol 서버와 프롬프트·리소스를 운영하는 방법

핵심 요약

  • Kiro는 MCP 클라이언트로 GitHub·PostgreSQL·Slack·파일시스템 등 여러 서버에 동시에 연결해 도구·리소스·프롬프트를 씁니다.
  • 설정은 워크스페이스 .kiro/settings/mcp.json 또는 전역 ~/.kiro/settings/mcp.json에 command·args·env·autoApprove로 정의합니다.
  • autoApprove는 읽기 전용 도구에만 쓰고, create_issue·delete_file 같은 쓰기 작업은 매번 수동 승인하도록 둡니다.
  • Python 등으로 커스텀 서버를 직접 만들 수 있는데, 입력 검증·로깅·에러 처리를 갖추는 게 모범 사례입니다.
  • v0.11 MCP Registry Governance(중앙 허용 목록), v0.10 MCP Prompts·Remote MCP(URL+헤더) 네이티브 연결이 추가됐습니다.

MCP(Model Context Protocol)는 Kiro를 외부 도구·데이터베이스·API에 연결하는 표준 프로토콜입니다. GitHub, 데이터베이스, 사내 도구 등을 Kiro에서 바로 씁니다.

v0.10~v0.11 MCP 업데이트

  • v0.11: MCP Registry Governance — 엔터프라이즈 관리자가 허용 MCP 서버를 중앙 관리
  • v0.10: MCP Prompts 지원 — MCP 서버가 프롬프트/템플릿/elicitation을 채팅에 직접 노출
  • v0.10+: Remote MCP 서버 네이티브 지원

MCP 개념

Kiro는 MCP 클라이언트로 여러 MCP 서버에 동시에 연결합니다. 각 서버는 도구(tools), 리소스(resources), 프롬프트(prompts)를 제공합니다.

MCP 서버 설정

설정 파일 위치

  • 워크스페이스: .kiro/settings/mcp.json
  • 사용자 전역: ~/.kiro/settings/mcp.json

기본 설정 구조

{
  "mcpServers": {
    "github": {
      "command": "uvx",
      "args": ["mcp-server-github"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      },
      "disabled": false,
      "autoApprove": ["search_repositories", "get_file_contents"]
    },
    "postgres": {
      "command": "uvx", 
      "args": ["mcp-server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://user:pass@localhost/db"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

인기 MCP 서버들

GitHub 서버

{
  "github": {
    "command": "uvx",
    "args": ["mcp-server-github"],
    "env": {
      "GITHUB_TOKEN": "ghp_your_personal_access_token"
    },
    "autoApprove": [
      "search_repositories",
      "get_file_contents", 
      "list_issues",
      "create_issue"
    ]
  }
}

제공 도구:

  • search_repositories: 리포지토리 검색
  • get_file_contents: 파일 내용 조회
  • list_issues: 이슈 목록 조회
  • create_issue: 새 이슈 생성
  • create_pull_request: PR 생성

데이터베이스 서버 (PostgreSQL)

{
  "postgres": {
    "command": "uvx",
    "args": ["mcp-server-postgres"],
    "env": {
      "DATABASE_URL": "postgresql://username:password@localhost:5432/database_name"
    },
    "autoApprove": ["query", "list_tables"]
  }
}

제공 도구:

  • query: SQL 쿼리 실행
  • list_tables: 테이블 목록 조회
  • describe_table: 테이블 스키마 조회

Slack 서버

{
  "slack": {
    "command": "uvx",
    "args": ["mcp-server-slack"],
    "env": {
      "SLACK_BOT_TOKEN": "xoxb-your-bot-token",
      "SLACK_APP_TOKEN": "xapp-your-app-token"
    },
    "autoApprove": ["list_channels"]
  }
}

제공 도구:

  • send_message: 메시지 전송
  • list_channels: 채널 목록 조회
  • get_channel_history: 채널 히스토리 조회

파일 시스템 서버

{
  "filesystem": {
    "command": "uvx",
    "args": ["mcp-server-filesystem", "/allowed/path"],
    "autoApprove": ["read_file", "list_directory"]
  }
}

MCP 서버 관리

VS Code 명령어

Ctrl/Cmd + Shift + P
> Kiro: Configure MCP Servers
> Kiro: List MCP Servers  
> Kiro: Restart MCP Server

서버 상태 확인

Kiro 채팅에서 MCP 서버 상태를 확인할 수 있습니다:

현재 연결된 MCP 서버들을 보여주세요

autoApprove 설정

자주 쓰는 안전한 도구는 autoApprove에 넣어 매번 승인하지 않도록 둡니다.

{
  "github": {
    "autoApprove": [
      "search_repositories",    // 리포지토리 검색 (읽기 전용)
      "get_file_contents",     // 파일 내용 조회 (읽기 전용)
      "list_issues"           // 이슈 목록 조회 (읽기 전용)
    ]
  }
}

보안 주의

create_issue, delete_file 같은 쓰기 작업은 autoApprove에 넣지 마세요.

커스텀 MCP 서버 작성

간단한 MCP 서버 예시

# custom_server.py
import asyncio
from mcp.server import Server
from mcp.types import Tool, TextContent

app = Server("custom-tools")

@app.list_tools()
async def list_tools():
    return [
        Tool(
            name="get_weather",
            description="Get current weather for a city",
            inputSchema={
                "type": "object",
                "properties": {
                    "city": {"type": "string"}
                },
                "required": ["city"]
            }
        )
    ]

@app.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "get_weather":
        city = arguments["city"]
        # 실제 날씨 API 호출 로직
        weather_data = f"Sunny, 25°C in {city}"
        return TextContent(type="text", text=weather_data)

if __name__ == "__main__":
    asyncio.run(app.run())

커스텀 서버 설정

{
  "custom-weather": {
    "command": "python",
    "args": ["custom_server.py"],
    "cwd": "/path/to/your/server",
    "env": {
      "WEATHER_API_KEY": "your_api_key"
    }
  }
}

실전 활용 사례

1. GitHub 이슈 관리 자동화

"GitHub에서 'bug' 라벨이 있는 열린 이슈들을 조회하고, 
각 이슈에 대해 우선순위를 분석해서 정리해주세요."

Kiro가 자동으로:

  1. GitHub MCP 서버를 통해 이슈 검색
  2. 각 이슈 내용 분석
  3. 우선순위 매트릭스 생성

2. 데이터베이스 스키마 분석

"현재 데이터베이스의 모든 테이블을 조회하고, 
각 테이블 간의 관계를 분석해서 ERD를 그려주세요."

Kiro가 자동으로:

  1. PostgreSQL MCP 서버로 테이블 목록 조회
  2. 각 테이블의 스키마 분석
  3. 외래키 관계 파악
  4. Mermaid ERD 생성

3. 팀 커뮤니케이션 자동화

"오늘 배포 완료되면 개발팀 Slack 채널에 
배포 완료 메시지를 전송해주세요."

Hooks와 연동하여:

  1. 배포 완료 이벤트 감지
  2. Slack MCP 서버로 메시지 전송

문제 해결

연결 실패

# MCP 서버 로그 확인
tail -f ~/.kiro/logs/mcp-server-*.log

# 서버 재시작
Ctrl/Cmd + Shift + P > Kiro: Restart MCP Server

권한 오류

{
  "github": {
    "env": {
      "GITHUB_TOKEN": "ghp_새로운_토큰"
    }
  }
}

성능 최적화

{
  "database": {
    "env": {
      "MAX_QUERY_RESULTS": "100",
      "QUERY_TIMEOUT": "30"
    }
  }
}

고급 MCP 활용 패턴

1. 체인형 MCP 서버 구성

여러 MCP 서버를 엮어 복잡한 워크플로우를 구성합니다:

{
  "mcpServers": {
    "data-source": {
      "command": "uvx",
      "args": ["mcp-server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://user:pass@localhost/db"
      }
    },
    "data-processor": {
      "command": "uvx", 
      "args": ["mcp-server-python"],
      "env": {
        "PYTHON_PATH": "./scripts"
      }
    },
    "notification": {
      "command": "uvx",
      "args": ["mcp-server-slack"],
      "env": {
        "SLACK_TOKEN": "xoxb-your-token"
      }
    }
  }
}

2. 조건부 MCP 서버 활성화

프로젝트 타입이나 환경에 따라 다른 MCP 서버를 활성화:

{
  "mcpServers": {
    "development-tools": {
      "command": "uvx",
      "args": ["mcp-server-dev-tools"],
      "disabled": false,
      "env": {
        "NODE_ENV": "development"
      }
    },
    "production-monitoring": {
      "command": "uvx", 
      "args": ["mcp-server-monitoring"],
      "disabled": true,
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

3. 커스텀 MCP 서버 개발 팁

MCP 서버를 효율적으로 개발하는 모범 사례:

# 에러 처리와 로깅
import logging
from mcp.server import Server

logger = logging.getLogger(__name__)
app = Server("custom-server")

@app.call_tool()
async def call_tool(name: str, arguments: dict):
    try:
        logger.info(f"Tool called: {name} with args: {arguments}")
        
        if name == "process_data":
            # 입력 검증
            if not arguments.get("data"):
                raise ValueError("Data parameter is required")
            
            # 실제 처리 로직
            result = await process_data_async(arguments["data"])
            
            logger.info(f"Tool {name} completed successfully")
            return TextContent(type="text", text=result)
            
    except Exception as e:
        logger.error(f"Tool {name} failed: {str(e)}")
        return TextContent(
            type="text", 
            text=f"Error: {str(e)}"
        )

참고 문서

  • MCP 프로토콜 스펙: https://modelcontextprotocol.io/
  • Kiro 공식 사이트: https://kiro.dev
  • MCP 서버 목록: https://github.com/modelcontextprotocol/servers

엔터프라이즈급 MCP 아키텍처

🏗️ 마이크로서비스 MCP 패턴

대규모 시스템에서 MCP 서버를 마이크로서비스처럼 구성:

{
  "mcpServers": {
    "user-service": {
      "command": "docker",
      "args": ["run", "--rm", "company/mcp-user-service"],
      "env": {
        "DATABASE_URL": "${USER_DB_URL}",
        "REDIS_URL": "${REDIS_URL}"
      }
    },
    "payment-service": {
      "command": "docker", 
      "args": ["run", "--rm", "company/mcp-payment-service"],
      "env": {
        "STRIPE_KEY": "${STRIPE_SECRET_KEY}",
        "WEBHOOK_SECRET": "${STRIPE_WEBHOOK_SECRET}"
      }
    },
    "analytics-service": {
      "command": "kubernetes",
      "args": ["exec", "analytics-pod", "--", "python", "mcp_server.py"],
      "env": {
        "BIGQUERY_CREDENTIALS": "${GCP_CREDENTIALS}"
      }
    }
  }
}

🔐 보안 강화 MCP 설정

프로덕션 환경에서 챙겨야 할 보안 고려사항:

{
  "mcpServers": {
    "secure-database": {
      "command": "uvx",
      "args": ["mcp-server-postgres"],
      "env": {
        "DATABASE_URL": "${ENCRYPTED_DB_URL}",
        "SSL_MODE": "require",
        "CONNECTION_TIMEOUT": "30",
        "MAX_CONNECTIONS": "10"
      },
      "security": {
        "allowedOperations": ["read", "insert", "update"],
        "deniedTables": ["users_sensitive", "payment_details"],
        "auditLog": true,
        "rateLimiting": {
          "requestsPerMinute": 100,
          "burstLimit": 20
        }
      }
    }
  }
}

📊 MCP 성능 모니터링

실시간 성능 추적 및 최적화:

# mcp-performance-monitor.py
import asyncio
import time
from mcp.server import Server
from prometheus_client import Counter, Histogram, start_http_server

# 메트릭 정의
REQUEST_COUNT = Counter('mcp_requests_total', 'Total MCP requests', ['tool_name', 'status'])
REQUEST_DURATION = Histogram('mcp_request_duration_seconds', 'MCP request duration', ['tool_name'])

app = Server("performance-monitored-server")

@app.call_tool()
async def call_tool(name: str, arguments: dict):
    start_time = time.time()
    
    try:
        # 실제 도구 실행
        result = await execute_tool(name, arguments)
        
        # 성공 메트릭 기록
        REQUEST_COUNT.labels(tool_name=name, status='success').inc()
        REQUEST_DURATION.labels(tool_name=name).observe(time.time() - start_time)
        
        return result
        
    except Exception as e:
        # 실패 메트릭 기록
        REQUEST_COUNT.labels(tool_name=name, status='error').inc()
        REQUEST_DURATION.labels(tool_name=name).observe(time.time() - start_time)
        
        raise e

# Prometheus 메트릭 서버 시작
start_http_server(8000)

🔄 자동 복구 및 헬스체크

MCP 서버 안정성을 높이는 자동 복구 메커니즘:

{
  "mcpServers": {
    "resilient-service": {
      "command": "uvx",
      "args": ["mcp-server-api"],
      "healthCheck": {
        "enabled": true,
        "interval": 30,
        "timeout": 10,
        "retries": 3,
        "endpoint": "/health"
      },
      "autoRestart": {
        "enabled": true,
        "maxRestarts": 5,
        "restartDelay": 5,
        "backoffMultiplier": 2
      },
      "circuitBreaker": {
        "enabled": true,
        "failureThreshold": 5,
        "recoveryTimeout": 60,
        "halfOpenMaxCalls": 3
      }
    }
  }
}

MCP Registry Governance (v0.11, 엔터프라이즈)

v0.11부터 엔터프라이즈 관리자가 조직에서 허용하는 MCP 서버를 JSON 레지스트리로 중앙에서 관리합니다.

// mcp-registry.json (HTTPS 호스팅)
{
  "allowedServers": [
    { "name": "github", "version": ">=1.0.0", "approved": true },
    { "name": "postgres", "version": ">=0.5.0", "approved": true }
  ],
  "blockedServers": ["untrusted-server"],
  "requireApproval": true
}
  • IAM Identity Center를 통한 인증
  • HTTPS 호스팅으로 레지스트리 파일 관리
  • 개별 개발자는 레지스트리에 등록된 서버만 사용 가능

Remote MCP 서버 (v0.10+)

로컬 프로세스가 아니라 원격 서버에 바로 연결합니다.

{
  "mcpServers": {
    "remote-api": {
      "url": "https://mcp.company.com/api",
      "headers": {
        "Authorization": "Bearer ${MCP_TOKEN}"
      }
    }
  }
}

관련 문서

Ch11. MCP 연동

Codex 고급 활용 · STDIO·Streamable HTTP MCP 서버 등록(codex mcp add), allowlist·enabled_tools·timeout 정책, resource/action 서버 분리와 plugin 마켓플레이스 라이프사이클로 외부 도구 연동을 통제하는 운영 가이드

Ch6. MCP 서버 연동

Claude Code 고급 활용 · Claude Code에서 Model Context Protocol 서버와 도구·리소스를 운영하는 방법

Cmd. /mcp

Claude Code 명령어 마스터 · MCP 서버 연결과 OAuth 인증을 관리하고, 노출된 도구 상태를 점검하는 명령

Ch13. 커뮤니티 & 리소스

공식 문서·changelog·Discord·GitHub 토픽, Awesome MCP Servers와 cc-sdd 등 오픈소스, 학습 채널과 단계별 Kiro 마스터 로드맵 정리

Cmd. /mcp

Codex 명령어 마스터 · 연결된 MCP 서버와 노출된 도구 상태를 확인하고, /mcp verbose로 권한·메타데이터까지 진단하는 명령. rust-v0.23.0부터 관측

Ch5. Hooks 시스템

이벤트 기반 자동화, askAgent와 runCommand 타입, 실전 레시피

Ch7. Powers & 커스텀 도구

POWER.md·Steering·MCP 서버·도구 정의를 묶는 Power 패키지 구조, kiroPowers로 list/activate/use, power.json 설정과 register·package·install 배포

On this page

MCP 개념MCP 서버 설정설정 파일 위치기본 설정 구조인기 MCP 서버들GitHub 서버데이터베이스 서버 (PostgreSQL)Slack 서버파일 시스템 서버MCP 서버 관리VS Code 명령어서버 상태 확인autoApprove 설정커스텀 MCP 서버 작성간단한 MCP 서버 예시커스텀 서버 설정실전 활용 사례1. GitHub 이슈 관리 자동화2. 데이터베이스 스키마 분석3. 팀 커뮤니케이션 자동화문제 해결연결 실패권한 오류성능 최적화고급 MCP 활용 패턴1. 체인형 MCP 서버 구성2. 조건부 MCP 서버 활성화3. 커스텀 MCP 서버 개발 팁참고 문서엔터프라이즈급 MCP 아키텍처🏗️ 마이크로서비스 MCP 패턴🔐 보안 강화 MCP 설정📊 MCP 성능 모니터링🔄 자동 복구 및 헬스체크MCP Registry Governance (v0.11, 엔터프라이즈)Remote MCP 서버 (v0.10+)