다음을 통해 공유


SQL MCP Server란?

중요합니다

MCP(SQL 모델 컨텍스트 프로토콜) 서버는 미리 보기 상태이며 이 설명서와 엔진 구현이 변경 될 수 있습니다. Data API Builder 버전 1.7은 미리 보기 상태이지만 MCP 기능이 태그에 아직 포함되지 1.7.83-rc 않았기 때문에 시험판 버전을 명시적으로 사용해야 합니다(예:latest: ).

SQL MCP Server는 개발자에게 AI 에이전트를 데이터 워크플로로 가져올 수 있는 간단하고 예측 가능하며 안전한 방법을 제공합니다. 데이터베이스를 노출하거나 취약한 자연어 구문 분석에 의존하지 않고 이 작업을 수행합니다. SQL MCP Server는 Data API Builder의 엔터티 추상화, RBAC, 캐싱 및 원격 분석을 기반으로 하여 REST, GraphQL 및 MCP에서 동일하게 작동하는 프로덕션 준비 표면을 제공합니다. 한 번 구성하면 엔진이 나머지를 처리합니다.

MCP(모델 컨텍스트 프로토콜)

MCP(모델 컨텍스트 프로토콜)는 AI 에이전트가 외부 도구를 검색하고 호출하는 방법을 정의하는 표준입니다. 도구는 레코드 만들기 또는 데이터 읽기와 같은 단일 작업입니다. 각 도구는 입력, 출력 및 동작을 설명합니다. MCP는 에이전트가 기능을 검색하고 사용할 수 있는 예측 가능한 방법을 제공합니다.

SQL용 MCP 서버

SQL MCP Server는 에이전트 앱에 대한 Microsoft의 동적 오픈 소스 엔진입니다. 다음을 정의하는 JSON 파일을 사용하여 구성합니다.

  • 데이터베이스에 연결하는 방법
  • 노출할 테이블, 뷰 또는 저장 프로시저
  • 각 개체에 적용되는 사용 권한

SQL MCP Server는 버전 1.7부터 DAB(Data API Builder)의 일부로 포함됩니다. 에이전트가 제어된 계약을 통해 데이터베이스 엔터티와 상호 작용할 수 있도록 SQL 작업을 MCP 도구의 작은 제품군 으로 노출합니다. 서버는 자체 호스팅되지만 개발자의 경우 DAB 명령줄을 통해 로컬로 실행할 수도 있습니다.

팁 (조언)

데이터 API 작성기는 오픈 소스이며 무료로 사용할 수 있습니다.

사용 사례

다음은 SQL MCP Server에 대한 몇 가지 일반적인 사용 사례입니다.

  • 부조종사 또는 챗봇이 안전한 CRUD 작업을 수행할 수 있도록 허용
  • SQL을 작성하지 않고 내부 자동화 빌드
  • 데이터베이스를 직접 노출하지 않고 에이전트 기능 추가

스키마 보안

데이터 API 작성기에서는 구성에서 API를 통해 노출되는 모든 테이블, 뷰 및 저장 프로시저를 나열하는 잘 정의된 엔터티 추상화 계층을 사용합니다. 이 계층을 사용하면 이름 및 열에 별칭을 지정하고, 개체 및 매개 변수를 설명하고, 다른 역할에 사용할 수 있는 필드를 제한할 수 있습니다.

중요합니다

DAB(데이터 API 작성기)는 역할을 인식하며 현재 역할에 액세스할 수 있는 엔터티 및 작업만 노출합니다.

SQL MCP Server는 데이터 API 작성기의 기능이므로 이 추상화 계층도 사용합니다. 이 방법을 사용하면 내부 스키마가 외부 소비자에게 노출되는 것을 방지하고 API 계층에서 복잡한 데이터 원본, 개체 패밀리 및 관계도 정의할 수 있습니다.

NL2SQL 해결

SQL MCP Server는 현재 사용 가능한 많은 근시안 데이터베이스 MCP 서버와 는 다른 접근 방식을 사용합니다. 주요 예는 의도적으로 NL2SQL을 지원하지 않는다는 것입니다.

Why? 모델은 결정적이지 않으며 복잡한 쿼리는 미묘한 오류를 생성할 가능성이 가장 높습니다. 이러한 복잡한 쿼리는 AI가 생성할 수 있기를 바라는 경우가 많으며, 비결정적인 방식으로 생성될 때 가장 면밀한 조사가 필요한 쿼리이기도 합니다.

비고

결정적 의미는 동일한 입력이 항상 동일한 출력을 생성함을 의미합니다. 호출 간에 임의성 또는 변형이 없으므로 결과를 예측 가능하고 테스트 가능하며 안전하게 자동화할 수 있습니다.

대신 SQL MCP Server는 NL2DAB 모델이라고 할 수 있는 모델을 지원합니다. 이 방법은 보안 데이터 API 작성기 엔터티 추상화 계층과 기본 제공 DAB 쿼리 작성기를 사용합니다. 그들은 함께 정확하고 올바른 형식의 Transact-SQL(T-SQL)을 완벽히 결정적으로 생성합니다. 이 방법은 에이전트 생성 쿼리의 안전성과 안정성을 유지하면서 NL2SQL과 관련된 위험, 오버헤드 및 성가신 문제를 제거합니다.

DDL 지원

DDL(데이터 정의 언어)은 테이블 및 뷰와 같은 개체를 만들고 변경하는 데 사용되는 데이터베이스 언어입니다. SQL MCP Server는 기존 테이블 및 뷰에서 데이터를 만들고, 읽고, 업데이트하고, 삭제하는 데 사용되는 데이터베이스 언어인 DML(데이터 조작 언어)을 기반으로 빌드됩니다. DML은 저장 프로시저의 실행도 다룹니다. 따라서 SQL MCP Server는 스키마가 아닌 데이터로 작동하도록 설계되었습니다. 이 디자인은 AI 에이전트가 중요 업무용 또는 비즈니스에 민감한 시스템과 상호 작용하는 프로덕션 MCP 사용 사례와 일치합니다.

팁 (조언)

로컬 개발 중에 스키마를 수정하기 위해 엔지니어는 포괄적인 DDL 지원을 제공하는 VS Code(Visual Studio Code)에서 MSSQL 확장을 사용할 수 있습니다.

RBAC 지원

SQL MCP Server는 데이터 API 작성기 전체에서 사용되는 동일한 검증된 RBAC(역할 기반 액세스 제어) 시스템의 이점을 활용합니다. 구성의 각 엔터티는 데이터를 읽거나, 만들거나, 업데이트하거나, 삭제할 수 있는 역할과 해당 역할에 대해 포함되거나 제외되는 필드를 정의합니다. 이러한 규칙은 모든 MCP 도구에 자동으로 적용되며, 추가 구성 없이 REST, GraphQL 및 MCP 간에 보안을 일관되게 유지합니다.

중요합니다

역할 기반 제약 조건은 에이전트 상호 작용의 모든 단계에서 적용됩니다.

캐싱 지원

SQL MCP Server는 도구의 read_records 결과를 자동으로 캐시합니다. 데이터 API 작성기에서 캐싱 은 전역적으로 사용하도록 설정되며 엔터티별로 구성할 수 있습니다. 1단계 및 2단계 캐싱은 모두 데이터베이스 부하를 줄이고, 요청 쇄도를 방지하며, 수평으로 확장된 환경에서 웜 스타트 시나리오를 지원합니다.

모니터링 지원

SQL MCP Server는 기업이 단일 창에서 활동을 모니터링하고 유효성을 검사할 수 있도록 하는 로그 및 원격 분석을 내보낸다. 이 기능에는 컨테이너 내의 Azure Log Analytics, Application Insights 및 로컬 파일 로그가 포함됩니다.

테레메트리

SQL MCP Server는 OTEL(OpenTelemetry) 범위 및 작업으로 완전히 계측됩니다. 각 작업은 개발자가 분산 시스템 간에 동작을 상호 연결할 수 있도록 추적됩니다. Data API Builder의 기본 Open Telemetry 지원에 대해 자세히 알아봅니다.

건강 상태 검사

SQL MCP Server는 REST, GraphQL 및 MCP 엔드포인트에서 자세한 상태 및 엔터티 검사를 제공합니다. 데이터 API 작성기 상태를 사용하면 개발자가 성능 기대치를 정의하고, 임계값을 설정하고, 각 엔드포인트가 예상대로 작동하는지 확인할 수 있습니다.

SQL MCP Server를 구성하는 방법

MCP는 DAB 구성 파일에서 구성됩니다. 작업 중인 데이터 API 작성기 구성이 이미 있는 경우 버전 1.7 이상으로 업그레이드하면 추가 단계 없이 작동하는 SQL MCP Server가 자동으로 제공됩니다.

구성 / 설정

전역적으로 또는 엔터티 수준에서 MCP를 사용하도록 설정할 수 있습니다. 이 기능을 사용하면 MCP 도구를 노출하는 엔터티와 에이전트에 액세스할 수 없는 엔터티를 선택할 수 있습니다. MCP는 REST 및 GraphQL에 사용되는 것과 동일한 규칙을 따르므로 구성은 사용 권한, 프로젝션 및 정책에 대한 단일 소스로 유지됩니다.

MCP를 사용하도록 설정하면 SQL MCP Server는 구성에 따라 자동으로 도구 화면을 생성합니다. MCP 도구를 수동으로 정의하지 않습니다. 기본 제공 dml-tools 시스템은 작은 스키마에서 매우 큰 데이터베이스로 잘 확장되는 엔터티를 절차적으로 검색하고 노출합니다.

시작하기

시작은 엔진을 제어할 수 있는 dab-config.json 컨트롤을 만드는 것을 의미합니다. 이 작업을 수동으로 수행하거나 DAB(Data API Builder) CLI를 사용할 수 있습니다. CLI는 작업을 간소화하여 단일 명령으로 파일을 초기화할 수 있도록 합니다. 구성 속성 값은 리터럴 문자열, 환경 변수 또는 Azure Key Vault 비밀을 사용할 수 있습니다.

dab init --database-type mssql --connection-string "<your-connection-string>" --config dab-config.json --host-mode development

SQL MCP Server가 노출할 각 테이블, 뷰 또는 저장 프로시저를 구성에 추가하여 지정할 수 있습니다. CLI를 사용하면 원하는 경우 쉽게 추가하고, 별칭을 할당하고, 사용 권한을 구성하고, 열을 매핑할 수 있습니다. 가장 중요한 것은 이 속성을 사용하여 description 언어 모델이 데이터를 더 잘 이해할 수 있도록 의미 체계 세부 정보를 포함할 수 있습니다.

dab add {entity-name} \                          # object alias (Employees)
  --source {table-or-view-name} \                # database object (dbo.Employees)
  --source.type {table|view|stored-procedure} \  # object type (table)
  --permissions "{role:actions}" \               # role and allowed actions (anonymous:*)
  --description "{text}"                         # semantic description (Company employee records)

런타임 설정

SQL MCP 서버는 기본적으로 데이터 API 작성기 구성에서 사용하도록 설정됩니다. 대부분의 경우 설정을 추가할 필요가 없습니다. 서버는 API 및 데이터베이스와 동일한 권한 및 보안 규칙을 자동으로 따릅니다. 에이전트가 수행할 수 있는 작업을 좁히거나 제한하려는 경우에만 MCP를 구성합니다.

"runtime": {
  "mcp": {
    "enabled": true,              // default: true
    "path": "/mcp",               // default: /mcp
    "dml-tools": {
      "describe-entities": true,  // default: true
      "create-record": true,      // default: true
      "read-records": true,       // default: true
      "update-record": true,      // default: true
      "delete-record": true,      // default: true
      "execute-entity": true      // default: true
    }
  }
}

또한 CLI를 사용하면 스크립팅을 통해 모든 속성을 개별적으로 또는 프로그래밍 방식으로 설정할 수 있습니다.

dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true

개별 도구를 사용하지 않도록 설정하는 이유는 무엇인가요?

개발자는 역할 또는 엔터티 사용 권한이 허용하는 경우에도 특정 작업을 제한할 수 있습니다. 런타임 수준에서 도구를 사용하지 않도록 설정하면 에이전트에 표시되지 않습니다. 예를 들어 해제하면 delete_record 다른 구성에 관계없이 삭제 기능이 완전히 숨겨지게 됩니다. 이 시나리오는 일반적이지 않지만 엄격한 운영 경계가 필요한 경우 유용합니다.

엔터티 설정

또한 각 엔터티에서 MCP를 사용하도록 설정할 필요가 없습니다. 엔터티는 제한하도록 선택하지 않는 한 자동으로 참여합니다. dml-tools MCP에서 엔터티를 제외하거나 기능을 좁힐 수 있도록 속성이 존재하지만 정상적인 사용을 위해 아무것도 설정할 필요가 없습니다. 기본값은 모든 것을 처리합니다.

"entities": {
  "products": {
    "mcp": {
      "dml-tools": true
    }
  }
}

DML 도구

SQL MCP Server는 AI 에이전트가 안전하고 형식이 안전한 데이터베이스 작업을 수행할 수 있도록 하는 6개의 DML(데이터 조작 언어) 도구를 노출합니다describe_entitiescreate_recordread_recordsupdate_recorddelete_recordexecute_entity. 이러한 도구는 항상 구성, 사용 권한 및 스키마를 반영하는 예측 가능한 CRUD 표면을 형성합니다.

각 도구는 RBAC(역할 기반 액세스 제어), 엔터티 권한 및 정책을 준수합니다. 에이전트는 데이터베이스와 직접 상호 작용하지 않으며 보안 데이터 API 작성기 추상화 계층을 통해 작동합니다.

각 도구, 구성 옵션 및 모범 사례에 대한 자세한 내용은 DML 도구 참조를 참조하세요.