내가 직접 만들 때까지 MCP를 얻지 못했다
I’m ready to translate the content, but it looks like the text you’d like translated isn’t included in your message—only the source link is present. Could you please paste the article (or the specific portion you want translated) here? I’ll then translate it into Korean while preserving the formatting, markdown, and code blocks as requested.
“MCP 서버가 뭐지?”에서 “내가 직접 만들었어”까지
8개월 전만 해도 MCP 서버가 무엇인지 겨우 설명할 수 있었습니다.
링크드인 게시물과 우리 AWS Community Builders Slack에서 (Model Context Protocol) 라는 용어가 떠다니는 것을 보았습니다. 모두가 그것에 대해 신나했지만, 저는 그것이 무엇인지—또는 왜 신경 써야 하는지 전혀 몰랐습니다. 마치 AI 사람들(“데이터 사이언스 및 ML 엔지니어”)을 위한 것이고, 우리 팀의 클라우드 인프라 작업과 플랫폼 업무와는 거리가 먼 것처럼 느껴졌습니다.
Amazon Q 를 통해 몇 가지 AWS Labs MCP 서버(문서 및 가격 관련)를 사용해 보았습니다. 작동은 했지만, 저는 그것들을 불투명한 플러그인처럼 다루었습니다—유용하지만 신비롭고. 사용할 수는 있었지만, 설명할 수는 없었습니다.
그런 뒤 11월에 Kiro 가 공개되었고, 저는 그 기능을 더 깊이 탐색하기 시작했습니다(추후 포스트에서 자세히 다룰 예정). 같은 시기에 Proof‑of‑Concept 에 참여해 MCP 서버를 구축할 기회를 얻었습니다. 초기 아이디어는 우리 공개 API를 AI 도구와 LLM에 MCP 서버를 통해 노출하는 것이었습니다. 검증이 되면 이를 제품에 적용해 고객도 사용할 수 있게 하는 것이 목표였습니다.
제가 더 깊이 파고들수록, MCP 서버는 점차 이해가 되기 시작했습니다.
MCP 서버란?
- API와 유사하지만, AI 에이전트용으로 설계되었습니다.
- 에이전트가 훈련 데이터 외부의 서비스와 데이터셋을 통신하고 활용할 수 있게 합니다.
Note: 이 게시물은 가이드나 튜토리얼이 아닙니다. 이미 훌륭한 자료들이 존재하며, 언제든지 원하는 AI 도구에 질문해 명확히 할 수 있습니다. 이는 “이게 뭔지 전혀 모른다”에서 “직접 만들고 배포할 수 있다”로 넘어가는 성찰입니다.
통찰을 불러일으킨 문제
대형 언어 모델(LLM)은 강력하지만 시간에 고정되어 있어—학습 데이터에 포함된 내용만 알 수 있습니다.
그들은 알지 못합니다:
- 현재 여러분의 저장소 상태
- 내부 문서에 무엇이 있는지
- Jira 티켓의 진행 상황
- API나 데이터베이스의 구조
AI 도구가 실제 엔지니어링 워크플로우에서 진정으로 유용하려면 실시간 외부 시스템에 안전하고 일관되게 연결할 방법이 필요합니다. 여기서 통합(integration)이 등장하고, 상황은 금방 복잡해집니다.
AI 통합을 만든다고 상상해 보세요
보조 도우미에게 다음을 시키고 싶습니다:
- GitHub 저장소에 접근하기
- Jira 티켓을 조회하기
- 회사 문서를 검색하기
- 데이터베이스를 확인하기
이제 네 개의 AI 도구가 있다고 가정해 보겠습니다:
| AI Tool | GitHub | Jira | Docs | Database |
|---|---|---|---|---|
| Claude | ✅ | ✅ | ✅ | ✅ |
| Copilot | ✅ | ✅ | ✅ | ✅ |
| Cursor | ✅ | ✅ | ✅ | ✅ |
| ChatGPT | ✅ | ✅ | ✅ | ✅ |
이는 4 × 4 = 16개의 맞춤형 통합을 의미합니다. 각 통합은:
- 서로 다르게 구현됨
- 별도로 유지보수됨
- 다른 도구와 호환되지 않음
- 중복된 작업을 초래함
이는 완전히 지속 불가능합니다.
표준 프로토콜을 사용하면 기능을 한 번만 기술하고, 이를 준수하는 모든 AI가 이를 활용할 수 있습니다. 복잡도는 **O(N × M)**에서 **O(N + M)**로 바뀌며, 여기서 N = AI 도구 수, M = 데이터 소스 수입니다.
MCP: The Universal Adapter for AI
Think of MCP as USB‑C for AI tools.
Before USB‑C
- 키보드 → PS/2 포트
- 마우스 → 시리얼 포트
- 프린터 → 병렬 포트
- 카메라 → 독점 커넥터
각 장치는 자체 포트가 필요했으며, 장치는 특정 컴퓨터와만 작동했습니다.
After USB‑C
- 하나의 표준 커넥터가 어디서든 작동합니다.
MCP Does the Same for AI
| Before MCP | After MCP |
|---|---|
| 모든 AI 도구가 각 데이터 소스마다 맞춤형 통합을 필요로 함 | 하나의 표준 프로토콜; 어떤 MCP 서버든 어떤 MCP 클라이언트와도 작동 |
Example: Build a GitHub MCP server once → it works with Claude, Copilot, Cursor, and any future MCP‑compatible AI tool.
MCP 서버란 정확히 무엇인가?
간단히 말해, MCP 서버는 다음을 수행하는 프로그램이다:
- 데이터 소스(GitHub, 데이터베이스, API 등)에 연결한다
- 그 데이터를 표준화된 **“도구”**를 통해 노출한다
- MCP 프로토콜을 사용해 어떤 AI든 사용할 수 있게 한다
MCP 서버는 본질적으로 래퍼—API와 비슷하지만—많은 REST 엔드포인트 대신 도구를 노출한다.
MCP 서버가 AI와 연결될 때, 자신의 기능을 다음과 같이 선언한다:
{
"tools": [
{
"name": "search_repositories",
"description": "Search GitHub repositories",
"parameters": {
"query": "string",
"limit": "number"
}
},
{
"name": "get_file_contents",
"description": "Get contents of a file from a repository",
"parameters": {
"owner": "string",
"repo": "string",
"path": "string"
}
}
]
}
이제 AI는 다음을 알게 된다:
- 어떤 도구가 사용 가능한지
- 각 도구가 무엇을 하는지
- 필요한 매개변수가 무엇인지
- 어떻게 호출하는지
도구들은 자동 문서화가 되지만, 여전히 주의가 필요하다.
도구가 너무 많음 = 컨텍스트 과다
도구를 더 추가하면서, 정의로 AI를 과부하시키면 성능이 저하된다는 것을 깨달았습니다.
5 MCP servers × 20 tools each = 100 tools available
각 요청마다 AI는 다음을 수행해야 합니다:
- 모든 100개의 도구 정의를 로드한다
- 각 도구가 무엇을 하는지 이해한다
- 사용할 도구를 결정한다
- 올바른 도구를 실행한다
결과
- 컨텍스트 부피 증가 – 도구 정의가 실제 질문이 제시되기 전에 귀중한 토큰을 차지한다.
- 정확도 저하 – 이름이 모호할 경우 AI가 잘못된 도구를 선택할 수 있다.
대략적인 토큰 수:
100개의 도구 × (이름 + 설명 + 파라미터 스키마) → 요청당 수천 개 토큰.
모범 사례
- 의도적으로 설치할 MCP 서버를 선택한다.
- 찾은 모든 MCP 서버를 설치하지 않는다.
- AI가 실제로 필요로 하는 도구 세트에 집중한다.
TL;DR
- **MCP (Model Context Protocol)**는 AI 에이전트가 **“툴”**을 통해 외부 서비스를 호출할 수 있게 해 주는 표준 프로토콜입니다.
- MCP 서버는 데이터 소스(GitHub, Jira, DB 등)를 래핑하여, 이를 MCP‑호환 AI가 사용할 수 있는 일련의 툴로 노출합니다.
- MCP를 도입하면 N × M 개의 맞춤형 통합을 N + M 개의 컴포넌트로 대체할 수 있어 엔지니어링 비용이 크게 감소합니다.
- MCP 서버를 AI용 USB‑C로 생각하세요: 하나의 커넥터에 여러 장치를 연결할 수 있습니다.
- 툴 과다 제공을 피하고, 실제 가치를 더하는 툴만 노출하세요.
이제 명확한 개념 모델을 갖게 되었습니다: MCP = 범용 어댑터; MCP 서버 = 어댑터 구현; 툴 = 노출하는 플러그. 즐거운 개발 되세요!
Example Configuration
{
"mcpServers": {
"awslabsaws-documentation-mcp-server": {
"command": "uvx",
// some args
"disabled": false,
"disabledTools": [],
"autoApprove": ["read_documentation"]
},
"terraform-mcp-server": {
"command": "uvx",
// some args
"disabled": true,
"autoApprove": []
}
}
}
다른 에이전트는 서로 다른 MCP 설정을 가질 수 있습니다:
- CloudOps 에이전트 – AWS 문서와 Terraform MCP 서버를 사용합니다.
- Frontend 에이전트 – React와 GitHub MCP 서버를 사용할 수 있습니다.
또한 자동 승인(auto‑approve) 기능을 사용해 안전한 명령을 에이전트가 자동으로 실행하도록 할 수 있습니다.
명확한 도구 이름 사용
자신만의 MCP 서버를 구축할 때는 네임스페이스가 포함된 이름을 사용하세요.
잘못된 예
search()get()list()
올바른 예
github_search_repositories()github_get_file_contents()github_list_pull_requests()
AI가 도메인을 더 빠르게 필터링하고 이해할 수 있습니다.
리소스를 활용한 지연 로딩
일부 MCP 서버는 많은 개별 도구 대신 리소스를 사용합니다.
다양한 문서마다 50개의 도구 대신
get_lambda_docs()get_s3_docs()get_ec2_docs()
하나의 도구 + 리소스
read_documentation(resource_uri)
리소스
docs://aws/lambdadocs://aws/s3docs://aws/ec2
리소스는 필요 시점에 발견되며, 사전에 로드되지 않습니다.
우리는 실제로 첫 번째 MCP 서버를 구축하면서 모범 사례를 더 깊이 살펴볼 것입니다.
통신 모드
MCP 서버는 두 가지 방식으로 통신할 수 있습니다.
1. STDIO (로컬 프로세스)
- 로컬 프로세스로 실행됩니다.
stdin/stdout을 통한 통신 (터미널 파이핑과 유사).- AI 클라이언트가 프로세스를 생성하고 관리합니다.
구성 예시
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
}
}
}
STDIO를 사용할 때
✅ 로컬 도구, 파일 시스템, git 작업
단점 – (여기에 단점을 나열하세요)
2. HTTP (원격 서비스)
- 원격 HTTP 서비스로 실행됩니다.
- 클라이언트는 URL + 인증을 통해 연결합니다.
구성 예시
{
"mcpServers": {
"company-api": {
"type": "http",
"url": "https://mcp.company.com",
"headers": {
"Authorization": "Bearer ${API_TOKEN}"
}
}
}
}
HTTP를 사용할 때
✅ 공유 서비스 또는 API
단점 – (여기에 단점을 나열하세요)
Ecosystem Overview
한 번 MCP를 이해하고 나니, 빠르게 성장하고 있는 전체 생태계가 있다는 것을 깨달았습니다:
- AWS – 다양한 선택지 (예: AWS Labs MCP)
- Terraform
- Atlassian – Jira와 Confluence
- GitHub
- MCP Servers – Awesome MCP Servers
AI 활용을 크게 향상시킬 수 있는 유용한 서버가 많이 있지만, 신중하고 선택적으로 사용하세요—첫 주에 열두 개 정도 설치하게 될 수도 있습니다!
Building Your Own
진입 장벽이 낮습니다:
- Python – FastMCP
- TypeScript –
@modelcontextprotocol/sdk - JSON‑RPC를 STDIO 또는 HTTP를 통해 사용할 수 있는 모든 언어
Docs:
다음 단계
앞으로의 게시물에서는 동료와 경영진에게 개념을 보여주기 위해 내부 POC를 어떻게 구축했는지 보여드리겠습니다.
처음엔 겁이 났다는 것을 인정합니다(그 임포스터 신드롬은 결코 사라지지 않죠), 하지만 결국 중요한 것은 “AI를 추가하는 것”이 아니라 시스템을 AI‑접근 가능하게 만드는 것입니다.
AWS 에이전트 코어 런타임
MCP 서버 구축에 더 깊이 들어가기 전에, 이 탐색을 가능하게 만든 도구인 Kiro를 소개해야 합니다.
이 시리즈 제목이 암시하듯, 이 여정은 회의 사이에 Vibecoding하면서 이루어졌습니다. 올바른 AI 설정이 없었다면, 다른 모든 일을 동시에 처리하면서 직접 손을 대는 것이 불가능했을 것입니다.
계속 지켜봐 주세요.