MCP 생태계
MCP 프로토콜을 기반으로 성장하고 있는 생태계를 탐색하세요. 공개 서버, 레지스트리, 커뮤니티 리소스 등 MCP 생태계의 모든 것을 소개합니다.
- 공개 MCP 서버 30개 이상 소개
- Smithery 레지스트리 사용법
- 인기 서버 상세 가이드
- 커뮤니티 리소스 및 기여 방법
공식 MCP 서버
Anthropic과 커뮤니티가 관리하는 공식 MCP 서버들입니다. 프로덕션 환경에서 안정적으로 사용할 수 있습니다.
파일 시스템
| 서버 | 설명 | 언어 | GitHub |
|---|---|---|---|
| @modelcontextprotocol/server-filesystem | 로컬 파일 시스템 접근 (읽기/쓰기/검색) | TypeScript | 링크 |
| mcp-server-git | Git 리포지토리 관리 (커밋, 브랜치, 로그) | TypeScript | 링크 |
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Documents",
"/Users/username/Projects"
]
}
}
}
데이터베이스
| 서버 | 설명 | 언어 | 지원 DB |
|---|---|---|---|
| @modelcontextprotocol/server-sqlite | SQLite 데이터베이스 쿼리 및 관리 | TypeScript | SQLite |
| @modelcontextprotocol/server-postgres | PostgreSQL 데이터베이스 접근 | TypeScript | PostgreSQL |
| mcp-server-mysql | MySQL/MariaDB 쿼리 실행 | Python | MySQL |
| mcp-server-mongodb | MongoDB 컬렉션 조회 및 집계 | Python | MongoDB |
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://user:pass@localhost/mydb"
]
}
}
}
웹 API 통합
| 서버 | 설명 | 언어 | 주요 기능 |
|---|---|---|---|
| @modelcontextprotocol/server-github | GitHub API 통합 | TypeScript | 이슈, PR, 리포지토리 관리 |
| @modelcontextprotocol/server-gitlab | GitLab API 통합 | TypeScript | 이슈, MR, 파이프라인 |
| @modelcontextprotocol/server-slack | Slack 메시징 | TypeScript | 채널 관리, 메시지 전송 |
| mcp-server-google-drive | Google Drive 파일 접근 | Python | 파일 읽기/쓰기, 공유 |
| mcp-server-notion | Notion 데이터베이스 및 페이지 | Python | 페이지 생성, 쿼리 |
| mcp-server-jira | Jira 이슈 관리 | Python | 이슈 생성, 상태 변경 |
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
}
}
}
검색 및 지식베이스
| 서버 | 설명 | 언어 | 특징 |
|---|---|---|---|
| @modelcontextprotocol/server-brave-search | Brave 검색 엔진 | TypeScript | 웹 검색, 뉴스 검색 |
| @modelcontextprotocol/server-google-maps | Google Maps API | TypeScript | 장소 검색, 경로 찾기 |
| mcp-server-web-search | 다중 검색 엔진 지원 | Python | Google, Bing, DuckDuckGo |
| mcp-server-wikipedia | Wikipedia 검색 및 요약 | Python | 다국어 지원 |
| mcp-server-arxiv | arXiv 논문 검색 | Python | 메타데이터, PDF 다운로드 |
개발 도구
| 서버 | 설명 | 언어 |
|---|---|---|
| @modelcontextprotocol/server-puppeteer | 브라우저 자동화 | TypeScript |
| @modelcontextprotocol/server-docker | Docker 컨테이너 관리 | TypeScript |
| mcp-server-kubernetes | Kubernetes 클러스터 관리 | Python |
| mcp-server-aws | AWS 서비스 통합 | Python |
| mcp-server-sentry | Sentry 에러 추적 | Python |
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
}
}
}
생산성 도구
| 서버 | 설명 | 주요 기능 |
|---|---|---|
| mcp-server-calendar | Google Calendar 통합 | 일정 조회, 이벤트 생성 |
| mcp-server-gmail | Gmail 이메일 관리 | 이메일 읽기/쓰기/검색 |
| mcp-server-trello | Trello 보드 관리 | 카드 생성, 이동 |
| mcp-server-todoist | Todoist 할 일 관리 | 작업 추가, 완료 |
데이터 분석
| 서버 | 설명 | 언어 |
|---|---|---|
| mcp-server-pandas | Pandas 데이터프레임 조작 | Python |
| mcp-server-plotly | 대화형 차트 생성 | Python |
| mcp-server-jupyter | Jupyter 노트북 실행 | Python |
| mcp-server-r | R 스크립트 실행 | Python |
AI/ML 도구
| 서버 | 설명 | 특징 |
|---|---|---|
| mcp-server-openai | OpenAI API 통합 | 이미지 생성, 임베딩 |
| mcp-server-huggingface | Hugging Face 모델 | 추론, 모델 검색 |
| mcp-server-langchain | LangChain 통합 | 체인, 에이전트 실행 |
| mcp-server-qdrant | Qdrant 벡터 DB | 벡터 검색, 저장 |
| mcp-server-pinecone | Pinecone 벡터 DB | 시맨틱 검색 |
Smithery 레지스트리
Smithery는 MCP 서버를 위한 공식 패키지 레지스트리입니다. npm이 Node.js 패키지를 관리하듯이, Smithery는 MCP 서버를 검색, 설치, 공유할 수 있게 해줍니다.
주요 기능
- 서버 검색: 카테고리, 태그, 인기도로 필터링
- 원클릭 설치: Claude Desktop 설정 자동 생성
- 버전 관리: 서버 업데이트 추적
- 문서화: 각 서버의 사용법 및 예제
- 커뮤니티 평가: 별점, 리뷰, 다운로드 통계
사용 방법
# Smithery CLI 설치
npm install -g @smithery/cli
# 서버 검색
smithery search github
# 서버 정보 조회
smithery info @modelcontextprotocol/server-github
# Claude Desktop에 서버 추가
smithery install @modelcontextprotocol/server-github
# 설치된 서버 목록
smithery list
# 서버 업데이트
smithery update @modelcontextprotocol/server-github
웹 인터페이스
Smithery 웹사이트(smithery.ai)에서 그래픽 인터페이스로 서버를 탐색할 수 있습니다:
- 데이터베이스: 30+ 서버, SQLite, PostgreSQL, MongoDB 등
- 웹 API: 50+ 서버, GitHub, Slack, Google 서비스 등
- 파일 시스템: 15+ 서버, 로컬/클라우드 스토리지
- AI/ML: 20+ 서버, OpenAI, Hugging Face, 벡터 DB
- 개발 도구: 25+ 서버, Docker, Kubernetes, CI/CD
서버 게시하기
자신이 만든 MCP 서버를 Smithery에 게시할 수 있습니다:
{
"name": "my-awesome-server",
"version": "1.0.0",
"description": "간단한 설명",
"author": "Your Name",
"license": "MIT",
"keywords": ["mcp", "server", "api"],
"category": "web-api",
"repository": "https://github.com/username/my-awesome-server",
"homepage": "https://github.com/username/my-awesome-server#readme",
"command": "node",
"args": ["dist/index.js"],
"env": {
"API_KEY": {
"description": "Your API key",
"required": true
}
}
}
# Smithery에 로그인
smithery login
# 서버 게시
smithery publish
# 새 버전 게시
smithery publish --version 1.0.1
인기 서버 상세 가이드
파일 시스템 서버
가장 많이 사용되는 MCP 서버 중 하나로, 로컬 파일 시스템 접근을 제공합니다.
- 파일 읽기/쓰기
- 디렉토리 탐색
- 파일 검색 (glob 패턴)
- 파일 메타데이터 조회
- 보안 제한 (허용된 디렉토리만 접근)
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Documents",
"/Users/username/Projects",
"/Users/username/Downloads"
]
}
}
}
사용 예제:
// 사용자
"Documents 폴더에서 .md 파일을 찾아줘"
// Claude (MCP 파일시스템 서버 사용)
1. search_files 도구 호출:
directory: /Users/username/Documents
pattern: **/*.md
2. 결과:
- README.md
- notes/meeting-2024-01.md
- docs/api-reference.md
// 사용자
"README.md의 내용을 읽어줘"
// Claude
1. read_file 도구 호출:
path: /Users/username/Documents/README.md
2. 파일 내용 표시...
GitHub 서버
GitHub API를 통해 리포지토리, 이슈, PR을 관리할 수 있습니다.
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxx"
}
}
}
}
토큰 생성 방법:
- GitHub 설정 → Developer settings → Personal access tokens
- "Generate new token (classic)" 클릭
- 필요한 권한 선택:
repo: 리포지토리 전체 접근read:org: 조직 읽기workflow: GitHub Actions
- 토큰 생성 후 안전한 곳에 저장
사용 예제:
// 사용자
"내 리포지토리 중에서 'bug' 레이블이 있는 open 이슈를 찾아줘"
// Claude
1. 리포지토리 목록 조회
2. 각 리포지토리에서 list_issues 호출
3. 결과 집계 및 표시
발견된 이슈:
- repo1: #42 "Memory leak in parser" (bug, high-priority)
- repo2: #15 "Crash on startup" (bug)
- repo3: #8 "Invalid input handling" (bug, needs-triage)
PostgreSQL 서버
PostgreSQL 데이터베이스에 대한 쿼리 실행 및 스키마 조회 기능을 제공합니다.
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://user:password@localhost:5432/mydb"
]
}
}
}
보안 권장사항:
- 프로덕션 DB에 직접 연결 지양 (읽기 전용 복제본 사용)
- 최소 권한 원칙 적용 (SELECT만 허용)
- 연결 문자열에 비밀번호 하드코딩 금지 (환경 변수 사용)
- 쿼리 타임아웃 설정
// 사용자
"users 테이블의 스키마를 보여줘"
// Claude
테이블: users
컬럼:
- id (integer, PRIMARY KEY)
- email (varchar(255), UNIQUE, NOT NULL)
- name (varchar(100))
- created_at (timestamp, DEFAULT now())
- is_active (boolean, DEFAULT true)
인덱스:
- users_pkey (PRIMARY KEY on id)
- users_email_idx (UNIQUE on email)
// 사용자
"지난 7일간 가입한 활성 사용자 수를 알려줘"
// Claude
SELECT COUNT(*) as active_users
FROM users
WHERE created_at >= NOW() - INTERVAL '7 days'
AND is_active = true;
결과: 127명
Brave Search 서버
웹 검색 기능을 MCP를 통해 제공합니다.
{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your_api_key_here"
}
}
}
}
Brave Search API 키는 Brave Search API에서 발급받을 수 있습니다.
Slack 서버
Slack 워크스페이스와 통합하여 메시지 전송, 채널 관리 등을 수행합니다.
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-token",
"SLACK_TEAM_ID": "T1234567"
}
}
}
}
Slack 앱 설정:
- Slack API 사이트에서 새 앱 생성
- OAuth Scopes 추가:
channels:readchat:writeusers:read
- 워크스페이스에 앱 설치
- Bot Token 복사
커뮤니티 리소스
주요 GitHub 저장소
| 저장소 | 설명 | Stars |
|---|---|---|
| modelcontextprotocol/servers | 공식 MCP 서버 모음 | 5k+ |
| modelcontextprotocol/typescript-sdk | TypeScript SDK | 2k+ |
| modelcontextprotocol/python-sdk | Python SDK | 1.5k+ |
| wong2/mcp-cli | 커뮤니티 CLI 도구 | 800+ |
Awesome MCP
Awesome MCP는 MCP 관련 리소스를 큐레이션한 목록입니다:
- 공식 문서 및 스펙
- 튜토리얼 및 가이드
- 커뮤니티 서버
- 도구 및 유틸리티
- 비디오 및 블로그 포스트
커뮤니티 채널
- MCP Discord: 공식 Discord 서버 (5000+ 멤버)
- Anthropic Discord: Claude 및 MCP 논의
- r/ModelContextProtocol: Reddit 커뮤니티
튜토리얼 및 블로그
| 제목 | 저자 | 주제 |
|---|---|---|
| "Building Your First MCP Server" | Anthropic | 초보자 가이드 |
| "MCP Best Practices" | 커뮤니티 | 설계 패턴 |
| "Integrating MCP with LangChain" | LangChain | 통합 가이드 |
| "Production MCP Deployment" | DevOps 엔지니어 | 배포 전략 |
기여하기
MCP 생태계에 기여하는 방법:
- 서버 개발: 새로운 MCP 서버 작성 및 공개
- 문서화: 튜토리얼, 가이드, 예제 작성
- 버그 수정: 기존 서버의 이슈 해결
- 기능 추가: 기존 서버에 새 도구 추가
- 번역: 문서를 다른 언어로 번역
- 테스트: 서버 테스트 및 피드백 제공
# 1. 저장소 포크
gh repo fork modelcontextprotocol/servers
# 2. 브랜치 생성
git checkout -b feature/my-new-server
# 3. 변경사항 커밋
git add .
git commit -m "Add new server for XYZ service"
# 4. 푸시
git push origin feature/my-new-server
# 5. Pull Request 생성
gh pr create --title "Add XYZ server" --body "Description..."
서버 템플릿
새 MCP 서버를 빠르게 시작할 수 있는 공식 템플릿:
TypeScript 템플릿
# Cookiecutter로 프로젝트 생성
npx create-mcp-server my-server --template typescript
# 또는 수동 클론
git clone https://github.com/modelcontextprotocol/typescript-server-template
cd typescript-server-template
npm install
npm run build
Python 템플릿
# Cookiecutter로 프로젝트 생성
cookiecutter gh:modelcontextprotocol/python-server-template
# 또는 수동 설정
git clone https://github.com/modelcontextprotocol/python-server-template
cd python-server-template
pip install -e .
템플릿 포함 사항:
- 기본 서버 구조
- 예제 도구 및 리소스
- 테스트 설정
- CI/CD 워크플로우
- 문서 템플릿
- Smithery 게시 설정
실제 사용 사례
DevOps 자동화
사용 서버:
- @modelcontextprotocol/server-github
- mcp-server-kubernetes
- mcp-server-aws
- @modelcontextprotocol/server-slack
시나리오: "프로덕션에 새 버전 배포하고 팀에 알려줘"
- GitHub에서 최신 릴리스 태그 확인
- Kubernetes 클러스터에 새 이미지 배포
- 배포 상태 모니터링
- Slack 채널에 완료 메시지 전송
데이터 분석
사용 서버:
- @modelcontextprotocol/server-postgres
- mcp-server-pandas
- mcp-server-plotly
시나리오: "지난 30일 매출 추이를 차트로 보여줘"
- PostgreSQL에서 매출 데이터 쿼리
- Pandas로 데이터 정제 및 집계
- Plotly로 인터랙티브 차트 생성
- 결과 표시
콘텐츠 관리
사용 서버:
- @modelcontextprotocol/server-filesystem
- mcp-server-notion
- mcp-server-google-drive
시나리오: "프로젝트 문서를 Notion과 Google Drive에 동기화"
- 로컬 파일 읽기: 파일시스템 서버로 Markdown 파일 스캔 및 메타데이터 추출
- Notion 동기화: Notion API로 페이지 생성/업데이트, 기존 페이지는 변경 감지 후 갱신
- PDF 변환: Markdown → HTML → PDF 변환 파이프라인 실행
- Drive 업로드: Google Drive API로 PDF 업로드, 폴더 구조 유지
- 변경 추적: 파일 해시 비교로 중복 동기화 방지
// 문서 동기화 워크플로우
async function syncDocuments() {
// 1. 로컬 Markdown 파일 읽기
const mdFiles = await readLocalMarkdown('./docs');
// 2. Notion 페이지 동기화
for (const file of mdFiles) {
const pageId = await findOrCreateNotionPage(file.title);
await updateNotionPage(pageId, file.content);
}
// 3. PDF 변환 및 Google Drive 업로드
const pdfFiles = await convertToPDF(mdFiles);
await uploadToGoogleDrive(pdfFiles, 'project-docs');
console.log(`✅ ${mdFiles.length}개 문서 동기화 완료`);
}
다음 단계
- 서버 설치: Smithery에서 관심 있는 서버 설치
- 실습: Claude Desktop에서 다양한 서버 테스트
- 커스터마이징: 기존 서버를 포크하여 수정
- 개발: MCP 실전 예제를 참고하여 새 서버 작성
- 공유: Smithery에 서버 게시 및 커뮤니티 참여
추가 리소스
MCP 생태계 전체 조감도
MCP 생태계는 프로토콜을 중심으로 다양한 클라이언트, 서버, 레지스트리, 커뮤니티가 유기적으로 연결되어 있습니다. 아래 다이어그램은 전체 생태계의 구조를 한눈에 보여줍니다.
- 클라이언트 계층: Claude Desktop, Claude Code, Cursor, VS Code 등 다양한 AI 도구가 MCP 프로토콜을 통해 서버에 연결됩니다.
- 서버 계층: DB, API, 파일/DevOps, 검색, AI/ML 등 5개 카테고리로 분류되며, 각 카테고리에 다수의 공개 서버가 존재합니다.
- 인프라 계층: Smithery 레지스트리가 서버의 검색, 설치, 버전 관리를 담당하고, 커뮤니티가 생태계 확장을 주도합니다.
서버 선택 가이드
"어떤 MCP 서버를 써야 할까?"라는 질문에 답하기 위한 사용 사례별 추천 가이드입니다. 목적에 맞는 서버를 빠르게 찾아보세요.
사용 사례별 추천 서버
| 내가 하고 싶은 것 | 추천 서버 | 비고 |
|---|---|---|
| 로컬 파일을 읽고 쓰고 싶다 | @modelcontextprotocol/server-filesystem | 가장 기본적인 서버, 디렉토리 제한 설정 가능 |
| GitHub 이슈/PR을 관리하고 싶다 | @modelcontextprotocol/server-github | Personal Access Token 필요 |
| 데이터베이스를 조회하고 싶다 | server-postgres / server-sqlite | 읽기 전용 권한 권장 |
| 웹 검색 결과를 활용하고 싶다 | @modelcontextprotocol/server-brave-search | Brave API 키 필요 (무료 티어 있음) |
| Slack으로 메시지를 보내고 싶다 | @modelcontextprotocol/server-slack | Slack Bot Token 필요 |
| 브라우저를 자동화하고 싶다 | @modelcontextprotocol/server-puppeteer | 스크린샷, 폼 입력, 크롤링 |
| Docker 컨테이너를 관리하고 싶다 | @modelcontextprotocol/server-docker | Docker 데몬 접근 필요 |
| Kubernetes를 제어하고 싶다 | mcp-server-kubernetes | kubeconfig 설정 필요 |
| 데이터 분석/시각화를 하고 싶다 | mcp-server-pandas + mcp-server-plotly | Python 환경 필요 |
| 벡터 검색/RAG를 구현하고 싶다 | mcp-server-qdrant / mcp-server-pinecone | 벡터 DB 인스턴스 필요 |
| Notion 문서를 관리하고 싶다 | mcp-server-notion | Notion Integration Token 필요 |
| 논문을 검색하고 싶다 | mcp-server-arxiv | API 키 불필요, 무료 |
프로덕션 준비도 비교
서버를 프로덕션 환경에 도입하기 전에 안정성, 문서화, 유지보수 상태를 확인해야 합니다.
| 서버 | 안정성 | 문서화 | 유지보수 | 종합 평가 |
|---|---|---|---|---|
| server-filesystem | 높음 | 상세 | 활발 (공식) | 프로덕션 적합 |
| server-github | 높음 | 상세 | 활발 (공식) | 프로덕션 적합 |
| server-postgres | 높음 | 상세 | 활발 (공식) | 프로덕션 적합 |
| server-sqlite | 높음 | 상세 | 활발 (공식) | 프로덕션 적합 |
| server-brave-search | 높음 | 상세 | 활발 (공식) | 프로덕션 적합 |
| server-puppeteer | 중간 | 보통 | 활발 (공식) | 스테이징 권장 |
| mcp-server-kubernetes | 중간 | 보통 | 커뮤니티 | 검증 후 사용 |
| mcp-server-mongodb | 중간 | 보통 | 커뮤니티 | 검증 후 사용 |
| mcp-server-pandas | 낮음~중간 | 기본 | 커뮤니티 | 개발/테스트용 |
| mcp-server-langchain | 낮음~중간 | 기본 | 커뮤니티 | 개발/테스트용 |
- 공식 서버 우선:
@modelcontextprotocol/접두사가 붙은 공식 서버를 먼저 검토하세요. - GitHub 활성도 확인: 최근 커밋, 이슈 대응 속도, Stars 수를 참고하세요.
- 보안 검토: 서버가 요구하는 권한과 접근 범위를 확인하세요.
- 의존성 확인: 외부 API 키, 데이터베이스 접근 등 추가 설정이 필요한지 확인하세요.
- 테스트 환경: 프로덕션 도입 전 반드시 스테이징 환경에서 검증하세요.
서버 통합 패턴
MCP 서버를 실제 프로젝트에 통합할 때, 요구사항에 따라 다양한 아키텍처 패턴을 적용할 수 있습니다. 대표적인 3가지 패턴을 비교합니다.
패턴별 장단점
| 패턴 | 장점 | 단점 | 적합한 상황 |
|---|---|---|---|
| 단일 서버 | 설정 간단, 디버깅 용이, 낮은 복잡도 | 기능 제한, 확장 어려움 | 단일 데이터 소스만 필요한 경우 |
| 다중 서버 | 기능 조합 자유, 독립적 업데이트 가능 | 설정 복잡, 서버 간 상태 공유 불가 | 여러 외부 서비스를 동시에 활용하는 경우 |
| 게이트웨이 | 중앙 인증/로깅, 트래픽 제어, 보안 강화 | 단일 장애점, 추가 인프라 필요 | 엔터프라이즈 환경, 보안이 중요한 경우 |
다중 서버 구성 예제
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxx"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://readonly:pass@localhost/mydb"]
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "BSA_xxxx"
}
}
}
}
게이트웨이 패턴 구성 예제
{
"mcpServers": {
"gateway": {
"command": "node",
"args": ["./mcp-gateway/index.js"],
"env": {
"GATEWAY_CONFIG": "./gateway-config.json",
"AUTH_MODE": "oauth2",
"LOG_LEVEL": "info",
"RATE_LIMIT": "100/min"
}
}
}
}
- 중앙 인증: 모든 서버 접근을 단일 지점에서 인증하여 보안 관리가 용이합니다.
- 요청 로깅: 모든 MCP 요청/응답을 기록하여 감사 추적이 가능합니다.
- 트래픽 제어: Rate Limiting, 요청 필터링 등을 게이트웨이에서 통합 처리합니다.
- 서버 라우팅: 도구 이름에 따라 적절한 백엔드 서버로 자동 라우팅합니다.
보안 고려사항 가이드
MCP 서버는 외부 시스템에 대한 강력한 접근 권한을 AI에게 부여하므로, 보안에 대한 체계적인 접근이 필수적입니다.
서버 유형별 보안 체크리스트
| 서버 유형 | 주요 위험 | 필수 조치 | 권장 조치 |
|---|---|---|---|
| 파일 시스템 | 임의 파일 접근, 시스템 파일 노출 | 허용 디렉토리 제한, 쓰기 권한 최소화 | 읽기 전용 모드, 심볼릭 링크 제한 |
| 데이터베이스 | 데이터 유출, SQL Injection, 과도한 쿼리 | 읽기 전용 계정, 접근 가능 테이블 제한 | 쿼리 타임아웃, 결과 행 수 제한, 복제본 사용 |
| 웹 API (GitHub 등) | 토큰 유출, 과도한 권한, API 남용 | 최소 권한 토큰, 환경 변수로 토큰 관리 | Fine-grained PAT 사용, 토큰 주기적 갱신 |
| 검색 엔진 | API 키 유출, 과도한 요청 비용 | API 키 환경 변수 관리, 요청 제한 설정 | 사용량 모니터링, 비용 알림 설정 |
| Docker/K8s | 컨테이너 탈출, 클러스터 전체 접근 | 네임스페이스 격리, RBAC 최소 권한 | 읽기 전용 접근, 네트워크 정책 적용 |
| AI/ML | 프롬프트 인젝션, 모델 남용, 비용 폭증 | 요청당 비용 제한, 입력 검증 | 사용 로그 기록, 일일 사용량 한도 설정 |
토큰 및 인증정보 관리 모범 사례
- 설정 파일에 토큰/비밀번호를 직접 하드코딩하지 마세요.
- 설정 파일을 Git 저장소에 커밋하지 마세요.
- 광범위한 권한(예:
repo전체)의 토큰을 사용하지 마세요. - 만료되지 않는 토큰을 사용하지 마세요.
# 방법 1: .env 파일 사용 (Git에서 제외할 것)
# .env 파일 생성
cat > ~/.mcp/.env << 'EOF'
GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
BRAVE_API_KEY=BSA_xxxxxxxxxxxxxxxxxxxx
SLACK_BOT_TOKEN=xoxb-xxxxxxxxxxxxxxxxxxxx
DB_CONNECTION=postgresql://readonly:pass@localhost/mydb
EOF
# 파일 권한 제한 (소유자만 읽기)
chmod 600 ~/.mcp/.env
# 방법 2: OS 키체인/시크릿 매니저 사용 (macOS 예시)
security add-generic-password -s "mcp-github" -a "token" -w "ghp_xxxx"
# 방법 3: 1Password CLI 등 외부 시크릿 매니저 연동
export GITHUB_TOKEN=$(op read "op://Private/GitHub MCP/token")
네트워크 격리 및 접근 제어
특히 프로덕션 환경에서는 MCP 서버의 네트워크 접근을 엄격히 제한해야 합니다.
| 격리 수준 | 구현 방법 | 적합한 환경 |
|---|---|---|
| 최소 (개발) | 허용 디렉토리/테이블 제한, 최소 권한 토큰 | 로컬 개발 환경 |
| 중간 (스테이징) | 읽기 전용 접근, 전용 서비스 계정, 네트워크 세그먼트 분리 | 스테이징/QA 환경 |
| 높음 (프로덕션) | VPN/프록시 경유, IP 화이트리스트, 감사 로그, MFA 인증 | 프로덕션 환경, 규제 대상 시스템 |
- 최소 권한 원칙: 서버가 필요한 최소한의 권한만 부여하세요.
- 시크릿 관리: 환경 변수 또는 시크릿 매니저를 사용하고, 설정 파일에 직접 기록하지 마세요.
- 접근 감사: 모든 MCP 서버 호출을 로깅하고 주기적으로 검토하세요.
- 정기 갱신: 토큰과 API 키를 주기적으로 로테이션하세요 (90일 권장).
- 격리 운영: 프로덕션 데이터에 직접 접근하지 말고 읽기 전용 복제본을 활용하세요.
- 코드 리뷰: 커뮤니티 서버는 소스 코드를 직접 검토한 후 사용하세요.
MCP 생태계 로드맵
MCP는 2024년 말 첫 공개 이후 빠르게 성장하고 있습니다. 아래 타임라인은 MCP 생태계의 주요 이정표와 향후 예상되는 발전 방향을 보여줍니다.
타임라인 (2024~2026)
| 시기 | 이정표 | 상세 내용 |
|---|---|---|
| 2024 Q4 | MCP 1.0 공개 | Anthropic이 MCP 프로토콜 사양 및 공식 SDK(TypeScript, Python) 공개. 초기 공식 서버 10여 개 출시. |
| 2024 Q4 | Claude Desktop 통합 | Claude Desktop에서 MCP 서버 연결을 기본 지원. 로컬 stdio 기반 서버 실행. |
| 2025 Q1 | Smithery 레지스트리 런칭 | MCP 서버 전용 레지스트리 smithery.ai 정식 오픈. 검색, 설치, 게시 기능 제공. |
| 2025 Q1 | 커뮤니티 서버 급증 | 커뮤니티 주도 서버 100개 이상 등록. DB, API, AI/ML 등 다양한 카테고리 확장. |
| 2025 Q2 | Remote MCP 서버 지원 | SSE(Server-Sent Events) 기반 원격 서버 연결 지원. 클라우드 호스팅 서버 등장. |
| 2025 Q2~Q3 | Streamable HTTP 전송 | SSE 대체/보완으로 Streamable HTTP 전송 방식 도입. 더 유연한 원격 통신 지원. |
| 2025 Q3 | OAuth 2.1 인증 지원 | 원격 MCP 서버에 대한 표준화된 OAuth 인증 플로우 도입. 엔터프라이즈 환경 대응. |
| 2025 Q4 | 멀티 클라이언트 생태계 확장 | Cursor, VS Code, Windsurf 등 다양한 IDE/클라이언트에서 MCP 지원 확대. |
| 2026 Q1 | 엔터프라이즈 기능 강화 | 조직 수준의 서버 관리, 세분화된 권한 제어, 감사 로깅 등 엔터프라이즈 기능 추가. |
| 2026 이후 | 서버 마켓플레이스 공식화 | Smithery의 공식 마켓플레이스화, 유료 서버 모델, SLA 보장 서비스 등 상업 생태계 구축 예상. |
향후 기대되는 기능
- 원격 MCP 서버 보편화: 현재는 로컬 stdio 기반이 대부분이나, SSE 및 Streamable HTTP를 통한 원격 서버가 표준이 될 전망입니다. 별도 설치 없이 URL만으로 서버에 연결하는 방식이 일반화됩니다.
- 서버 마켓플레이스 공식화: npm이나 Docker Hub처럼, MCP 서버를 검색/설치/평가하는 공식 플랫폼이 자리잡을 것으로 예상됩니다.
- 표준화된 인증 체계: OAuth 2.1 기반의 인증이 표준으로 자리잡아, API 키를 수동으로 관리하는 대신 브라우저 기반 인증 플로우가 일반화됩니다.
- 서버 조합(Composition): 여러 MCP 서버를 조합하여 복합 워크플로우를 구성하는 선언적 방식이 등장할 수 있습니다.
- 엔터프라이즈 관리 도구: 조직 내 MCP 서버 배포, 권한 관리, 사용량 추적을 위한 전용 관리 도구가 등장할 것입니다.
- 크로스 플랫폼 호환성: 모든 주요 AI 클라이언트(Claude, GPT, Gemini 등)가 MCP를 지원하여 서버 하나로 모든 플랫폼에서 사용 가능해질 전망입니다.
- MCP 프로토콜 공식 사양: spec.modelcontextprotocol.io
- MCP 공식 블로그 및 릴리스 노트: modelcontextprotocol.io/blog
- Anthropic 공식 발표: anthropic.com/news
핵심 정리
- MCP 생태계의 핵심 개념과 흐름을 정리합니다.
- 공식 MCP 서버를 단계별로 이해합니다.
- 실전 적용 시 기준과 주의점을 확인합니다.
실무 팁
- 입력/출력 예시를 고정해 재현성을 확보하세요.
- MCP 생태계 범위를 작게 잡고 단계적으로 확장하세요.
- 공식 MCP 서버 조건을 문서화해 대응 시간을 줄이세요.