Integrations
Supports configuration through environment variables loaded from .env files, allowing customization of connection settings, security parameters, timeouts, and caching behavior.
Enables deployment of the MCP server using Docker containers, with configuration via environment variables and docker-compose for simplified setup and management.
Provides access to the repository for cloning and installation, with documentation and setup instructions accessible through GitHub.
MCP MSSQL 서버
SQL Server 상호 작용을 위한 모델 컨텍스트 프로토콜(MCP) 서버입니다. 대용량 언어 모델(LLM)이 향상된 보안과 견고성을 바탕으로 SQL 쿼리를 실행하고, 저장 프로시저를 실행하고, 데이터베이스 스키마를 탐색할 수 있도록 지원합니다.
특징
- 안전한 SQL 쿼리 실행 : SQL Server 데이터베이스에 대해
SELECT
쿼리를 실행합니다. 모든 쿼리는 구문 분석 및 검증을 거쳐SELECT
문만 실행되도록 보장합니다. - 저장 프로시저 지원 : 매개변수화된 입력으로 저장 프로시저를 실행합니다.
- 스키마 탐색 : 성능을 위해 캐시된 결과와 함께 데이터베이스 테이블 및 열 정의를 확인합니다.
- 강력한 연결 관리 : 구성 가능한 재시도 논리와 시간 제한을 통해 데이터베이스 연결을 효율적으로 재사용하기 위해 글로벌 연결 풀을 활용합니다.
- 강화된 보안 :
- SQL 쿼리 구문 분석 및
SELECT
전용 허용 목록. SQL_ALLOWED_DATABASES
환경 변수를 사용하여 접근 가능한 데이터베이스를 허용 목록에 추가합니다.- 데이터베이스 컨텍스트 전환을 위한 일반적인 SQL 주입 패턴에 대한 보호.
- 직접 쿼리에서 잠재적으로 유해한 시스템 프로시저나 명령의 실행을 차단합니다.
- SQL 쿼리 구문 분석 및
- 구성 가능한 캐싱 : 데이터베이스 스키마 정보는 구성 가능한 TTL(수명)로 캐싱됩니다.
- 구조화된 로깅 : 세부적이고 구조화된 애플리케이션 로그를 위한 통합된
pino
로거입니다. - Docker Ready : Docker를 이용한 간편한 배포.
빠른 시작
Docker 사용(권장)
지엑스피1
Docker 설정에 대한 자세한 지침은 Docker README를 참조하세요.
구성
서버는 환경 변수를 사용하여 구성됩니다. 루트 디렉터리에 .env
파일을 생성하고 .env.example
파일을 복사하여 환경 변수를 설정합니다.
모든 구성 옵션과 설정 방법에 대한 자세한 가이드는 CONFIG
참조하세요.
범주 | 변하기 쉬운 | 설명 | 기본값(config.js에서) |
---|---|---|---|
연결 | SQL_SERVER | SQL Server 호스트 이름 또는 IP | localhost |
SQL_PORT | SQL 서버 포트 | 1433 | |
SQL_USER | SQL Server 사용자 이름 | sa | |
SQL_PASSWORD | SQL 서버 비밀번호 | 필수의 | |
SQL_DATABASE | 연결할 기본 데이터베이스 이름 | master | |
보안 | SQL_ENCRYPT | 암호화 활성화(비활성화하려면 false 로 설정) | true |
SQL_TRUST_SERVER_CERT | 신뢰 서버 인증서(비활성화하려면 false 로 설정) | true | |
SQL_ALLOWED_DATABASES | 서버가 액세스할 수 있는 데이터베이스 목록을 쉼표로 구분하여 나열합니다. 비어 있으면 액세스 제한이 완화됩니다(DB 사용자 권한에 따라 달라짐). | [] (빈 목록) | |
시간 초과 및 재시도 | SQL_CONNECTION_TIMEOUT | 연결 시간 초과(ms) | 30000 |
SQL_REQUEST_TIMEOUT | 쿼리에 대한 요청 시간 초과(ms) | 30000 | |
SQL_MAX_RETRIES | 초기 연결 시도에 대한 최대 재시도 횟수 | 3 | |
SQL_INITIAL_RETRY_DELAY | 실패한 연결을 다시 시도하기 전 초기 지연(ms) | 1000 | |
SQL_MAX_RETRY_DELAY | 연결 재시도에 대한 최대 지연(ms)(지수 백오프 사용) | 30000 | |
연결 풀 | SQL_POOL_MAX | 풀의 최대 연결 수 | 10 |
SQL_POOL_MIN | 풀의 최소 연결 수 | 0 | |
SQL_POOL_IDLE_TIMEOUT | 풀의 연결에 대한 유휴 시간 초과(ms) | 30000 | |
캐싱 | SQL_SCHEMA_CACHE_TTL | 스키마 캐시의 수명(ms) | 300000 (5분) |
MCP 서버 | MCP_SERVER_NAME | MCP 서버의 이름 | MSSQL Server |
MCP_SERVER_VERSION | MCP 서버 버전 | 1.0.0 | |
벌채 반출 | LOG_LEVEL | pino 로거의 로그 수준(예: fatal , error , warn , info , debug , trace , silent ). 이 값은 config.js 의 일부가 아닌 server.ts 의 process.env 에서 직접 읽어옵니다. | info |
Claude와 함께 사용
Claude CLI에 이 MCP 서버를 추가하려면:
클로드와의 대화에서 다음을 확인할 수 있습니다.
SELECT
쿼리를 실행합니다.(기본CopySQL_DATABASE
에서 작동하거나SQL_ALLOWED_DATABASES
단일 선택을 의미하는 경우database
속성은 선택 사항입니다.)- 저장 프로시저 실행:Copy
- 데이터베이스 스키마 탐색:(Copy
YourDatabaseName
생략되면 환경 변수에 지정된SQL_DATABASE
기본값으로 사용됩니다.)
연결 처리
이 MCP 서버는 DatabaseService
에서 관리하는 글로벌하고 강력한 연결 풀( mssql
라이브러리의 내장 풀링)을 활용합니다.
- 효율성 : 연결이 재사용되므로 요청마다 새로운 연결을 설정하는 오버헤드가 줄어듭니다.
- 복원력 : 초기 연결 설정을 위한 지수 백오프를 사용하여 재시도 논리를 구현합니다.
- 호출 간 세션 상태 없음 : 사용자별 세션 모델과 달리, 이 서버는 LLM의 후속 MCP 호출(예: 두 개의 개별
execute_query
호출)이 동일한 기본 데이터베이스 연결을 사용한다고 보장하지 않습니다. 따라서 한 호출에서 생성된 임시 테이블이나 세션 변수와 같은 세션별 상태는 다른 호출에서 사용하지 못할 수 있습니다. 각 호출은 세션 상태 관점에서 원자성(atomic)을 가져야 합니다. 대상 데이터베이스가 풀의 기본값과 다른 경우, 각 작업 내에서USE [database]
명령이 실행되어 해당 작업에 대한 컨텍스트를 보장합니다.
개발
지역 개발 설정
보안 참고 사항
SELECT
만 : 서버는 SQL 구문 분석을 사용하여execute_query
도구를 통해SELECT
쿼리만 실행할 수 있도록 엄격하게 적용합니다. DML(INSERT, UPDATE, DELETE) 및 DDL 문은 차단됩니다.- 저장 프로시저 실행 : 저장 프로시저는 권한이 허용하는 모든 작업을 수행할 수 있지만 실행은 별도로 관리됩니다.
- 데이터베이스 허용 목록 :
SQL_ALLOWED_DATABASES
환경 변수를 사용하여 서버가 상호 작용할 수 있는 데이터베이스를 제한합니다. 이 기능과SQL_DATABASE
와의 상호 작용 방식에 대한 자세한 설명은DATABASE_WHITELISTING.md
참조하세요. - 시스템 프로시저 차단 : 일반적인 시스템 프로시저(예:
sp_
,xp_
) 및RECONFIGURE
,WAITFOR DELAY
와 같은 명령의execute_query
통한 직접 실행이 차단됩니다. 정상적인 시스템 상호 작용에는 저장 프로시저를 사용해야 합니다. - 입력 유효성 검사 : 컨텍스트 전환을 위한 데이터베이스 이름과 저장 프로시저 이름은 형식 유효성 검사를 거칩니다. SQL 구문 분석은 쿼리에 대한 추가 유효성 검사를 제공합니다.
- 매개변수화된 입력 : 저장 프로시저 매개변수는
mssql
라이브러리에서 처리하며, 일반적으로 SQL 주입을 방지하기 위해 매개변수화합니다.
문제 해결
문제가 발생하는 경우:
- 컨테이너 로그를 확인하세요:
docker logs mssql-mcp
(Docker를 사용하는 경우). - 로컬로 실행하는 경우 pino 로그를 확인하려면 서버의 콘솔 출력을 확인하세요.
.env
파일에서 모든 필수 환경 변수가 올바르게 설정되었는지 확인하세요. 특히SQL_PASSWORD
,SQL_SERVER
,SQL_USER
,SQL_DATABASE
가 올바르게 설정되었는지 확인하세요.- 이 변수를 설정한 경우 액세스하려는 데이터베이스가
SQL_ALLOWED_DATABASES
에 나열되어 있는지 확인하세요. - MCP 서버가 실행 중인 SQL Server 인스턴스에 대한 네트워크 연결을 확인합니다.
- 테스트 스크립트(
test-mcp.sh
,test-session-persistence.sh
)를 검토/업데이트해야 할 수도 있습니다.
자세한 Docker 문제 해결 방법은 Docker README를 참조하세요.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Claude와 같은 대규모 언어 모델이 SQL 쿼리를 실행하고, 데이터베이스 스키마를 탐색하고, SQL Server 데이터베이스에 대한 지속적인 연결을 유지할 수 있게 해주는 모델 컨텍스트 프로토콜 서버입니다.
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that enables Large Language Models to seamlessly interact with ClickHouse databases, supporting resource listing, schema retrieval, and query execution.Last updated -1PythonMIT License
Astra DB MCP Serverofficial
AsecurityAlicenseAqualityA Model Context Protocol server that allows Large Language Models to interact with Astra DB databases, providing tools for managing collections and records through natural language commands.Last updated -1011512TypeScriptApache 2.0- -security-license-qualityA Model Context Protocol server that provides tools for connecting to and interacting with various database systems (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server) through a unified interface.Last updated -Python
MCP TapData Serverofficial
-securityFlicense-qualityA Model Context Protocol server that enables Large Language Models to access and interact with database connections, including viewing schemas and performing CRUD operations on connected databases.Last updated -