Post

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-postgresPostgreSQL쿼리 실행, 스키마 조회
@modelcontextprotocol/server-githubGitHub저장소 탐색, 이슈/PR 조회
@modelcontextprotocol/server-slackSlack메시지 조회, 채널 탐색
@modelcontextprotocol/server-filesystem로컬 파일파일 읽기/쓰기
@modelcontextprotocol/server-brave-searchBrave 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 서버 목록도 함께 확인된다.

MCP 서버 목록

연결 후 활용 예시

MCP가 연결되면 자연어로 DB 작업이 가능해진다.

1
2
3
"orders 테이블에서 최근 7일간 금액이 10만원 이상인 주문을 조회해줘"
"users 테이블의 스키마를 보여줘"
"이번 달 일별 매출 합계를 집계해줘"

AI가 직접 SQL을 작성하고 실행한 뒤 결과를 분석해준다. 쿼리 결과를 복사해서 붙여넣는 과정이 없어지는 것이다.


보안 고려사항

MCP는 편리하지만 그만큼 주의가 필요하다.

  • 읽기 전용 계정 사용: 실수로 데이터를 수정하거나 삭제하는 것을 방지하기 위해, MCP용 DB 계정은 SELECT 권한만 부여하는 것이 안전하다.
  • 민감한 정보 노출 주의: .mcp.json에 DB 비밀번호가 평문으로 들어가므로, 이 파일은 절대 Git에 올리면 안 된다. .gitignore에 추가해두자.
  • 프로젝트 범위 제한: project 스코프로 설정하면 해당 프로젝트에서만 MCP가 활성화된다. 전체 적용이 필요한 경우만 global 스코프를 사용하자.
This post is licensed under CC BY 4.0 by the author.