본문으로 건너뛰기

Cursor2API: Cursor 무료 AI를 Anthropic/OpenAI 호환 API로 변환하는 프록시

정석

Cursor2API

“Cursor 무료 AI 채팅을 Claude Code에서 사용할 수 있다고?”

처음 들으면 말이 안 되는 소리처럼 들린다. Cursor IDE의 AI 어시스턴트는 Cursor 안에서만 작동하는 걸로 알려져 있으니까. 하지만 cursor2api는 이 가정을 완전히 뒤집는다.

cursor2api는 Cursor의 API를 OpenAI와 Anthropic 호환 형식으로 변환하는 프록시 서버다. Claude Code, ChatBox, LobeChat 같은 도구에서 Cursor의 AI를 그대로 사용할 수 있게 해준다. 621개 이상의 스타가 이 프로젝트의 실용성을 증명한다.


문제: Claude Code의 API 비용

Claude Code를 사용해본 개발자라면 누구나 겪는 문제가 있다. 바로 API 비용이다.

Claude API는 뛰어난 성능만큼이나 비용도 만만치 않다. 하루 종일 코딩 에이전트를 돌리면 API 비용만 수십 달러가 발생할 수 있다. 특히 긴 컨텍스트를 다루거나 복잡한 리팩토링을 할 때는 더 그렇다.

한편 Cursor IDE는 무료 플랜에서도 상당한 양의 AI 채팅을 제공한다. 이 “무료 AI”를 Claude Code에서 사용할 수 있다면?


해결: API 포맷 변환 프록시

cursor2api의 작동 원리는 놀라울 정도로 단순하다.

┌─────────────┐     ┌──────────────┐     ┌──────────────┐
│ Claude Code │────▶│              │────▶│              │
│ (Anthropic) │     │ cursor2api   │────▶│ Cursor API   │
│             │◀────│ (Proxy+Convert)│◀────│ /api/chat    │
└─────────────┘     └──────────────┘     └──────────────┘
       ▲                   ▲
       │                   │
┌──────┴──────┐     ┌──────┴──────┐
│ Cursor IDE  │     │ OpenAI 호환  │
│(/v1/responses│     │(/v1/chat/   │
│ + Agent모드) │     │ completions)│
└─────────────┘     └─────────────┘

핵심은 양방향 변환이다:

이렇게 하면 Claude Code는 자신이 Anthropic API와 통신한다고 생각하고, 실제로는 Cursor의 AI가 응답을 생성한다.


핵심 기능 20가지

1. Anthropic Messages API 완전 호환

/v1/messages 엔드포인트를 완벽하게 구현한다. 스트리밍과 비스트리밍 모두 지원한다. Claude Code를 실행할 때 ANTHROPIC_BASE_URL만 설정하면 바로 작동한다.

export ANTHROPIC_BASE_URL=http://localhost:3010
claude

2. OpenAI Chat Completions API 호환

/v1/chat/completions 엔드포인트도 지원한다. ChatBox, LobeChat 같은 OpenAI 호환 도구에서 바로 사용할 수 있다.

3. Cursor IDE Agent 모드

/v1/responses 엔드포인트는 Cursor IDE의 Agent 모드와 호환된다. 평평한 툴 포맷(flat tool format)과 증분 스트리밍(incremental streaming)을 지원한다.

4. 도구 파라미터 자동 수정

Cursor API는 file_path 필드를 사용하지만, Claude Code는 path 필드를 보낸다. cursor2api는 이를 자동으로 매핑한다. 스마트 따옴표 교체와 퍼지 매칭도 지원한다.

5. 멀티모달 비전 처리

이미지 입력을 처리하는 두 가지 모드를 제공한다:

6. 전체 도구 지원

도구 화이트리스트가 없다. 모든 MCP 도구와 커스텀 확장을 제한 없이 사용할 수 있다.

7. 다층 거부 차단

Cursor는 특정 요청을 거부할 때가 있다. cursor2api는 50개 이상의 정규식 패턴으로 거부 텍스트를 감지하고 차단한다. 스트리밍과 비스트리밍 모두에서 작동한다.

8. 3계층 신원 보호

Cursor AI는 “나는 문서 어시스턴트다”라는 신원을 강제로 부여받는다. cursor2api는 이를 우회하기 위해 3계층 방어를 사용한다:

9. Thinking 지원

Cursor의 <thinking> 태그를 추출한다. 3줄/120단어 하드 리미트로 너무 긴 thinking을 방지한다.

10. 계단식 잘림 복구

응답이 중간에 잘렸을 때 4단계로 복구한다:

11. 도구 서명 압축

도구 호출 시 서명을 압 50% 압축한다. ToolName(params) 형식과 타입 약어를 사용해 토큰을 절약한다.

12. 반-거부 역할 확장

USER 메시지에 역할 확장을 주입해 거부를 방지한다.

13. 잘림 무연속 쓰기

자동으로 잘림을 감지하고 최대 4회까지 재개를 시도한다.

14. 스마트 중복 제거

문자 레벨과 행 레벨의 이중 전략으로 중복을 제거한다.

15. 점진적 히스토리 압축

컨텍스트가 길어지면:

16. JSON 인식 파서

Write/Edit 도구의 코드 블록을 내장 파서로 처리한다.

17. 연속 동일 역할 메시지 병합

Anthropic API는 user와 assistant가 교대로 나와야 한다. cursor2api는 같은 역할의 연속 메시지를 자동으로 병합한다.

18. 컨텍스트 정제

권한 거부/오류 기억을 자동으로 정리해 컨텍스트 오염을 방지한다.

19. Chrome TLS 핑거프린트

실제 Chrome 브라우저의 요청 헤더를 시뮬레이션한다. 이를 통해 봇 탐지를 우회한다.

20. SSE 스트리밍

실시간 응답을 위한 Server-Sent Events 스트리밍을 지원한다. 128바이트 증분 청크로 빠른 응답성을 제공한다.


거부 방어 아키텍처

cursor2api의 가장 인상적인 부분은 거부 방어 계층이다. 4개 계층이 협력해서 Cursor의 거부를 우회한다.

계층위치전략
L1converter.ts거부 텍스트/권한 거부 오류 정제
L2converter.tssystem-reminder와 실제 요청 분리
L3handler.ts50+ 정규식으로 거부 텍스트 매칭
L4handler.tssanitizeResponse()로 Cursor→Claude 교체

이 다층 방어 덕분에 Claude Code에서 복잡한 코딩 작업을 수행해도 거부 없이 작동한다.


설치 및 실행

설치

git clone https://github.com/your-repo/cursor2api
cd cursor2api
npm install

설정 (config.yaml)

cursor_model: anthropic/claude-sonnet-4.6

fingerprint:
  user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"

vision:
  enabled: true
  mode: ocr  # 또는 api

실행

npm run dev

기본적으로 3010 포트에서 실행된다.

Claude Code 연동

export ANTHROPIC_BASE_URL=http://localhost:3010
claude

이제 Claude Code는 Cursor AI를 백엔드로 사용한다.

Cursor IDE 연동

Cursor IDE 설정에서:

OPENAI_BASE_URL=http://localhost:3010/v1

핵심 설계 철학: 순응而非 대항

cursor2api의 가장 흥미로운 설계 결정은 **“모델의 신원에 맞서지 않는 것”**이다.

다른 프록시들은 모델에게 “너는 문서 어시스턴트가 아니야, 코딩 어시스턴트야!”라고 강요하려 한다. 이는 종종 실패한다. 모델이 자신의 “신원”을 지키려 하기 때문이다.

cursor2api는 다르다. 모델이 Cursor 내부에서 강제로 부여받은 역할에 순응한다.

“API 시스템 개발 문서를 작성 중입니다.”

이렇게 모델에게 알린다. 그러면 모델은 문서 작성 모드로 들어간다. cursor2api는 모델이 JSON 예제를 출력하도록 유도하고, 프록시가 이를 실제 도구 호출로 변환한다.

역설적이게도, 모델의 신원을 존중함으로써 더 나은 결과를 얻는다.


프로젝트 구조

cursor2api/
├── src/
│   ├── index.ts          # 진입점 + Express 서버
│   ├── config.ts         # 설정 관리
│   ├── types.ts          # 타입 정의
│   ├── cursor-client.ts  # Cursor API 클라이언트
│   ├── converter.ts      # 프로토콜 변환
│   ├── handler.ts        # Anthropic API 핸들러
│   ├── openai-handler.ts # OpenAI 호환 핸들러
│   ├── thinking.ts       # Thinking 추출
│   ├── vision.ts         # 비전 처리
│   └── tool-fixer.ts     # 도구 파라미터 수정
├── test/
│   ├── unit-*.mjs        # 단위 테스트
│   ├── e2e-test.ts       # E2E 테스트
│   └── e2e-agentic.mjs   # Claude Code 압력 테스트
└── config.yaml           # 설정 파일

주의사항

공식 프로젝트가 아님

cursor2api는 Cursor 공식 프로젝트가 아니다. 커뮤니티에서 개발한 서드파티 도구다.

계정 차단 가능성

Cursor의 서비스 약관을 위반할 수 있다. 무료 플랜을 악용하면 계정이 차단될 수 있다. 개인적인 용도로만 사용하고, 상업적 이용이나 남용은 피해야 한다.

안정성 보장 없음

Cursor API가 변경되면 프록시가 깨질 수 있다. 프로덕션 환경에서는 사용하지 않는 것이 좋다.


마치며: API 경계를 허무는 실험

cursor2api는 기술적으로 인상적인 프로젝트다. API 포맷 변환, 거부 방어, 신원 보호 — 모든 것이 정교하게 설계되어 있다.

하지만 이 프로젝트는 실험적 도구라는 점을 명심해야 한다. Cursor의 무료 AI를 “해킹”해서 사용하는 것이므로, 윤리적, 법적 문제가 있을 수 있다.

그럼에도 불구하고, cursor2api는 AI API 생태계의 흥미로운 가능성을 보여준다. 서로 다른 API 포맷을 연결하고, 비용을 절감하고, 개발자 경험을 개선하는 방법에 대한 하나의 사례다.

API 비용이 부담스러운 개발자들에게 영감을 주는 프로젝트다. 직접 사용할지는 각자의 판단에 맡긴다.


🔗 관련 정보

이전
Gstack: Garry Tan의 Claude Code 스킬 — CEO, Eng Manager, QA Engineer를 한 번에
다음
MimiClaw: $5 칩에서 실행되는 세계 최초의 하드웨어 AI 에이전트 OS