요즘 MCP에 대한 주목이 높아졌다는걸 체감하고 있습니다. 개발자와 스몰토크 나누면 꼭 나오는 주제이기도 하고요.
이미 현업에서 업무 생산성을 높이기 위해 적용한 사례도 들려오고 있습니다.
하지만 저는 아직 MCP를 어떻게 사용할 수 있을지 감이 안잡히지 않더라고요. 따라서 공식 문서와 튜토리얼을 보면서 천천히 적용해보려 합니다.
Cursor AI를 IDE로 사용중인데 Cursor에서 MCP를 지원한다고 하네요. Claude Desktop을 사용한다면 간편하게 구축할 수 있어 보이는데, 저는 Cursor에서 적용해 보고 싶습니다.
일단 Cursor에서 MCP를 사용하기 위해서는 0.45.x이상의 버전이 필요하니 업데이트를 꼭 해주세요. https://www.cursor.com/changelog
저는 0.47.x 버전을 사용중입니다.
일단 이번 시간은, 가볍게 Cursor 공식문서에 작성된 MCP 페이지를 읽어보도록 하겠습니다.
모델 컨텍스트 프로토콜(MCP)
MCP란 무엇인가?
모델 컨텍스트 프로토콜(MCP)은 애플리케이션이 LLM에 컨텍스트와 도구를 제공하는 방법을 표준화하는 오픈 프로토콜입니다. MCP는 Cursor의 플러그인 시스템으로 생각할 수 있으며, 표준화된 인터페이스를 통해 다양한 데이터 소스와 도구에 Agent를 연결하여 기능을 확장할 수 있게 해줍니다.
용도
MCP를 사용하면 Cursor를 외부 시스템 및 데이터 소스에 연결할 수 있습니다. 이는 코드 외부에서 프로젝트 구조를 Cursor에 설명할 필요 없이 기존 도구와 인프라에 Cursor를 통합할 수 있음을 의미합니다.
MCP 서버는 stdout
에 출력하거나 HTTP 엔드포인트를 제공할 수 있는 어떤 언어로도 작성할 수 있습니다. 이러한 유연성 덕분에 선호하는 프로그래밍 언어와 기술 스택을 사용하여 MCP 서버를 빠르게 구현할 수 있습니다.
예시
- 데이터베이스: Cursor가 스키마를 수동으로 입력하거나 데이터를 직접 조작하는 대신 데이터베이스를 직접 쿼리할 수 있습니다.
- Notion: Cursor가 기능을 구현하도록 안내하기 위해 Notion에서 데이터를 읽을 수 있습니다.
- GitHub: Cursor가 PR 생성, 브랜치 생성, 코드 찾기 등을 할 수 있습니다.
- 메모리: Cursor가 작업하는 동안 정보를 기억하고 회상할 수 있습니다.
- Stripe: Cursor가 고객 생성, 구독 관리 등을 할 수 있습니다.
아키텍처
MCP 서버는 표준화된 프로토콜을 통해 특정 기능을 노출하는 경량 프로그램입니다. Cursor와 외부 도구 또는 데이터 소스 사이의 중개자 역할을 합니다.
Cursor는 MCP 서버에 대해 두 가지 전송 유형을 지원합니다:
💻 stdio 전송
- 로컬 머신에서 실행
- Cursor에 의해 자동으로 관리됨
stdout
을 통해 직접 통신- 로컬에서만 접근 가능
- 입력: Cursor가 자동으로 실행하는 유효한 셸 명령어
🌐 SSE 전송
- 로컬 또는 원격으로 실행 가능
- 사용자가 관리하고 실행
- 네트워크를 통해 통신
- 여러 머신 간에 공유 가능
- 입력: MCP 서버의
/sse
엔드포인트 URL
stdio 서버의 경우, 명령어는 Cursor가 실행할 수 있는 유효한 셸 명령어여야 합니다.
SSE 서버의 경우, URL은 SSE 엔드포인트의 URL이어야 합니다(예: http://example.com:8000/sse
).
각 전송 유형은 다른 사용 사례를 가지며, stdio는 로컬 개발에 더 간단하고 SSE는 분산 팀에 더 많은 유연성을 제공합니다.
MCP 서버 구성
MCP 구성 파일은 다음 구조의 JSON 형식을 사용합니다:
// stdio 형식을 사용하는 MCP 서버 예시
// Cursor가 자동으로 이 프로세스를 실행
// Node.js 서버를 `npx`로 실행
{
"mcpServers": {
"server-name": {
"command": "npx",
"args": ["-y", "mcp-server"],
"env": {
"API_KEY": "value"
}
}
}
}
env
필드를 사용하면 MCP 서버 프로세스에서 사용할 수 있는 환경 변수를 지정할 수 있습니다. 이는 API 키 및 기타 민감한 구성을 관리하는 데 특히 유용합니다.
구성 위치
사용 사례에 따라 이 구성을 두 위치에 배치할 수 있습니다:
- 프로젝트 구성: 프로젝트별 도구의 경우, 프로젝트 디렉토리에
.cursor/mcp.json
파일을 생성합니다. 이렇게 하면 특정 프로젝트 내에서만 사용 가능한 MCP 서버를 정의할 수 있습니다. - 전역 구성: 모든 프로젝트에서 사용하려는 도구의 경우, 홈 디렉토리에
~/.cursor/mcp.json
파일을 생성합니다. 이렇게 하면 모든 Cursor 작업 공간에서 MCP 서버를 사용할 수 있습니다.
Agent에서 MCP 도구 사용하기
Composer Agent는 MCP 설정 페이지의 Available Tools
아래에 나열된 MCP 도구가 관련성이 있다고 판단되면 자동으로 사용합니다. 의도적으로 도구 사용을 유도하려면 이름이나 설명으로 도구를 참조하여 Agent에게 도구를 사용하도록 지시하면 됩니다.
도구 승인
기본적으로 Agent가 MCP 도구를 사용하려고 할 때, 승인을 요청하는 메시지가 표시됩니다. 도구 이름 옆의 화살표를 사용하여 메시지를 확장하고 Agent가 도구를 호출하는 인수를 확인할 수 있습니다.
Yolo 모드
Yolo 모드를 활성화하면 Agent가 터미널 명령어가 실행되는 방식과 유사하게 승인 없이 MCP 도구를 자동으로 실행할 수 있습니다.
도구 응답
도구가 사용되면 Cursor는 채팅에 응답을 표시합니다. 이 이미지는 샘플 도구의 응답과 도구 호출 인수 및 도구 호출 응답의 확장된 보기를 보여줍니다.
제한 사항
MCP는 매우 새로운 프로토콜이며 여전히 활발히 개발 중입니다. 알아두어야 할 몇 가지 알려진 주의사항이 있습니다:
- 도구 수량: 일부 MCP 서버 또는 많은 MCP 서버를 활성화한 사용자는 Cursor가 사용할 수 있는 많은 도구를 가질 수 있습니다. 현재 Cursor는 처음 40개의 도구만 Agent에 전송합니다.
- 원격 개발: Cursor는 로컬 머신에서
stdio
를 통해 직접 또는sse
를 사용하여 네트워크를 통해 MCP 서버와 직접 통신합니다. 따라서 SSH 또는 기타 개발 환경을 통해 Cursor에 액세스할 때 MCP 서버가 제대로 작동하지 않을 수 있습니다. 향후 릴리스에서 이를 개선할 예정입니다. - MCP 리소스: MCP 서버는 도구와 리소스라는 두 가지 주요 기능을 제공합니다. 도구는 현재 Cursor에서 사용 가능하며 Cursor가 MCP 서버가 제공하는 도구를 실행하고 출력을 추가 단계에서 사용할 수 있게 합니다. 그러나 리소스는 아직 Cursor에서 지원되지 않습니다. 향후 릴리스에서 리소스 지원을 추가할 예정입니다.
'dev💻 > 인프라 및 기타' 카테고리의 다른 글
[번역] Model Context Protocol (MCP) (0) | 2025.03.16 |
---|---|
[NPM] 협업에 꼭 필요한 Conflicting peer dependency 해결하기 (--legacy-peer-deps, --force, node 버전 맞추기) (0) | 2023.12.05 |
[AWS] 간단한 사이트라면 S3로 정적 배포하기 (static web hosting, S3+CloudFront+Route53) (0) | 2023.10.31 |
[VsCode] 원격으로 페어 프로그래밍을 해보자 (Live share) (0) | 2023.09.10 |