MCP 서버란? AI 도구 연결의 새로운 표준
AI 어시스턴트를 쓰다 보면 한계를 느낄 때가 있다. 파일을 직접 읽지 못하고, 데이터베이스에 접근하지 못하고, 외부 API를 호출하지 못한다. MCP(Model Context Protocol)는 이 문제를 해결하기 위해 등장한 개방형 프로토콜이다. 2024년 11월 Anthropic이 공개했고, 이미 여러 도구에서 지원하기 시작했다.
MCP가 뭔가요?
MCP는 AI 모델이 외부 도구와 데이터에 접근할 수 있게 해주는 표준 프로토콜이다. 쉽게 말해 AI와 여러 서비스 사이의 "USB 포트" 같은 것이다.
기존에는 AI 앱마다 도구 연동 방식이 달랐다. ChatGPT 플러그인, Claude의 Tool Use, 각종 에이전트 프레임워크까지 전부 제각각이었다. 개발자 입장에서는 같은 기능을 여러 번 구현해야 했다. MCP는 이 문제를 해결한다. 한 번 MCP 서버를 만들면 MCP를 지원하는 모든 AI 클라이언트에서 사용할 수 있다.
MCP 아키텍처
MCP는 클라이언트-서버 구조를 따른다.
MCP 호스트
AI 앱 자체다. Claude Desktop, Cursor, Continue 같은 도구가 여기에 해당한다. 호스트는 여러 MCP 서버에 연결할 수 있다.
MCP 클라이언트
호스트 내부에서 각 서버와의 연결을 관리하는 컴포넌트다. 서버마다 독립적인 클라이언트 인스턴스가 생성된다.
MCP 서버
실제 기능을 제공하는 경량 프로그램이다. 파일 시스템 접근, 데이터베이스 쿼리, API 호출 같은 작업을 수행한다. 로컬에서 실행되거나 원격 서버에서 돌아갈 수 있다.
예를 들어 Claude Desktop에서 GitHub 저장소를 분석하고 싶다면, GitHub MCP 서버를 설치하면 된다. Claude가 직접 저장소 내용을 읽고, 이슈를 확인하고, 코드를 분석할 수 있게 된다.
MCP 서버가 제공하는 것들
MCP 서버는 세 가지 핵심 기능을 제공한다.
Tools (도구)
AI가 호출할 수 있는 함수다. 파일 읽기, 웹 검색, 데이터베이스 쿼리 같은 액션을 수행한다. 모델이 필요할 때 직접 호출한다.
Resources (리소스)
AI에게 컨텍스트를 제공하는 데이터다. 파일 내용, 문서, API 응답 같은 정보가 해당된다. 사용자가 명시적으로 선택하면 AI의 컨텍스트에 추가된다.
Prompts (프롬프트)
미리 정의된 템플릿이다. 특정 작업에 맞춤화된 지시문을 저장해두고 재사용할 수 있다.
직접 써보니
Cursor에서 MCP 서버를 연결해봤다. 설정 파일에 서버 정보를 추가하면 끝이다.
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/projects"]
}
}
}이렇게 하면 AI가 /Users/me/projects 폴더의 파일을 직접 읽을 수 있다. "이 폴더에서 README 파일 찾아서 요약해줘"라고 하면 실제로 파일을 읽어서 답변한다.
처음엔 좀 어색했다. AI가 내 로컬 파일에 접근한다는 게 신기하면서도 약간 불안하기도 했다. 하지만 권한 설정을 직접 제어할 수 있고, 어떤 작업을 하는지 로그로 확인할 수 있어서 금방 익숙해졌다.
어떤 MCP 서버들이 있나
Anthropic이 공식으로 제공하는 서버들이 있다.
- Filesystem: 로컬 파일 읽기/쓰기
- GitHub: 저장소, 이슈, PR 관리
- PostgreSQL: 데이터베이스 쿼리
- Slack: 채널 메시지 읽기/보내기
- Google Drive: 문서 검색 및 읽기
커뮤니티에서 만든 서버도 꽤 많다. Notion 연동, 브라우저 자동화, Docker 관리 같은 것들이 있다. GitHub에서 "mcp server"로 검색하면 여러 프로젝트를 찾을 수 있다.
MCP 서버 만들기
직접 MCP 서버를 만들 수도 있다. Python이나 TypeScript SDK가 제공된다.
간단한 예시로, 현재 날씨를 알려주는 서버를 만들 수 있다.
from mcp.server import Server
from mcp.types import Tool
app = Server("weather")
@app.tool()
async def get_weather(city: str) -> str:
"""도시의 현재 날씨를 조회합니다"""
# 실제로는 날씨 API를 호출
return f"{city}의 현재 날씨: 맑음, 15도"이 서버를 Claude Desktop에 연결하면 "서울 날씨 알려줘"라고 했을 때 이 함수가 호출된다.
보안은 괜찮을까
MCP는 로컬에서 실행되기 때문에 데이터가 외부로 나가지 않는다. 서버가 접근할 수 있는 범위도 설정에서 제한할 수 있다. 예를 들어 파일 시스템 서버는 특정 폴더만 접근하도록 설정하는 게 가능하다.
물론 신뢰할 수 없는 MCP 서버를 설치하면 위험하다. 공식 서버나 검증된 커뮤니티 서버를 사용하는 게 좋다. 오픈소스라서 코드를 직접 확인할 수 있다는 점도 장점이다.
앞으로의 가능성
MCP가 표준으로 자리 잡으면 AI 생태계가 크게 달라질 수 있다. 지금은 AI 도구마다 따로 플러그인을 만들어야 하지만, MCP 하나로 통일되면 개발 비용이 줄어든다.
Microsoft, JetBrains, Sourcegraph 같은 회사들도 MCP 지원을 발표했다. 아직 초기 단계지만 방향성은 분명하다. AI가 고립된 챗봇에서 벗어나 실제 작업 환경과 연결되는 것. MCP는 그 연결 고리 역할을 한다.
마무리
MCP는 AI와 도구 사이의 표준 인터페이스다. 한 번 만든 서버를 여러 AI 앱에서 재사용할 수 있고, 로컬 실행으로 보안도 챙겼다.
관심 있다면 Claude Desktop에 파일 시스템 서버부터 연결해보길 권한다. 설정은 5분이면 끝나고, AI가 내 파일을 직접 읽는 경험은 꽤 신선하다. 공식 문서는 modelcontextprotocol.io에서 확인할 수 있다.
클론코딩 팀
튜토리얼 기반 학습의 새로운 기준을 만들어가는 클론코딩입니다.