본문으로 건너뛰기

Cursor에서 환경 매개변수로 MCP 서버 구성하기

Cursor에서 환경 매개변수로 모델 컨텍스트 프로토콜(MCP) 서버를 구성하면 민감한 정보를 안전하게 전달하고 서버 동작을 사용자 지정할 수 있습니다. 이 가이드는 MCP 서버에 대한 환경 변수 설정 및 관리에 대한 자세한 지침을 제공합니다.

MCP 서버 환경 구성 소개​

모델 컨텍스트 프로토콜(MCP) 서버는 추가 도구와 리소스를 제공하여 Cursor의 AI 기능을 확장합니다. 환경 매개변수를 통해 다음을 수행할 수 있습니다:

  • API 키와 인증 토큰을 안전하게 전달
  • 코드를 수정하지 않고 서버 동작 구성
  • 다양한 환경(개발, 스테이징, 프로덕션) 설정
  • 배포 컨텍스트에 따라 서버 기능 사용자 지정

환경 매개변수를 사용하는 이유?​

환경 매개변수는 여러 가지 장점을 제공합니다:

  1. 보안: 민감한 정보를 코드베이스에서 분리
  2. 유연성: 코드를 수정하지 않고 구성 변경 가능
  3. 이식성: 다양한 환경에서 동일한 서버 실행
  4. 관심사 분리: 구성과 구현을 별도로 유지

MCP 서버 구성 이해하기​

환경 매개변수를 추가하기 전에 Cursor에서 MCP 서버 구성의 기본 구조를 이해하는 것이 중요합니다.

MCP 구성 파일 구조​

MCP 서버는 다음 구조를 가진 JSON 파일에서 구성됩니다:

{
"mcpServers": {
"server-name": {
"command": "node",
"args": ["/path/to/server.js"],
"env": {
"KEY1": "value1",
"KEY2": "value2"
},
"disabled": false,
"autoApprove": ["tool1", "tool2"]
}
}
}

주요 구성 요소:

  • server-name: MCP 서버의 고유 식별자
  • command: 서버를 실행하는 명령어(예: node, python)
  • args: 명령어에 전달되는 인수
  • env: 서버 프로세스에 전달되는 환경 변수
  • disabled: 서버 비활성화 여부
  • autoApprove: 명시적 승인이 필요하지 않은 도구 목록

단계별 구성 가이드​

1. MCP 구성 파일 찾기​

MCP 구성 파일의 위치는 운영 체제에 따라 다릅니다:

Windows:

%APPDATA%\Code\User\globalStorage\tencent-cloud.coding-copilot\settings\Craft_mcp_settings.json

macOS:

~/Library/Application Support/Code/User/globalStorage/tencent-cloud.coding-copilot/settings/Craft_mcp_settings.json

Linux:

~/.config/Code/User/globalStorage/tencent-cloud.coding-copilot/settings/Craft_mcp_settings.json

2. 구성 파일 편집하기​

  1. 선호하는 텍스트 편집기에서 구성 파일 열기
  2. 파일이 존재하지 않거나 비어 있는 경우, 다음 구조로 생성:
{
"mcpServers": {}
}
  1. 서버 구성 추가 또는 수정:
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["/path/to/my-server.js"],
"env": {
"API_KEY": "your-api-key-here",
"DEBUG": "true",
"PORT": "3000"
},
"disabled": false
}
}
}

3. 환경 매개변수 추가하기​

MCP 서버에 환경 매개변수를 추가하려면:

  1. 서버에 필요한 환경 변수 식별
  2. 서버 구성의 env 객체에 추가
  3. 구성 파일 저장

여러 환경 변수가 있는 예시:

"env": {
"OPENAI_API_KEY": "sk-abcdef123456",
"SERVER_PORT": "3000",
"LOG_LEVEL": "info",
"CACHE_ENABLED": "true",
"MAX_TOKENS": "4096",
"MODEL_NAME": "gpt-4",
"TIMEOUT_MS": "30000"
}

4. MCP 서버에서 환경 변수 사용하기​

MCP 서버 코드에서 이러한 환경 변수에 액세스할 수 있습니다:

JavaScript/Node.js:

const apiKey = process.env.API_KEY;
const debug = process.env.DEBUG === 'true';
const port = parseInt(process.env.PORT || '3000', 10);

console.log(`Starting server with API key ${apiKey} on port ${port}`);
if (debug) {
console.log('Debug mode enabled');
}

Python:

import os

api_key = os.environ.get('API_KEY')
debug = os.environ.get('DEBUG') == 'true'
port = int(os.environ.get('PORT', '3000'))

print(f"Starting server with API key {api_key} on port {port}")
if debug:
print("Debug mode enabled")

고급 구성 기법​

환경 파일 사용하기​

더 복잡한 구성의 경우 환경 파일을 사용할 수 있습니다:

  1. .env 파일 생성:
API_KEY=your-api-key-here
DEBUG=true
PORT=3000
  1. MCP 서버 구성 업데이트:
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["/path/to/my-server.js"],
"env": {
"ENV_FILE": "/path/to/.env"
}
}
}
}
  1. 서버 코드에서 환경 파일 로드:

JavaScript/Node.js (dotenv 사용):

require('dotenv').config({ path: process.env.ENV_FILE });

// 이제 변수에 액세스할 수 있습니다
const apiKey = process.env.API_KEY;

Python (python-dotenv 사용):

import os
from dotenv import load_dotenv

load_dotenv(os.environ.get('ENV_FILE'))

# 이제 변수에 액세스할 수 있습니다
api_key = os.environ.get('API_KEY')

환경 변수 확장​

구성 내에서 다른 환경 변수를 참조할 수 있습니다:

"env": {
"BASE_URL": "https://api.example.com",
"API_ENDPOINT": "${BASE_URL}/v1/data",
"HOME_DIR": "${HOME}/projects"
}

시스템 환경 변수 사용하기​

구성에서 시스템 환경 변수를 참조할 수 있습니다:

"env": {
"USER_HOME": "${HOME}",
"SYSTEM_TEMP": "${TEMP}",
"CURRENT_USER": "${USER}"
}

보안 모범 사례​

API 키와 같은 민감한 정보를 포함한 환경 매개변수로 작업할 때는 다음 보안 모범 사례를 따르세요:

1. 민감한 정보를 절대 커밋하지 않기​

  • .gitignore를 사용하여 환경 파일 제외
  • 실제 API 키가 포함된 구성 파일을 커밋하지 않기
  • 커밋된 예시에는 자리 표시자 값 사용

2. 민감한 값에 암호화 사용하기​

  • 민감한 환경 변수 암호화 고려
  • 가능한 경우 보안 키 관리 시스템 사용

3. 구성 파일에 대한 액세스 제한​

  • 적절한 파일 권한 설정
  • 구성 파일을 볼 수 있고 편집할 수 있는 사람 제한

4. 정기적으로 비밀 교체하기​

  • API 키와 토큰을 주기적으로 변경
  • 비밀이 변경될 때 구성 파일 업데이트

5. 환경 변수 검증하기​

서버 코드에서 환경 변수를 사용하기 전에 검증:

function validateEnv() {
const requiredVars = ['API_KEY', 'SERVER_PORT'];
const missing = requiredVars.filter(varName => !process.env[varName]);

if (missing.length > 0) {
throw new Error(`Missing required environment variables: ${missing.join(', ')}`);
}
}

validateEnv();

일반적인 문제 해결​

환경 변수를 사용할 수 없음​

문제: MCP 설정에서 구성된 환경 변수를 서버에서 사용할 수 없습니다.

해결책:

  • 구성 파일 구문 확인
  • 서버가 올바르게 시작되고 있는지 확인
  • 구성 변경 후 Cursor 재시작
  • 환경 관련 오류에 대한 서버 로그 확인

구성 파일을 찾을 수 없음​

문제: Cursor가 MCP 구성 파일을 찾을 수 없습니다.

해결책:

  • 파일 경로가 운영 체제에 맞게 올바른지 확인
  • 디렉토리 구조가 없는 경우 생성
  • 파일 권한 확인
  • 파일 생성 후 Cursor 재시작

잘못된 JSON 형식​

문제: 구성 파일에 JSON 구문 오류가 있습니다.

해결책:

  • JSON 검증기를 사용하여 JSON 검증
  • 누락된 쉼표, 괄호 또는 따옴표 확인
  • 모든 속성 이름이 큰따옴표로 묶여 있는지 확인
  • 후행 쉼표 제거

시작 시 서버 충돌​

문제: MCP 서버가 시작 직후 충돌합니다.

해결책:

  • 오류 메시지에 대한 서버 로그 확인
  • 필요한 모든 환경 변수가 제공되었는지 확인
  • 환경 변수 값이 올바른 형식인지 확인
  • 파일 참조의 경로 문제 확인

일반적인 사용 사례 예시​

1. OpenAI API 통합​

{
"mcpServers": {
"openai-tools": {
"command": "node",
"args": ["/path/to/openai-server.js"],
"env": {
"OPENAI_API_KEY": "sk-your-key-here",
"MODEL": "gpt-4",
"MAX_TOKENS": "8192",
"TEMPERATURE": "0.7"
}
}
}
}

2. 데이터베이스 연결​

{
"mcpServers": {
"db-tools": {
"command": "python",
"args": ["/path/to/db-server.py"],
"env": {
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_NAME": "mydb",
"DB_USER": "user",
"DB_PASSWORD": "password",
"CONNECTION_POOL_SIZE": "10"
}
}
}
}

3. 개발 vs. 프로덕션 설정​

{
"mcpServers": {
"api-tools": {
"command": "node",
"args": ["/path/to/api-server.js"],
"env": {
"NODE_ENV": "development",
"API_URL": "http://localhost:8080/api",
"CACHE_ENABLED": "false",
"LOG_LEVEL": "debug"
}
}
}
}

결론​

Cursor에서 환경 매개변수로 MCP 서버를 구성하면 서버 동작을 사용자 지정하고 민감한 정보를 관리하는 유연하고 안전한 방법을 제공합니다. 이 가이드에 설명된 단계와 모범 사례를 따르면 MCP 서버에 대한 환경 변수를 효과적으로 설정하고 관리할 수 있습니다.

외부 API와 통합하든, 데이터베이스에 연결하든, 단순히 서버 동작을 사용자 지정하든, 환경 매개변수는 구성과 코드 사이에 깔끔한 분리를 제공하여 보안과 유지 관리성을 향상시킵니다.

추가 리소스​