使用说明
mssql-mcp
Microsoft SQL Server의 프로시저, 뷰, 테이블을 조회하고 SELECT 쿼리를 실행할 수 있는 MCP(Model Context Protocol) 서버.
Claude Code, Claude Desktop, Cursor, Windsurf 등 MCP를 지원하는 모든 클라이언트에서 사용할 수 있습니다.
주요 기능
- 20개 도구 — MSSQL 데이터베이스를 종합적으로 다룸
- 다중 DB 지원 — 여러 데이터베이스에 동시 접속 가능
- 좁은 쓰기 권한 — 조회는
SELECT·CTE만, 파괴적 명령어(DROP, DELETE, UPDATE, INSERT, MERGE 등) 차단. 쓰기는 프로시저·뷰 정의 변경으로만 제한되고 데이터·테이블은 건드릴 수 없음 - 유연한 설정 — JSON 파일 하나로 N개 DB 관리
도구 목록
| 도구 | 설명 |
|---|---|
test-connection |
DB 연결 상태 확인 |
list-databases |
설정된 DB 목록 및 연결 상태 확인 |
list-procedures |
프로시저 목록 조회 (수정일 포함) |
get-procedure |
프로시저 전체 소스코드 조회 |
list-views |
뷰 목록 조회 (수정일 포함) |
get-view |
뷰 전체 소스코드 조회 |
list-functions |
사용자 정의 함수 목록 조회 |
get-function |
함수 전체 소스코드 조회 |
list-tables |
테이블 목록 조회 (행 수 포함) |
get-table-schema |
테이블 컬럼, 인덱스, 제약조건 조회 |
get-table-data-sample |
테이블 샘플 데이터 (TOP 5) 조회 |
execute-query |
조회 쿼리 실행 — SELECT 및 WITH … SELECT(CTE), 마크다운 테이블로 반환 |
execute-ddl |
프로시저/뷰 생성 및 수정 (수정 시 변경 전 정의를 함께 반환) |
explain-query |
SELECT 쿼리 실행 계획 조회 |
search-objects |
모든 객체를 이름으로 통합 검색 |
search-in-definitions |
프로시저/뷰/함수 소스코드 내부 텍스트 검색 |
get-procedure-params |
프로시저/함수 파라미터 목록 조회 |
get-dependencies |
객체 간 참조 관계 조회 |
get-recent-changes |
최근 N일 내 수정된 객체 조회 |
compare-definitions |
두 DB 간 동일 객체 정의 비교 |
빠른 시작
1. 설치
git clone https://github.com/chessive/mssql-mcp-server.git
cd mssql-mcp-server
npm install
npm run build
2. 설정
예제 파일을 복사하고 접속 정보를 입력합니다:
cp databases.example.json databases.json
{
"mydb": {
"host": "localhost",
"port": 1433,
"database": "MyDatabase",
"user": "sa",
"password": "비밀번호"
}
}
키 이름(mydb)이 도구 호출 시 database 파라미터 값이 됩니다. 필요한 만큼 DB를 추가할 수 있습니다.
주의:
databases.json에는 비밀번호가 포함됩니다..gitignore에 이미 등록되어 있지만, 절대 git에 커밋하지 마세요. 실수로 커밋한 경우 즉시 비밀번호를 변경하세요.
3. MCP 클라이언트에 등록
Claude Code:
claude mcp add mssql -s project -- node /path/to/mssql-mcp/dist/index.js
Claude Desktop / Cursor / 기타: 각 클라이언트의 MCP 서버 설정에서 node /path/to/mssql-mcp/dist/index.js를 stdio 서버로 등록합니다.
4. 사용
MCP 클라이언트에서 이렇게 요청할 수 있습니다:
- "mydb에서 'user'가 포함된 프로시저 목록 보여줘"
- "mydb의 sp_get_users 프로시저 소스코드 가져와"
- "mydb에서
SELECT TOP 10 * FROM users실행해줘" - "mydb의 orders 테이블 스키마 알려줘"
설정
databases.json (권장)
프로젝트 루트에 databases.json을 생성합니다. databases.example.json을 참고하세요.
| 필드 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
host |
string | Y | — | 서버 호스트명 또는 IP |
port |
number | N | 1433 | 서버 포트 |
database |
string | Y | — | 데이터베이스 이름 |
user |
string | Y | — | SQL Server 인증 사용자명 |
password |
string | Y | — | SQL Server 인증 비밀번호 |
domain |
string | N | — | Windows 인증(NTLM) 도메인명 |
연결 설정
- 인증: SQL Server 인증 (사용자명 + 비밀번호) 또는 Windows 인증 (NTLM,
domain필드 설정 시) - 암호화:
encrypt: true,trustServerCertificate: true - 연결 풀: min 0, max 5, idle timeout 30초
- 쿼리 타임아웃: 30초
- 지연 연결: 서버 시작 시가 아닌 첫 요청 시 연결
보안
이 서버는 Development DB 전용입니다. Production/Test DB 접속 정보를
databases.json에 넣지 마세요. 아래 검사들은 SQL 파서가 아닌 키워드 기반 안전장치이므로, 실질적인 마지막 방어선은 접속 계정의 권한입니다. 가능하면 읽기 전용 계정(db_datareader)을 사용하세요. 위 빠른 시작의sa예시는 로컬 실습용입니다.
조회 (execute-query)
SELECT또는WITH … SELECT(CTE)로 시작하는 문만 허용- 차단 키워드:
DROP,TRUNCATE,DELETE,UPDATE,INSERT,MERGE,INTO,SHUTDOWN,XP_CMDSHELL,EXEC,EXECUTEMERGE는 단독으로 INSERT/UPDATE/DELETE를 수행하므로 차단합니다INTO는SELECT … INTO가SELECT로 시작하면서도 새 테이블(임시 테이블 포함)을 만들기 때문에 차단합니다
- 결과는 기본 100행,
maxRows로 조정 가능하며 상한은 500행- 일반
SELECT에는TOP n이 자동 삽입됩니다 - CTE는 최종 SELECT의 위치를 특정할 수 없어 자동 삽입하지 않습니다. 대신
TOP n또는FETCH NEXT n을 직접 명시해야 하며, 없으면 실행을 거부합니다
- 일반
DDL (execute-ddl)
CREATE/ALTER PROCEDURE와CREATE/ALTER VIEW만 허용 (CREATE OR ALTER포함). 테이블 DDL(CREATE/ALTER/DROP TABLE)과 데이터 변경은 불가능하므로, 잘못 실행돼도 영향 범위는 정의 하나입니다- 대상이 3-part name(
db.schema.object)이면 차단 —database파라미터로 지정한 DB 밖의 객체가 변경되는 것을 막습니다 - 기존 객체를 수정할 때는 변경 전 정의를 응답에 함께 반환합니다. 정의 변경은 코드 diff에 흔적이 남지 않으므로, 응답 자체가 복구 지점이 됩니다
공통
execute-query,execute-ddl,explain-query는 세미콜론(;)을 차단하여 다중 문 주입 방지
참고: 키워드 차단은 기본적인 안전장치이며, SQL 파서 수준의 완전한 필터가 아닙니다. 주석이나 문자열 리터럴 내 키워드도 감지될 수 있습니다.
개발
# 개발 모드 (TypeScript 직접 실행)
npm run dev
# 빌드
npm run build
# MCP Inspector로 테스트
npx @modelcontextprotocol/inspector node dist/index.js
요구사항
- Node.js >= 20
- Microsoft SQL Server (
sys.procedures,sys.views,sys.sql_modules지원 버전)
기술 스택
- TypeScript
- @modelcontextprotocol/sdk — MCP 서버 SDK
- mssql — SQL Server 클라이언트 (tedious 기반)
- zod — 스키마 검증