IDE에서 데이터베이스와 대화하는 경험
개발자에게 IDE는 작업 공간이자 창작 도구입니다. 이 공간이 점점 더 ‘스마트’해지고 있다는 것을 실감하게 만든 기술이 있습니다. 바로 MCP(Model Context Protocol)입니다. Pragmatic Engineer 뉴스레터에서 소개한 이 기술을 접한 후, ‘도구 간 연결’이라는 오래된 문제를 AI 시대에 맞게 어떻게 풀 수 있을지에 대해 깊은 인상을 받았습니다.
원문 링크: The USB-C Port for AI Developer Tools
기존에는 하나의 질문에 대해 여러 도구를 번갈아 사용해야 했습니다. 코드 편집은 VS Code에서, 데이터 조회는 pgAdmin에서, 로그 확인은 서버 터미널에서 처리했습니다. 이때마다 작업 흐름이 끊기고 집중력이 분산됐습니다.
MCP를 통해 상황이 달라졌습니다. PostgreSQL용 MCP 서버를 추가하면, IDE 내부의 LLM이 자연어 질의를 SQL로 변환하고, 잘못된 테이블명을 자동으로 수정해 재시도하며, 결국 정확한 데이터를 IDE 내부에서 바로 확인할 수 있습니다. 더 이상 제가 직접 SQL을 입력하지 않아도 됩니다.
한 줄 질문으로 얻은 답변들 중 일부는 다음과 같습니다.
최근 두 달간 가입자 수의 이상치 탐지
의심스러운 이메일 패턴 확인
남아 있는 프로모션 코드 개수
특정 도메인에서의 사용자 가입 비율
질문을 자연어로 던지고, IDE 안에서 바로 대답을 들을 수 있는 경험은 단순한 편의성 이상의 변화입니다.
“도구를 사용하는 방식” 자체가 바뀌는 순간입니다.
MCP는 Anthropic의 두 엔지니어, David Soria Parra와 Justin Spahr-Summers가 내부용 도구를 개발하며 느꼈던 불편에서 시작됐습니다. Claude Desktop과 IDE를 번갈아 사용하는 과정에서의 단절, 다양한 도구를 모델에 연결하는 복잡성을 해결하고자 LSP(Language Server Protocol)에서 영감을 받아 만들었습니다.
그 핵심 아이디어는 간단합니다. IDE는 표준화된 인터페이스로 다양한 MCP 서버(도구들)에 접근하고, LLM은 이를 통해 필요한 작업을 실행합니다.
2024년 11월 공개 이후 MCP는 빠르게 확산됐습니다. Cursor, Zed, Windsurf, VS Code 등 주요 IDE가 잇달아 MCP를 지원했고, Sentry나 GitHub, Cloudflare 같은 기업들도 자체 MCP 서버를 구축했습니다.
마치 과거 LSP가 다양한 언어 지원의 허들을 낮춘 것처럼, MCP는 도구 확장의 장벽을 낮추고 있습니다.
하지만 모든 신기술이 그렇듯, MCP에도 치명적인 약점이 있습니다. 바로 보안입니다.
Pragmatic Engineer는 MCP의 보안 문제를 다음과 같이 경고했습니다.
“보안 방어는 현재 MCP 구현에서 불안할 정도로 허술해 보인다. 공격자는 SSH 키나 민감한 자격 증명을 훔칠 수 있는 기회를 노릴 것이며, 로컬 MCP 서버는 쉽게 무단 접근이 가능하다. 이 영역은 신속한 개선이 필요하다.”
출처: Pragmatic Engineer, MCP Protocol: a new AI dev tools building block
이는 로컬 서버가 사용자 권한으로 실행되며, 모델과의 통신 사이에 인증이나 접근 제어가 불충분할 경우 발생할 수 있는 구조적 문제입니다. 실제로 AI 모델이 임의 명령어를 실행하거나, 파일 시스템을 조회하는 일이 가능해질 경우 그 피해는 심각할 수 있습니다.
MCP를 사용할 때는 다음을 신중히 고려해야 합니다.
인증 방식: 서버 접근 시 인증 로직이 있는가
명령 제한: 모델이 실행 가능한 명령을 제한하는가
데이터 접근 범위: 어떤 파일/시스템 리소스까지 접근이 가능한가
빠르게 확산되고 있는 만큼, 이 문제에 대한 업계의 관심과 보완이 시급합니다.
MCP를 처음 써봤을 때 가장 놀라웠던 점은 속도였습니다. 기존에도 AI 코드 도우미를 자주 사용했지만, MCP를 통해 AI와 도구들이 연결되자 시간 단축의 체감이 완전히 달라졌습니다.
데이터베이스에 접근할 필요가 있을 때마다 pgAdmin을 열지 않아도 되고, 로그를 확인하러 콘솔을 띄우지 않아도 됩니다. IDE 안에서, 내가 평소 쓰던 코드 편집기 안에서 모든 것을 처리할 수 있다는 것은 큰 해방이었습니다.
하지만 모든 것이 완벽하진 않습니다. 아직은 부자연스러운 부분도 많고, LLM이 잘못된 추론을 하거나 불필요한 요청을 보내는 경우도 있습니다.
‘이건 가능할까?’ 싶은 기능은 여전히 수작업으로 처리해야 할 때도 있고, 어떻게 활용하면 가장 효과적인 지도 시행착오를 통해 찾아가는 중입니다.
MCP는 확실히 도구의 경계를 허물지만, 그 도구를 언제, 어떻게 써야 하는지는 여전히 사람의 몫입니다.
자동화가 가져다준 편리함 속에서, 가끔은 ‘내가 생각 없이 일하고 있는 건 아닐까’ 하는 순간도 찾아옵니다.
무언가 자동으로 돌아가고, LLM이 대답을 척척 해주고, 리팩터링도 코드 분석도 버튼 하나로 되는 시대입니다. 하지만 그럴수록 오히려 더 ‘생각하는 일’을 잊지 않으려고 애씁니다.
또한, AI 도구가 워낙 강력해진 만큼 보안도 계속 신경 쓰게 됩니다.
작은 실수 하나로 로컬에 저장된 민감한 키나 사용자 정보가 노출될 수도 있다는 생각을 하면, 편리함 뒤에 반드시 보안 의식이 따라야 한다는 것을 매번 상기하게 됩니다.
기술이 나를 더 빠르게 만들어줄 수는 있어도, 나를 대신 생각해 줄 수는 없습니다.
도구는 확장되었고, 그 위에서 일하는 나는 그만큼 더 명확하게 사고해야 합니다. MCP는 그 도구 중 하나일 뿐입니다.
결국 내가 무엇을, 어떻게 만들고 싶은지를 잃지 않는 것,
그것이 이 시대의 개발자에게 필요한 태도라고 생각합니다.