MCP란 무엇인가?
**MCP(Model Context Protocol)**는 AI 모델이 외부 도구와 데이터에 접근하는 방식을 표준화한 오픈 프로토콜입니다. Anthropic이 2024년 말에 공개했으며, AI 에이전트 생태계의 "USB 포트"와 같은 역할을 합니다.
왜 MCP가 필요한가?
기존 방식의 문제
사용자: "우리 회사 매출 데이터 분석해줘"
AI: "죄송합니다. 저는 외부 데이터베이스에 접근할 수 없습니다.
데이터를 복사해서 붙여넣어 주시겠어요?"
MCP 적용 후
사용자: "우리 회사 매출 데이터 분석해줘"
AI: [MCP: PostgreSQL 연결]
[쿼리 실행: SELECT * FROM sales WHERE year = 2026]
"2026년 1분기 매출이 전년 대비 23% 성장했습니다.
특히 B2B 부문에서..."
MCP 핵심 개념
1. MCP 서버
외부 도구나 데이터를 Claude에 노출하는 서비스입니다.
// 간단한 MCP 서버 예시
import { MCPServer } from '@anthropic-ai/mcp';
const server = new MCPServer({
name: 'company-data',
version: '1.0.0',
});
// 도구 정의
server.addTool({
name: 'get_sales_data',
description: '회사 매출 데이터를 조회합니다',
parameters: {
year: { type: 'number', description: '조회 연도' },
quarter: { type: 'number', description: '분기 (1-4)' },
},
handler: async ({ year, quarter }) => {
const data = await db.query(`
SELECT * FROM sales
WHERE year = $1 AND quarter = $2
`, [year, quarter]);
return data;
},
});
server.start();
2. MCP 클라이언트
Claude Code나 다른 AI 애플리케이션이 MCP 서버에 연결하는 방식입니다.
3. 리소스 (Resources)
AI가 참조할 수 있는 데이터입니다.
server.addResource({
uri: 'company://docs/guidelines',
name: '회사 코딩 가이드라인',
mimeType: 'text/markdown',
handler: async () => {
return fs.readFile('./CODING_GUIDELINES.md', 'utf-8');
},
});
4. 프롬프트 (Prompts)
재사용 가능한 프롬프트 템플릿입니다.
server.addPrompt({
name: 'code_review',
description: '코드 리뷰 요청',
arguments: [
{ name: 'file_path', description: '리뷰할 파일 경로' }
],
handler: async ({ file_path }) => ({
messages: [{
role: 'user',
content: `다음 파일을 리뷰해주세요: ${file_path}
회사 가이드라인을 참고해서 개선점을 제안해주세요.`
}]
}),
});
Claude Code에서 MCP 사용하기
1. MCP 서버 설정
~/.claude/settings.json:
{
"mcpServers": {
"company-db": {
"command": "node",
"args": ["./mcp-servers/company-db/index.js"],
"env": {
"DATABASE_URL": "postgresql://..."
}
},
"github": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-github"],
"env": {
"GITHUB_TOKEN": "ghp_..."
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-server-filesystem"],
"args": ["--root", "/home/user/projects"]
}
}
}
2. 연결 확인
claude /mcp
# 출력:
# Connected MCP Servers:
# ✓ company-db (3 tools, 2 resources)
# ✓ github (5 tools)
# ✓ filesystem (4 tools)
3. 사용 예시
You: GitHub에서 최근 열린 이슈들을 확인하고,
company-db에서 관련 고객 정보를 찾아줘
Claude: [MCP: github.list_issues]
[MCP: company-db.search_customers]
최근 3개 이슈를 확인했습니다:
1. #142 결제 오류 - 고객: ABC Corp (VIP)
2. #141 로그인 문제 - 고객: XYZ Inc (일반)
...
공식 MCP 서버 목록
Anthropic과 커뮤니티에서 제공하는 MCP 서버들:
| 서버 | 설명 | 설치 |
|---|---|---|
mcp-server-filesystem | 파일 시스템 접근 | npx @anthropic-ai/mcp-server-filesystem |
mcp-server-github | GitHub API 연동 | npx @anthropic-ai/mcp-server-github |
mcp-server-postgres | PostgreSQL 쿼리 | npx @anthropic-ai/mcp-server-postgres |
mcp-server-sqlite | SQLite 데이터베이스 | npx @anthropic-ai/mcp-server-sqlite |
mcp-server-slack | Slack 메시지 | npx @anthropic-ai/mcp-server-slack |
mcp-server-google-drive | Google Drive 파일 | npx @anthropic-ai/mcp-server-gdrive |
mcp-server-notion | Notion 페이지 | npx @anthropic-ai/mcp-server-notion |
커스텀 MCP 서버 만들기
프로젝트 설정
mkdir my-mcp-server && cd my-mcp-server
npm init -y
npm install @anthropic-ai/mcp zod
기본 구조
// index.ts
import { MCPServer, z } from '@anthropic-ai/mcp';
const server = new MCPServer({
name: 'my-custom-server',
version: '1.0.0',
});
// 날씨 정보 도구
server.addTool({
name: 'get_weather',
description: '특정 도시의 현재 날씨를 조회합니다',
parameters: z.object({
city: z.string().describe('도시 이름'),
}),
handler: async ({ city }) => {
const response = await fetch(
`https://api.weather.com/v1/current?city=${city}`
);
return response.json();
},
});
// 서버 시작
server.start({ transport: 'stdio' });
테스트
# 로컬 테스트
npx @anthropic-ai/mcp-inspector ./index.ts
보안 고려사항
1. 권한 최소화
{
"mcpServers": {
"database": {
"command": "...",
"permissions": {
"read": true,
"write": false,
"delete": false
}
}
}
}
2. 환경 변수 관리
# .env 파일 사용 (Git 제외)
DATABASE_URL=postgresql://...
API_KEY=sk-...
# Claude 설정에서 참조
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
3. 감사 로깅
server.use(async (ctx, next) => {
console.log(`[${new Date().toISOString()}] Tool: ${ctx.tool}`);
await next();
});
다음 단계
MCP를 이해했다면, 다음 편에서 Vibe Coding을 통해 AI와 자연스럽게 협업하는 워크플로우를 배워보겠습니다. 단순한 질문-응답을 넘어, AI를 진정한 페어 프로그래밍 파트너로 활용하는 방법을 알아봅니다.