MCP 살펴보기
터미널 명령어 너머의 연결, MCP(Model Context Protocol)를 직접 설정하고 사용해본 경험을 정리합니다.
터미널 도구와 MCP, 무엇이 다를까
터미널 기반으로 명령어를 작성하며 Claude를 활용하는 것도 여러 도구와 상호작용할 수 있다. 하지만 MCP를 사용하면 AI가 외부 리소스와 더 안전하고 체계적으로 연동할 수 있다.
터미널 도구들이 명령어 기반의 자동화라면, MCP는 구조화된 연동에 특화되어 있다.
개발 패러다임의 변화: 프롬프트 엔지니어링 → 컨텍스트 엔지니어링
MCP는 단순한 편의기능이 아니다. “프롬프트 엔지니어링”에서 “컨텍스트 엔지니어링”으로의 패러다임 전환을 상징한다.
어떻게 질문할 것인가가 아닌, 어떤 데이터와 도구에 접근할 수 있게 할 것인가로 관점이 이동하는 것이다.
프롬프트 엔지니어링은 “AI에게 어떻게 질문을 잘 쓸까”에 집중하는 방식이다.
컨텍스트 엔지니어링은 관점이 다르다. 질문을 잘 쓰는 게 아니라, AI가 접근할 수 있는 환경 자체를 설계하는 것이다.
백엔드 비유로 설명하면, 프롬프트 엔지니어링이 “API 요청 body를 잘 작성하는 것”이라면, 컨텍스트 엔지니어링은 “API 서버가 어떤 DB와 외부 서비스에 연결되는지를 설계하는 것”에 가깝다.
실제 예시로 비교하면 차이가 명확하다.
- 프롬프트 엔지니어링 시대: “이 에러 로그를 봐줘” → 사용자가 로그를 복사·붙여넣기 → AI가 분석
- 컨텍스트 엔지니어링 시대: AI가 MCP로 로그 시스템에 직접 연결 → 스스로 로그를 조회하고, Git 히스토리도 보고, Jira 이슈도 확인해서 종합적으로 분석
MCP(Model Context Protocol)란?
AI 모델이 외부 리소스와 안전하게 상호작용할 수 있도록 설계된 개방형 표준이다. Anthropic이 제안했으며, 구조화된 메시지를 주고받기 때문에 정밀하고 안정적인 데이터 처리가 가능하다.
MCP의 구조
MCP는 클라이언트-서버 구조로 동작한다.
- MCP Host: Claude Code, Claude Desktop 같이 AI를 실행하는 애플리케이션
- MCP Client: Host 내에서 MCP 서버와 통신하는 컴포넌트
- MCP Server: 외부 리소스(DB, API, 파일 시스템 등)에 접근하는 서버
1
2
3
4
5
Claude Code (Host)
└── MCP Client
├── PostgreSQL MCP Server → 데이터베이스
├── GitHub MCP Server → 저장소, 이슈
└── Slack MCP Server → 채널, 메시지
AI가 “DB에서 최근 주문을 조회해줘”라고 요청받으면, MCP 클라이언트가 PostgreSQL MCP 서버를 통해 실제 DB에 쿼리를 날리고 결과를 가져오는 방식이다.
왜 MCP가 필요한가
AI가 외부 시스템에 접근하는 방법은 MCP 이전에도 있었다. 브라우저 조작, 터미널 명령어 등을 통해 간접적으로 연동할 수 있었다. 하지만 이런 방식은 비구조적이고 불안정했다.
MCP는 표준화된 프로토콜이기 때문에:
- 어떤 도구가 어떤 기능을 제공하는지 AI가 정확히 알 수 있다
- 권한 범위를 명확하게 제어할 수 있다
- 서버를 한 번 만들면 여러 AI 모델에서 재사용할 수 있다
주요 MCP 서버 생태계
현재 다양한 MCP 서버가 공개되어 있다.
| 서버 | 연동 대상 | 할 수 있는 것 |
|---|---|---|
@modelcontextprotocol/server-postgres | PostgreSQL | 쿼리 실행, 스키마 조회 |
@modelcontextprotocol/server-github | GitHub | 저장소 탐색, 이슈/PR 조회 |
@modelcontextprotocol/server-slack | Slack | 메시지 조회, 채널 탐색 |
@modelcontextprotocol/server-filesystem | 로컬 파일 | 파일 읽기/쓰기 |
@modelcontextprotocol/server-brave-search | Brave Search | 웹 검색 |
PostgreSQL MCP 실습
설정
Claude에게 자연어로 MCP 설정을 요청한다.
1
$ claude "postgres MCP를 설정해줘. DB 주소는 postgresql://mycafe_user:mycafe_password@localhost:5432/mycafe_db를 써"
Claude가 내부적으로 claude mcp add 명령을 실행하여 MCP 서버를 등록하고, 프로젝트 루트에 .mcp.json 설정 파일을 자동으로 생성한다.
1
2
3
4
⏺ Bash(claude mcp add postgres -s project -- npx -y @modelcontextprotocol/server-postgres postgresql://mycafe_user:mycafe_password@localhost:5432/mycafe_db)
⎿ Added stdio MCP server postgres with command: npx -y @modelcontextprotocol/server-postgres
postgresql://mycafe_user:mycafe_password@localhost:5432/mycafe_db to project config
File modified: /Users/chankim/github/_Book_Claude-Code/mcp_test/.mcp.json
생성된 .mcp.json은 아래와 같은 구조다.
1
2
3
4
5
6
7
8
9
10
11
12
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://mycafe_user:mycafe_password@localhost:5432/mycafe_db"
]
}
}
}
재시작 후 연결 확인
Claude를 재시작하면 MCP가 활성화된다. 정상적으로 연결되면 아래와 같이 확인할 수 있다.
설치된 MCP 서버 목록도 함께 확인된다.
연결 후 활용 예시
MCP가 연결되면 자연어로 DB 작업이 가능해진다.
1
2
3
"orders 테이블에서 최근 7일간 금액이 10만원 이상인 주문을 조회해줘"
"users 테이블의 스키마를 보여줘"
"이번 달 일별 매출 합계를 집계해줘"
AI가 직접 SQL을 작성하고 실행한 뒤 결과를 분석해준다. 쿼리 결과를 복사해서 붙여넣는 과정이 없어지는 것이다.
보안 고려사항
MCP는 편리하지만 그만큼 주의가 필요하다.
- 읽기 전용 계정 사용: 실수로 데이터를 수정하거나 삭제하는 것을 방지하기 위해, MCP용 DB 계정은 SELECT 권한만 부여하는 것이 안전하다.
- 민감한 정보 노출 주의:
.mcp.json에 DB 비밀번호가 평문으로 들어가므로, 이 파일은 절대 Git에 올리면 안 된다..gitignore에 추가해두자. - 프로젝트 범위 제한:
project스코프로 설정하면 해당 프로젝트에서만 MCP가 활성화된다. 전체 적용이 필요한 경우만global스코프를 사용하자.

