
데이터베이스 관리와 스키마 설계 방식이 완전히 변화하고 있습니다. MariaDB에서 공식적으로 제공하는 MCP(Model Context Protocol) 서버를 활용하면, SQL 쿼리를 직접 작성하지 않고도 AI 모델을 통해 데이터베이스를 조작하고 정보를 조회할 수 있습니다.
MCP란 무엇인가요?
MCP는 대규모 언어 모델(LLM)이 데이터베이스나 외부 도구와 안전하고 표준화된 방식으로 소통할 수 있도록 돕는 프로토콜입니다. 사용자와 LLM 사이에 MariaDB MCP 서버를 배치하면, LLM은 사용자의 자연어 요청을 이해하고 MCP 서버에 실행을 요청합니다. MCP 서버는 이를 실제 SQL로 변환하여 MariaDB에 전달하고 그 결과를 다시 AI가 읽기 쉬운 형태로 반환합니다.
주요 기능과 활용 사례
- 자연어 데이터 조회: "우리 데이터베이스에서 관객수가 가장 많은 영화는 뭐야?" 또는 "특정 지역의 극장 목록을 보여줘"와 같은 질문을 하면 AI가 직접 쿼리를 실행해 답변합니다. [08:38]
- 스키마 프로토타이핑: "사용자 정보를 저장할 테이블을 만들어줘"라고 요청하면 ID, 이메일, 비밀번호 등 필요한 컬럼을 포함한 최적의 스키마를 생성하고 테이블을 즉시 구축합니다. [12:05]
- 데이터 수정 및 업데이트: 복잡한 UPDATE 문이나 INSERT 문을 기억할 필요 없이, 채팅창에서 데이터 변경을 지시하면 즉각 반영됩니다. [13:55]
- 개발 도구와의 통합: VS Code와 같은 에디터에서 에이전트 모드를 통해 실시간으로 DB 상태를 확인하며 코딩할 수 있습니다. [04:39]

설정 및 시작하기
MariaDB MCP 서버는 파이썬 기반으로 구현되어 있으며 Docker를 통해 간편하게 실행할 수 있습니다. Docker Compose를 사용하여 MariaDB 서버와 MCP 서버를 동시에 띄운 후, VS Code의 MCP 확장에서 해당 서버의 URL을 등록하기만 하면 대화형 DB 관리 환경이 완성됩니다. [02:50], [05:03]
보안 고려사항
개발 환경에서는 자유롭게 데이터를 수정할 수 있지만, 실제 애플리케이션에 적용할 때는 최소 권한 원칙에 따라 특정 권한만 가진 DB 사용자를 할당해야 합니다. 이를 통해 AI가 실수로 중요 데이터를 삭제하거나 승인되지 않은 접근을 하는 것을 방지할 수 있습니다. [11:34]
이 기술을 활용하면 데이터베이스 설계부터 데이터 분석까지의 과정을 획기적으로 단축할 수 있습니다. 지금 바로 MariaDB MCP 서버를 경험해 보세요.
MariaDB MCP 서버를 도커 없이 로컬 환경에 직접 설치하여 설정하는 방법을 안내해 드립니다. 이 과정은 주로 Python 환경에서 진행되며, MCP 서버 소스 코드를 가져와 종속성을 설치하고 실행하는 단계로 이루어집니다.
MariaDB MCP 서버 로컬 직접 설치 가이드
도커를 사용하지 않을 경우, 시스템에 Python과 MariaDB 클라이언트 라이브러리가 설치되어 있어야 합니다.
1. 사전 준비 사항
- Python 3.10 이상: MCP 서버 구동을 위해 필요합니다.
- MariaDB Server: 로컬 또는 원격에 접속 가능한 MariaDB가 실행 중이어야 합니다.
- git: 소스 코드 복제를 위해 필요합니다.
2. 소스 코드 복제 및 가상환경 설정
터미널(또는 CMD)을 열고 아래 명령어를 순서대로 입력합니다.
# 레포지토리 복제
git clone https://github.com/mariadb-corporation/mariadb-mcp-server.git
cd mariadb-mcp-server
# 가상환경 생성 및 활성화
python -m venv venv
# Windows: venv\Scripts\activate
# macOS/Linux: source venv/bin/activate
3. 종속성 패키지 설치
uv 패키지 매니저를 사용하거나 pip로 직접 설치할 수 있습니다.
# 필요한 패키지 설치
pip install .
4. 환경 변수 설정
데이터베이스 접속 정보를 환경 변수로 등록해야 합니다. (사용 중인 쉘에 맞게 입력하세요)
- Linux/macOS:
export MARIADB_URL="mariadb://user:password@localhost:3306/database_name"
- Windows (PowerShell):
$env:MARIADB_URL="mariadb://user:password@localhost:3306/database_name"
5. MCP 서버 실행
모든 설정이 완료되면 아래 명령어로 서버를 가동합니다.
python -m mariadb_mcp_server
클라이언트(VS Code 등)와 연결하기
설치된 서버를 실제 AI 도구(예: VS Code의 Claude Dev/Roo Code 또는 Cline 확장 프로그램)에서 사용하려면 MCP Settings에 다음과 같이 등록합니다.
{
"mcpServers": {
"mariadb": {
"command": "python",
"args": ["-m", "mariadb_mcp_server"],
"env": {
"MARIADB_URL": "mariadb://user:password@localhost:3306/database_name"
}
}
}
}
주의 사항
- 경로 확인: command 실행 시 python이 가상환경의 파이썬인지, 시스템 파이썬인지 명확히 확인해야 합니다. 가상환경 경로를 절대 경로로 적어주는 것이 가장 안전합니다.
- 드라이버 설치: MariaDB 접속을 위해 내부적으로 mariadb 파이썬 라이브러리를 사용하므로, OS별로 필요한 C Connector 빌드 도구가 요구될 수 있습니다.
MariaDB MCP 서버 자체가 LLM(인공지능 뇌) 역할을 하는 것은 아닙니다. 원리를 핵심만 요약하면 AI와 DB 사이를 연결하는 통역사(Adapter) 역할을 하는 것입니다.
구체적인 작동 원리를 단계별로 설명해 드릴게요.
1. MariaDB MCP 서버의 핵심 작동 원리
MCP 서버는 자체적으로 추론하지 않습니다. 대신 다음과 같은 구조로 움직입니다.
- 사용자 질문: 사용자가 Claude(Cursor), ChatGPT 같은 AI 에이전트에게 자연어로 질문합니다. (예: "서울의 극장 목록 보여줘")
- 도구 인식: AI 모델(LLM)은 자신이 직접 DB에 접속할 수 없음을 알고, 설정된 MCP 서버가 제공하는 list_tables, run_query 같은 도구(Tools) 목록을 확인합니다.
- 쿼리 생성: AI 모델은 질문에 맞는 SQL을 스스로 생성한 뒤, MCP 서버에게 "이 SQL을 대신 실행해줘"라고 요청합니다.
- 브릿지 역할 (Python): 이때 로컬에 설치한 파이썬 기반 MCP 서버가 그 요청을 받아 실제 MariaDB에 접속하여 SQL을 던집니다.
- 결과 전달: DB에서 받아온 로우 데이터를 MCP 서버가 AI에게 전달하면, AI가 그 데이터를 읽고 사용자에게 자연어로 대답해 줍니다.
2. 온라인인가, 오프라인인가?
이 부분은 어떤 LLM(뇌)을 사용하느냐에 따라 달라집니다.
- 온라인 모드 (일반적): 클라우드 기반 AI(Claude 3.5 Sonnet, GPT-4o 등)를 사용한다면 질문 내용과 쿼리 결과가 외부 AI 서버로 전달됩니다.
- 완전 오프라인 모드: 로컬 PC에 Ollama 같은 도구로 Llama 3나 Mistral 같은 모델을 직접 띄우고, MCP 서버가 로컬 LLM과 통신하게 설정하면 인터넷 연결 없이 100% 폐쇄망에서 작동 가능합니다.
3. 내부 파이썬 코드가 하는 일
설치하신 파이썬 MCP 서버 소스코드를 열어보면 대략 다음과 같은 기능들이 들어있습니다.
- Context 제공: DB의 테이블 구조(스키마) 정보를 읽어서 AI에게 "나 이런 테이블들 가지고 있어"라고 알려주는 기능.
- 보안 필터링: AI가 실행하려는 SQL이 위험한지 검사하거나, 허용된 도구만 실행하도록 제한하는 기능.
- 프로토콜 준수: AI 모델이 이해할 수 있는 표준 규격(JSON-RPC 기반의 MCP 프로토콜)으로 데이터를 포맷팅하는 기능.
💡 요약하자면
MCP 서버는 AI(뇌)가 DB(손발)를 조작할 수 있게 해주는 인터페이스입니다. 파이썬은 그 사이에서 명령을 전달하고 결과를 배달하는 심부름꾼인 셈이죠.
보안 문제가 있겠는데 내 데이터가 어디론가 노출된다는 애기잖아
보안은 MCP와 같은 AI 도구를 도입할 때 가장 먼저 따져봐야 할 핵심 요소입니다. 데이터 노출은 크게 두 가지 경로에서 발생할 수 있는데, 이를 이해하고 방어하는 방법을 정리해 드립니다.
1. 데이터 노출의 두 가지 경로
첫째: 클라우드 LLM으로의 노출 만약 사용자가 Claude(Anthropic)나 ChatGPT(OpenAI)의 클라우드 모델을 뇌(Brain)로 사용한다면, MCP 서버가 DB에서 조회해온 결과값이 질문에 대한 답변을 생성하기 위해 AI 업체의 서버로 전송됩니다. 즉, 영진위의 실제 매출액이나 관객수 통계가 외부 서버에 기록으로 남을 수 있습니다.
둘째: AI의 잘못된 명령 실행 AI가 실수로(또는 악의적인 프롬프트 주입으로) DROP TABLE이나 DELETE FROM 같은 명령을 생성하고 MCP 서버가 이를 그대로 실행할 경우, 로컬 데이터가 손실되거나 변조될 수 있습니다.
2. 보안 문제를 해결하는 3단계 방어책
이런 보안 우려를 해결하기 위해 실제 현업에서는 다음과 같은 장치를 마련합니다.
방어 1: 로컬 LLM 사용 (완전 오프라인)
데이터가 외부로 나가는 것을 원천 차단하려면 클라우드 AI 대신 로컬 AI를 사용하면 됩니다.
- 방법: Ollama나 LocalAI를 사용하여 내 컴퓨터 안에 모델을 띄웁니다.
- 결과: 질문과 DB 데이터가 내 PC 안에서만 돌고 인터넷 밖으로 1바이트도 나가지 않습니다.
방어 2: 데이터베이스 권한 제한 (최소 권한 원칙)
MCP 서버가 사용하는 DB 계정을 root가 아닌, 권한이 극도로 제한된 별도 계정으로 설정합니다.
-- 조회만 가능하고 삭제/수정은 불가능한 전용 계정 생성 예시
CREATE USER 'mcp_user'@'localhost' IDENTIFIED BY 'safe_password';
GRANT SELECT ON kofic_db.* TO 'mcp_user'@'localhost'; -- 오직 읽기 권한만 부여
FLUSH PRIVILEGES;
이렇게 하면 AI가 실수로 삭제 명령을 내려도 DB 레벨에서 거부됩니다.
방어 3: 환경 변수 및 화이트리스트 활용
MCP 서버 설정에서 접근 가능한 테이블을 명시하거나, 민감한 개인정보 컬럼(예: 사용자 이메일, 비밀번호)은 AI가 보지 못하도록 뷰(View)를 만들어 제한적으로 공개하는 방식을 취합니다.
3. 요약: 안전하게 사용하는 법
보안이 최우선이라면 Ollama(로컬 뇌) + MariaDB MCP(통역사) + Read-Only 계정(잠금장치) 조합을 사용하세요. 이렇게 하면 보안 걱정 없이 AI의 편리함만 누릴 수 있습니다.















AI와 데이터베이스의 똑똑한 통역사, MariaDB MCP 서버란 무엇일까요?
1. 들어가며: 데이터베이스와 대화하고 싶으신가요?
데이터베이스는 우리 주변의 거의 모든 정보를 저장하는 거대한 창고와 같습니다. 하지만 이 창고에서 원하는 물건을 꺼내려면 'SQL'이라는 특별한 언어를 사용해야만 합니다. 마치 외국인과 대화하기 위해 그 나라 말을 배워야 하는 것처럼 말이죠.
그런데 만약 우리가 평소에 쓰는 평범한 말로 데이터베이스에게 일을 시킬 수 있다면 어떨까요? "관객 수가 가장 많은 영화가 뭐야?"라고 물으면 바로 답을 알려주는 세상, 상상만 해도 편리하지 않나요? 바로 이 꿈같은 일을 현실로 만들어 주는 것이 AI와 데이터베이스 사이의 똑똑한 통역사, 'MariaDB MCP 서버'입니다.
그렇다면 이 특별한 통역사가 정확히 어떤 역할을 하고, 어떻게 우리의 말을 데이터베이스에 전달하는지 자세히 알아보겠습니다.
2. MCP 서버: AI의 생각을 데이터베이스에 전달하는 '전문 통역사'
MariaDB MCP 서버는 스스로 생각하는 '뇌(AI)'가 아닙니다. 그 정체는 AI의 똑똑한 생각을 데이터베이스(손발)가 알아들을 수 있도록 전달하는 '전문 통역사(Adapter)' 또는 '안전한 심부름꾼'입니다. AI가 "이런 데이터가 필요해!"라고 생각하며 SQL 명령을 만들어내면, MCP 서버가 그 명령을 안전하게 데이터베이스에 전달하고 결과를 다시 가져다주는 역할을 합니다.
MCP 서버가 하는 핵심적인 일은 크게 세 가지로 나눌 수 있습니다.
- 명령 수신 및 검증 AI가 사용자의 질문을 바탕으로 생성한 SQL 명령어를 전달받습니다. 이 단계에서 미리 설정된 규칙에 따라 위험한 명령이 아닌지 검사하는 보안 기능을 수행할 수도 있습니다.
- 데이터베이스에 명령 실행 AI를 대신하여 데이터베이스에 직접 접속하고, 전달받은 SQL 명령을 안전하게 실행합니다.
- 결과 반환 데이터베이스로부터 받은 결과(데이터)를 AI가 이해하기 쉬운 표준 형식으로 포장하여 다시 전달합니다. 그러면 AI는 이 데이터를 바탕으로 사용자에게 자연스러운 문장으로 답변해 줄 수 있습니다.
이 통역사가 실제로 어떻게 일하는지 그 과정을 단계별로 살펴보면 더욱 명확하게 이해할 수 있습니다.
3. 통역 과정 엿보기: MCP 서버는 어떻게 작동할까요?
사용자의 간단한 질문 하나가 데이터베이스로부터 답변을 받아오기까지, 뒤편에서는 다음과 같은 체계적인 통역 과정이 일어납니다.
- [사용자] 질문하기 사용자가 챗봇이나 개발 도구에 있는 AI에게 자연어로 질문합니다.
- [AI] 통역사 찾기 및 SQL 생성 AI는 스스로 데이터베이스에 접근할 수 없다는 것을 알고 있습니다. 그래서 미리 등록된 도구 목록을 살펴봅니다. 목록에서 데이터베이스와 대화할 수 있는 '통역사(MCP 서버)'를 발견하고, 그 통역사가 run_query(쿼리 실행)와 같은 **도구(Tools)**를 제공한다는 것을 인지합니다. 그 후 사용자의 질문 의도를 파악하여 그에 맞는 SQL 명령어를 스스로 만들어냅니다.
- [AI → MCP 서버] SQL 실행 요청 AI가 MCP 서버에게 방금 만든 SQL을 전달하며 요청합니다.
- [MCP 서버 ↔ DB] 명령 전달 및 결과 수신 '심부름꾼'인 MCP 서버가 직접 MariaDB 데이터베이스에 접속해 AI로부터 받은 SQL 명령을 실행하고, 그 결과(극장 목록 데이터)를 받아옵니다.
- [MCP 서버 → AI → 사용자] 최종 답변 생성 MCP 서버는 받아온 데이터를 AI에게 전달합니다. 데이터를 건네받은 AI는 이를 바탕으로 사용자가 이해하기 쉬운 자연스러운 문장으로 최종 답변을 만들어 보여줍니다.
이제 이 똑똑한 통역사에게 어떤 종류의 부탁을 할 수 있는지 구체적인 예시를 통해 알아보겠습니다.
4. 이 통역사에게 무엇을 부탁할 수 있을까요?
MCP 서버를 이용하면 복잡한 SQL을 몰라도 마치 대화하듯 다양한 데이터베이스 작업을 요청할 수 있습니다. 주요 요청 유형과 예시는 다음과 같습니다.
| 요청 유형 | 사용자 요청 예시 (자연어) |
| 단순 정보 조회 | "우리 데이터베이스에서 관객수가 가장 많은 영화는 뭐야?" |
| 데이터 구조 생성 | "사용자 정보를 저장할 테이블을 만들어줘. ID, 이메일, 비밀번호가 필요해." |
| 데이터 수정 | "ID가 3번인 사용자의 이메일 주소를 'new@example.com'으로 바꿔줘." |
이렇게 편리한 통역사와 대화할 때, 우리의 중요한 데이터가 외부로 유출될 위험은 없는지 보안 문제를 짚어보는 것은 매우 중요합니다.
5. 가장 중요한 질문: 우리의 대화는 안전한가요?
AI 도구를 사용할 때 보안은 가장 먼저 고려해야 할 문제입니다. 데이터가 노출될 수 있는 경로는 크게 두 가지입니다.
- 클라우드 LLM으로의 전송: ChatGPT나 Claude와 같은 클라우드 기반 AI를 사용하면, 데이터베이스에서 조회한 결과가 답변 생성을 위해 외부 AI 회사 서버로 전송될 수 있습니다.
- AI의 잘못된 명령 실행: AI가 실수로 DROP TABLE(테이블 삭제)과 같은 위험한 명령을 만들고, MCP 서버가 이를 그대로 실행하면 소중한 데이터가 손실될 수 있습니다.
다행히도, 이러한 보안 위협을 막기 위한 강력한 '3단계 방어책'이 있습니다.
- 방어 1: 우리끼리만 대화하기 (로컬 LLM 사용) 데이터가 외부 인터넷으로 나가는 것을 원천 차단하는 가장 확실한 방법입니다. Ollama와 같은 도구를 사용해 내 컴퓨터나 내부 서버에 AI 모델을 직접 설치하면, 모든 질문과 데이터가 100% 폐쇄망 안에서만 처리됩니다.
- 방어 2: 꼭 필요한 말만 할 수 있는 권한 주기 (최소 권한 원칙) MCP 서버가 데이터베이스에 접속할 때 사용하는 계정에 최소한의 권한만 부여하는 것입니다. 예를 들어 '읽기(SELECT)' 권한만 있는 계정을 만들어 사용하면, AI가 실수로 삭제나 수정 명령을 내려도 데이터베이스 차원에서 거부하여 데이터를 안전하게 보호할 수 있습니다.
- 방어 3: 대화 주제 제한하기 (접근 가능한 데이터 지정) MCP 서버 설정에서 AI가 접근할 수 있는 테이블을 특정하거나, 개인정보처럼 민감한 정보가 담긴 칼럼은 제외한 '뷰(View)'를 만들어 보여주는 방식입니다. 이를 통해 AI와의 대화 주제를 안전한 범위로 제한할 수 있습니다.
이러한 방어책들을 종합하면 다음과 같은 최적의 보안 조합을 만들 수 있습니다.
보안이 최우선이라면 Ollama(로컬 뇌) + MariaDB MCP(통역사) + Read-Only 계정(잠금장치) 조합을 사용하세요.
6. 결론: 모두를 위한 데이터베이스 통역사의 등장
MariaDB MCP 서버는 'AI와 데이터베이스 사이의 통역사'라는 핵심적인 역할을 수행함으로써 데이터 기술의 문턱을 획기적으로 낮춥니다. 더 이상 어려운 SQL 언어 때문에 데이터 활용을 망설일 필요가 없습니다. 이제 SQL 전문가가 아니더라도 누구나 자신의 아이디어를 자연어로 질문하고, 데이터의 깊은 잠재력을 쉽고 안전하게 활용할 수 있는 새로운 시대가 열렸습니다.
'IT 개발,관리,연동,자동화' 카테고리의 다른 글
| 관세청 수입신고서의 상세 항목을 바탕으로 MySQL 테이블 설계 (1) | 2025.12.19 |
|---|---|
| NestJS를 활용한 MQTT, Modbus 기반 실시간 데이터 수집 및 처리 시스템 구축 가이드 (1) | 2025.12.18 |
| 영화 통합전산망 데이터베이스 설계 가이드 (0) | 2025.12.17 |
| 🛠️ NestJS 컨트롤러에 HATEOAS 적용 (수정된 danme-calc.controller.ts) (0) | 2025.12.11 |
| 📝 YAML의 꽃, 앵커(&)와 별칭(*)로 설정 파일 중복 제거하기 (0) | 2025.12.10 |
