Skip to content

MCP 구성

모델 컨텍스트 프로토콜(MCP)을 사용하면 Sidian이 외부 도구 및 서비스에 연결하여 AI의 기능을 코드 편집 이상으로 확장할 수 있습니다. 이 가이드에서는 MCP 서버를 구성하고 관리하는 방법을 다룹니다.

MCP란 무엇인가요?

MCP는 AI 어시스턴트가 외부 도구 및 데이터 소스에 안전하게 연결할 수 있도록 하는 표준화된 프로토콜입니다:

기능

  • 파일 시스템 작업
  • Git 리포지토리 관리
  • 데이터베이스 쿼리
  • API 통합
  • 메모리 및 컨텍스트 저장

이점

  • 안전한 샌드박스 실행
  • 표준화된 프로토콜
  • 확장 가능한 아키텍처
  • 커뮤니티 기반 서버
  • 쉬운 구성

구성 위치

Sidian은 다음 위치에서 MCP 구성을 읽습니다:

구성 파일

  • Windows: C:\Users\{YourUsername}\.sidian\mcp.json
  • macOS: ~/.sidian/mcp.json
  • Linux: ~/.sidian/mcp.json

기본 구성

MCP 구성 파일은 다음 구조의 JSON 형식을 사용합니다:

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/your/workspace"],
      "env": {}
    },
    "git": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-git", "--repository", "/path/to/your/git/repository"],
      "env": {}
    },
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"],
      "env": {}
    }
  }
}

인기 있는 MCP 서버

다음은 일반적으로 사용되는 몇 가지 MCP 서버와 그 구성입니다:

파일 시스템 서버

파일 읽기, 쓰기 및 관리를 위한 파일 시스템 접근을 제공합니다:

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/your/workspace"],
      "env": {}
    }
  }
}

Git 서버

Git 작업 및 리포지토리 관리를 활성화합니다:

json
{
  "mcpServers": {
    "git": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-git", "--repository", "/path/to/your/git/repo"],
      "env": {}
    }
  }
}

메모리 서버

AI 대화를 위한 영구 메모리를 제공합니다:

json
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"],
      "env": {}
    }
  }
}

데이터베이스 서버

쿼리 및 작업을 위해 데이터베이스에 연결합니다:

json
{
  "mcpServers": {
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": {
        "BRAVE_API_KEY": "your-brave-api-key-here"
      }
    }
  }
}

고급 구성

환경 변수

MCP 서버에 대한 환경 변수를 설정합니다:

json
{
  "mcpServers": {
    "custom-server": {
      "command": "node",
      "args": ["/path/to/custom-server.js"],
      "env": {
        "API_KEY": "your-api-key",
        "DEBUG": "true",
        "TIMEOUT": "30000"
      }
    }
  }
}

서버 옵션

서버별 옵션을 구성합니다:

json
{
  "mcpServers": {
    "web-server": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-web"],
      "options": {
        "timeout": 30000,
        "retries": 3,
        "logLevel": "info"
      }
    }
  }
}

조건부 구성

환경에 따라 다른 구성을 사용합니다:

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "        "${SIDIAN_PROJECT_ROOT:-/default/path}""
      ]
    }
  }
}

보안 고려 사항

샌드박싱

  • MCP 서버는 격리된 프로세스에서 실행됩니다
  • 시스템 리소스에 대한 접근이 제한됩니다
  • 구성 가능한 권한 경계
  • 모든 작업에 대한 감사 로깅

접근 제어

  • 허용된 디렉토리 및 파일 화이트리스트
  • 네트워크 접근 제한
  • 명령 실행 제한
  • 리소스 사용량 모니터링

모범 사례

  • 최소한의 필요한 권한 사용
  • MCP 서버 패키지 정기적 업데이트
  • 의심스러운 활동에 대한 서버 로그 모니터링
  • 민감한 데이터에 환경 변수 사용

문제 해결

서버가 시작되지 않음

  • Node.js가 설치되어 있고 접근 가능한지 확인
  • 서버 패키지가 설치되었는지 확인: npm list -g
  • MCP 구성 파일 구문 확인
  • 특정 오류 메시지에 대한 서버 로그 확인
  • 터미널에서 서버 명령을 수동으로 실행해보기

권한 오류

  • Sidian이 구성된 디렉토리에 대한 읽기/쓰기 권한이 있는지 확인
  • 프로젝트 폴더의 파일 시스템 권한 확인
  • 필요한 경우 Sidian을 관리자 권한으로 실행 (Windows)
  • MCP 구성 파일이 읽기 가능한지 확인

서버가 계속 충돌함

  • MCP 서버 패키지를 최신 버전으로 업데이트
  • 충돌하는 Node.js 버전 확인
  • 구성에서 타임아웃 값 증가
  • 시스템 리소스(CPU, 메모리) 모니터링
  • 오류 패턴에 대한 서버 로그 확인

성능 문제

  • 활성 MCP 서버 수 줄이기
  • 서버 구성 최적화
  • 원격 서버 대신 로컬 서버 사용
  • 원격 서버의 네트워크 지연 시간 모니터링
  • 캐싱 전략 고려

사용자 정의 MCP 서버

사용자 정의 서버 만들기

특정 요구에 맞는 사용자 정의 MCP 서버를 만들 수 있습니다:

javascript
// custom-server.js
const { Server } = require('@modelcontextprotocol/sdk/server/index.js');
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');

const server = new Server({
  name: 'custom-server',
  version: '1.0.0'
});

// 여기에 사용자 정의 도구 및 리소스를 추가하세요
server.setRequestHandler('tools/list', async () => {
  return {
    tools: [
      {
        name: 'custom-tool',
        description: 'A custom tool for specific operations',
        inputSchema: {
          type: 'object',
          properties: {
            input: { type: 'string' }
          }
        }
      }
    ]
  };
});

const transport = new StdioServerTransport();
server.connect(transport);

사용자 정의 서버 구성

json
{
  "mcpServers": {
    "custom": {
      "command": "node",
      "args": ["/path/to/custom-server.js"]
    }
  }
}

모니터링 및 로깅

서버 상태

Sidian에서 MCP 서버 상태를 모니터링합니다:

  • 설정에서 서버 연결 상태 확인
  • 출력 패널에서 서버 로그 보기
  • 리소스 사용량 모니터링
  • 오류율 및 성능 추적

디버깅

문제 해결을 위해 디버그 로깅을 활성화합니다:

json
{
  "mcpServers": {
    "debug-server": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"],
      "env": {
        "DEBUG": "*",
        "LOG_LEVEL": "debug"
      }
    }
  }
}

MCP 구성을 사용하면 Sidian의 AI 기능을 크게 확장할 수 있습니다. 기본 서버로 시작하여 필요에 따라 점차 더 복잡한 구성을 추가하세요.