메인 콘텐츠로 건너뛰기
Cursor는 재현 가능한 환경, 노트북 지원, 그리고 AI 기반 코드 어시스트를 통해 데이터 사이언스 개발을 위한 통합 툴을 제공해. 이 가이드는 Python, R, 그리고 SQL 워크플로에 필요한 필수 설정 패턴을 다뤄.

노트북 개발

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

데이터베이스 통합

데이터베이스는 MCP 서버와 확장 프로그램, 두 가지 주요 방식으로 Cursor와 통합할 수 있어.
  • MCP Servers 는 에이전트가 너의 데이터베이스에 연결하게 해줘
  • Extensions 는 IDE 전반을 너의 데이터베이스와 통합해줘

MCP를 통해

MCP 서버를 쓰면 에이전트가 데이터베이스에 직접 쿼리를 날릴 수 있어. 이를 통해 에이전트는 데이터베이스를 조회할지 결정하고, 적절한 쿼리를 작성하고, 명령을 실행하고, 결과를 분석하는 전 과정을 진행 중인 작업의 일부로 수행할 수 있어. 예를 들어, 다음 MCP config를 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='지역별 광고비와 매출'
fig.show()

자주 묻는 질문

기존 Jupyter 노트북을 사용할 수 있어? 응, Cursor는 .ipynb 파일을 열어서 셀 단위 실행과 AI 코드 보완을 완전히 지원해. 메모리에 안 들어가는 대규모 데이터셋은 어떻게 처리해? Dask 같은 분산 컴퓨팅 라이브러리를 쓰거나, Remote-SSH로 더 큰 머신의 Spark 클러스터에 연결해. Cursor가 R이랑 SQL 파일도 지원해? 응, Cursor는 R 스크립트(.R)랑 SQL 파일(.sql)에 대해 AI 지원이랑 구문 하이라이팅을 제공해. 개발 환경을 공유하는 권장 방법이 뭐야? .devcontainer 폴더를 버전 관리에 커밋해. 팀원이 프로젝트를 열면 환경을 자동으로 다시 빌드할 수 있어. 데이터 처리 파이프라인은 어떻게 디버깅해? Cursor의 통합 디버거로 Python 스크립트에 브레이크포인트를 걸어 디버깅하거나, 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를 검색해 수동으로 컨테이너에서 다시 열어도 돼. Development container는 다음과 같은 이점을 제공해:
  • 의존성 격리로 프로젝트 간 충돌을 방지
  • 재현 가능한 빌드로 개발 및 프로덕션 환경 전반에서 일관된 동작 보장
  • 온보딩 단순화로 신규 팀원이 수동 설정 없이 바로 시작 가능

SSH를 통한 원격 개발

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