Cursor는 재현 가능한 환경, 노트북 지원, 그리고 AI 기반 코드 지원을 통해 데이터 사이언스 개발을 위한 통합 도구를 제공해. 이 가이드는 Python, R, SQL 워크플로우를 위한 필수 설정 패턴을 다뤄.

노트북 개발

전체 노트북 지원을 위해 ms-toolsai에서 배포한 Jupyter 확장(아이디: ms-toolsai.jupyter)을 다운로드해.
Cursor는 통합 셀 실행이 가능한 .ipynb.py 파일을 모두 지원해. Tab, Inline Edit, 그리고 Agents는 다른 코드 파일에서처럼 노트북에서도 동일하게 작동해. 핵심 기능:
  • 인라인 셀 실행으로 에디터 인터페이스에서 바로 코드를 실행할 수 있어
  • Tab, Inline Edit, 그리고 Agent는 pandas, NumPy, scikit-learn, 그리고 SQL 매직 커맨드를 포함한 데이터 사이언스 라이브러리를 이해해

데이터베이스 통합

데이터베이스는 두 가지 주요 방식(MCP 서버와 확장 기능)을 통해 Cursor와 통합할 수 있어.
  • MCP 서버는 Agents가 네 데이터베이스에 연결하도록 해줘
  • **확장 기능(Extensions)**은 IDE 전반을 네 데이터베이스와 통합해줘

MCP를 통한 통합

MCP 서버를 사용하면 agent가 데이터베이스에 직접 쿼리를 보낼 수 있어. 이를 통해 agent는 데이터베이스를 조회할지 결정하고, 적절한 쿼리를 작성하고, 명령을 실행하고, 출력 결과를 분석하는 일을 진행 중인 작업의 일부로 처리할 수 있어. 예를 들어, 다음 MCP 설정을 Cursor에 추가해서 Postgres 데이터베이스를 네 Cursor 인스턴스에 연결할 수 있어:
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://localhost/mydb"
      ]
    }
  }
}
MCP에 대해 더 알아보려면 MCP 문서를 참고해줘.

확장 기능을 통한 통합

에디터에서 바로 쿼리를 실행하려면 데이터베이스별 확장 기능(PostgreSQL, BigQuery, SQLite, Snowflake)을 설치해. 이렇게 하면 도구 간 컨텍스트 전환이 줄어들고, 쿼리 최적화를 위한 AI 도움도 받을 수 있어.
-- Cursor는 인덱스, 윈도 함수, 쿼리 최적화에 대한 제안을 제공해
SELECT
    user_id,
    event_type,
    COUNT(*) as event_count,
    RANK() OVER (PARTITION BY user_id ORDER BY COUNT(*) DESC) as frequency_rank
FROM events
WHERE created_at >= NOW() - INTERVAL '7 days'
GROUP BY user_id, event_type;
느린 쿼리를 분석하고 성능 개선을 제안하거나, 쿼리 결과에 대한 시각화 코드를 생성하는 데 Agents를 활용해봐. Cursor는 SQL 컨텍스트를 이해하고 네 데이터 구조에 맞춰 적절한 차트 유형을 추천할 수 있어.
Snowflake Extension

데이터 시각화

Cursor의 AI 지원은 Matplotlib, Plotly, Seaborn 같은 데이터 시각화 라이브러리까지 확장돼. 에이전트는 데이터 시각화 코드를 생성해, 데이터를 빠르고 쉽게 탐색하면서 재현 가능하고 공유하기 쉬운 아티팩트를 만들 수 있게 도와줘.
import plotly.express as px
import pandas as pd

# AI가 데이터 컬럼을 기반으로 적합한 플롯 유형을 제안해
df = pd.read_csv('sales_data.csv')
fig = px.scatter(df, x='advertising_spend', y='revenue',
                 color='region', size='customer_count',
                 title='Revenue vs Advertising Spend by Region')
fig.show()

자주 묻는 질문

기존 Jupyter 노트북을 사용할 수 있어? 가능해. Cursor는 .ipynb 파일을 열어서 셀 실행과 AI 보완 기능을 완전히 지원해. 메모리에 안 들어가는 대용량 데이터셋은 어떻게 처리해? Dask 같은 분산 컴퓨팅 라이브러리를 쓰거나 Remote-SSH로 더 큰 머신의 Spark 클러스터에 연결해. Cursor가 R이랑 SQL 파일도 지원해? 맞아. Cursor는 R 스크립트(.R)와 SQL 파일(.sql)에 대해 AI 지원과 문법 하이라이트를 제공해. 개발 환경은 어떻게 공유하는 게 좋아? .devcontainer 폴더를 버전 관리에 커밋해 둬. 팀원이 프로젝트를 열 때 환경을 자동으로 다시 구성할 수 있어. 데이터 처리 파이프라인은 어떻게 디버깅해? Python 스크립트에 브레이크포인트를 걸고 Cursor의 통합 디버거를 쓰거나, Agent를 활용해서 복잡한 데이터 변환을 단계별로 분석하고 설명받아.

환경 재현성

개발 컨테이너

개발 컨테이너는 팀원과 배포 환경 전반에서 런타임과 의존성을 일관되게 유지하도록 도와줘. 환경별 버그를 줄이고 신규 팀원의 온보딩 시간을 단축할 수 있어. 개발 컨테이너를 사용하려면 먼저 리포지토리 루트에 .devcontainer 폴더를 만들어. 다음으로 devcontainer.json, Dockerfile, requirements.txt 파일을 생성해.
// .devcontainer/devcontainer.json
{
  "name": "ds-env",
  "build": { "dockerfile": "Dockerfile" },
  "features": {
    "ghcr.io/devcontainers/features/python:1": { "version": "3.11" }
  },
  "postCreateCommand": "pip install -r requirements.txt"
}
# .devcontainer/Dockerfile
FROM mcr.microsoft.com/devcontainers/python:3.11
COPY requirements.txt .
RUN pip install --upgrade pip && \
    pip install -r requirements.txt
# requirements.txt
pandas==2.3.0
numpy
# 프로젝트에 필요한 다른 의존성을 추가해
Cursor가 devcontainer를 자동으로 감지해서 컨테이너에서 프로젝트를 다시 열도록 안내할 거야. 또는 Command Palette(Ctrl+Shift+P)에서 Reopen in Container를 검색해 수동으로 컨테이너에서 다시 열 수도 있어. 개발 컨테이너의 장점:
  • 의존성 격리로 프로젝트 간 충돌 방지
  • 재현 가능한 빌드로 개발·프로덕션 환경 전반에서 일관된 동작 보장
  • 간소화된 온보딩으로 수동 설정 없이 신규 팀원이 바로 시작 가능

SSH를 통한 원격 개발

분석에 추가 컴퓨트 리소스, GPU, 혹은 프라이빗 데이터셋 접근이 필요할 때는 로컬 개발 환경을 유지한 채 원격 머신에 연결해.
  1. 필요한 리소스를 갖춘 클라우드 인스턴스를 프로비저닝하거나 온프레미스 서버에 접근해
  2. .devcontainer 구성과 함께 리포지토리를 원격 머신에 클론해
  3. Cursor에서 연결: Ctrl+Shift+P → “Remote-SSH: Connect to Host”
이 방식은 필요한 만큼 컴퓨트 리소스를 확장하면서도 일관된 툴체인을 유지해. 동일한 개발 컨테이너 구성이 로컬과 원격 환경 모두에서 그대로 동작해.