local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Uses .env files for securely storing and accessing configuration variables like API keys and database credentials.
Offers the ability to return SQL query results formatted as Markdown tables through the execute_query_md tool.
Provides routing of database calls through Node.js to the host system's ODBC Driver Manager, allowing for connection to various database systems.
소개
이 문서에서는 모델 컨텍스트 프로토콜(MCP)용 일반 ODBC 서버(mcp-odbc 서버)의 설정 및 사용에 대해 설명합니다. 이 서버는 특정 ODBC 커넥터(또는 드라이버)에 대해 구성된 데이터 소스 이름을 통해 대규모 언어 모델(Large Language Model)이 ODBC로 접근 가능한 데이터 소스에 투명하게 접근할 수 있도록 개발되었습니다.
서버 구현
ODBC용 MCP 서버는 node-odbc
위에 구축된 작은 TypeScript 계층입니다. node.js를 통해(TypeScript의 경우 'npx' 사용) 호스트 시스템의 로컬 ODBC 드라이버 관리자로 호출을 라우팅합니다.
운영 환경 설정 및 전제 조건
다음 예제는 Virtuoso ODBC 커넥터를 기준으로 작성되었지만, 이 가이드에서는 다른 ODBC 커넥터도 지원합니다. 이 프로젝트에 다른 데이터베이스 관리 시스템과 관련된 코드 기여 및 사용 데모 제출을 적극 권장합니다.
주요 시스템 구성 요소
- node.js 버전을 확인하세요. 21.1.0이 아니면
nvm install v21.1.0
사용하여 명시적으로 업그레이드하거나 설치하세요. npm install @modelcontextprotocol/sdk zod tsx odbc dotenv
사용하여 MCP 구성 요소를 설치합니다.- 다음을 사용하여
nvm
버전을 설정합니다:nvm alias default 21.1.0
설치
git clone https://github.com/OpenLinkSoftware/mcp-odbc-server.git
실행합니다.- 디렉토리 변경
cd mcp-odbc-server
npm init -y
실행하세요package.json
파일에"type":"module"
항목을 추가합니다.npm install @modelcontextprotocol/sdk zod tsx odbc dotenv
실행하세요.
unixODBC 런타임 환경 검사
odbcinst -j
실행하여 설치 구성(즉, 주요 INI 파일의 위치)을 확인하세요.odbcinst -q -s
실행하여 사용 가능한 데이터 소스 이름을 나열합니다.
환경 변수
좋은 보안 관행으로, mcp-ser
와 같은 디렉토리에 있는 .env
파일을 사용하여 대상 대용량 언어 모델 API 키(ODBC를 통해 OPAL(OpenLink AI Layer)을 사용하려는 경우), ODBC 데이터 원본 이름(ODBC_DSN), 사용자(ODBC_USER), 비밀번호(ODBC_PWD) 및 ODBC INI(ODBCINI)에 대한 바인딩을 설정해야 합니다.
지엑스피1
용법
도구
성공적으로 설치하면 MCP 클라이언트 애플리케이션에서 다음 도구를 사용할 수 있습니다.
개요
이름 | 설명 |
---|---|
get_schemas | 연결된 데이터베이스 관리 시스템(DBMS)에서 접근할 수 있는 데이터베이스 스키마를 나열합니다. |
get_tables | 선택한 데이터베이스 스키마와 연관된 테이블을 나열합니다. |
설명_테이블 | 지정된 데이터베이스 스키마와 연결된 테이블에 대한 설명을 제공하세요. 여기에는 열 이름, 데이터 유형, Null 처리, 자동 증가, 기본 키 및 외래 키에 대한 정보가 포함됩니다. |
필터_테이블_이름 | 선택한 데이터베이스 스키마와 연관된 q 입력 필드의 하위 문자열 패턴을 기반으로 테이블을 나열합니다. |
쿼리_데이터베이스 | SQL 쿼리를 실행하고 결과를 JSONL 형식으로 반환합니다. |
실행_쿼리 | SQL 쿼리를 실행하고 결과를 JSONL 형식으로 반환합니다. |
실행_쿼리_md | SQL 쿼리를 실행하고 결과를 Markdown 테이블 형식으로 반환합니다. |
spasql_query | SPASQL 쿼리를 실행하고 결과를 반환합니다. |
sparql_query | SPARQL 쿼리를 실행하고 결과를 반환합니다. |
거장_지원_AI | Virtuoso 지원 지원자/에이전트와 상호 작용 - LLM과 상호 작용하기 위한 Virtuoso 특정 기능 |
자세한 설명
- get_schemas
- 연결된 데이터베이스에서 모든 스키마 이름 목록을 검색하여 반환합니다.
- 입력 매개변수:
user
(문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.password
(문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.dsn
(문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
- 스키마 이름의 JSON 문자열 배열을 반환합니다.
- get_tables
- 지정된 스키마의 테이블 정보가 포함된 목록을 검색하여 반환합니다. 스키마가 제공되지 않으면 연결의 기본 스키마를 사용합니다.
- 입력 매개변수:
schema
(문자열, 선택 사항): 테이블을 필터링할 데이터베이스 스키마입니다. 기본값은 연결 기본값입니다.user
(문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.password
(문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.dsn
(문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
- 테이블 정보(예: TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE)를 포함하는 JSON 문자열을 반환합니다.
- 필터_테이블_이름
- 이름에 특정 하위 문자열이 포함된 테이블에 대한 정보를 필터링하고 반환합니다.
- 입력 매개변수:
q
(문자열, 필수): 테이블 이름 내에서 검색할 하위 문자열입니다.schema
(문자열, 선택 사항): 테이블을 필터링할 데이터베이스 스키마입니다. 기본값은 연결 기본값입니다.user
(문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.password
(문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.dsn
(문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
- 일치하는 테이블에 대한 정보가 포함된 JSON 문자열을 반환합니다.
- 설명_테이블
- 특정 테이블의 열에 대한 자세한 정보를 검색하여 반환합니다.
- 입력 매개변수:
schema
(문자열, 필수): 테이블이 포함된 데이터베이스 스키마 이름입니다.table
(문자열, 필수): 설명할 테이블의 이름입니다.user
(문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.password
(문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.dsn
(문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
- 테이블의 열(예: COLUMN_NAME, TYPE_NAME, COLUMN_SIZE, IS_NULLABLE)을 설명하는 JSON 문자열을 반환합니다.
- 쿼리_데이터베이스
- 표준 SQL 쿼리를 실행하고 결과를 JSON 형식으로 반환합니다.
- 입력 매개변수:
query
(문자열, 필수): 실행할 SQL 쿼리 문자열입니다.user
(문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.password
(문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.dsn
(문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
- 쿼리 결과를 JSON 문자열로 반환합니다.
- 쿼리_데이터베이스_md
- 표준 SQL 쿼리를 실행하고 마크다운 테이블 형식으로 결과를 반환합니다.
- 입력 매개변수:
query
(문자열, 필수): 실행할 SQL 쿼리 문자열입니다.user
(문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.password
(문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.dsn
(문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
- 쿼리 결과를 마크다운 테이블 문자열로 반환합니다.
- 쿼리_데이터베이스_jsonl
- 표준 SQL 쿼리를 실행하고 JSON Lines(JSONL) 형식으로 결과를 반환합니다(줄당 JSON 개체 하나).
- 입력 매개변수:
query
(문자열, 필수): 실행할 SQL 쿼리 문자열입니다.user
(문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.password
(문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.dsn
(문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
- 쿼리 결과를 JSONL 문자열로 반환합니다.
- spasql_query
- SPASQL(SQL/SPARQL 하이브리드) 쿼리를 실행하여 결과를 반환합니다. 이는 Virtuoso 전용 기능입니다.
- 입력 매개변수:
query
(문자열, 필수): SPASQL 쿼리 문자열입니다.max_rows
(숫자, 선택 사항): 반환할 최대 행 수입니다. 기본값은 20입니다.timeout
(숫자, 선택 사항): 쿼리 시간 초과(밀리초). 기본값은 30000입니다.user
(문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.password
(문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.dsn
(문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
- 기본 저장 프로시저 호출(예:
Demo.demo.execute_spasql_query
)의 결과를 반환합니다.
- sparql_query
- SPARQL 쿼리를 실행하고 결과를 반환합니다. 이는 Virtuoso 전용 기능입니다.
- 입력 매개변수:
query
(문자열, 필수): SPARQL 쿼리 문자열.format
(문자열, 선택 사항): 원하는 결과 형식입니다. 기본값은 'json'입니다.timeout
(숫자, 선택 사항): 쿼리 시간 초과(밀리초). 기본값은 30000입니다.user
(문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.password
(문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.dsn
(문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
- 기본 함수 호출(예:
"UB".dba."sparqlQuery"
)의 결과를 반환합니다.
- 거장_지원_AI
- Virtuoso 전용 AI 어시스턴트 기능을 활용하여 프롬프트와 선택적 API 키를 전달합니다. 이는 Virtuoso 전용 기능입니다.
- 입력 매개변수:
prompt
(문자열, 필수): AI 함수에 대한 프롬프트 텍스트입니다.api_key
(문자열, 선택 사항): AI 서비스의 API 키입니다. 기본값은 "없음"입니다.user
(문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.password
(문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.dsn
(문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
- AI Support Assistant 함수 호출(예:
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI
)의 결과를 반환합니다.
기본 설치 테스트 및 문제 해결
- 다음 명령을 사용하여 mcp-server 디렉토리/폴더에서 검사기를 시작합니다.Copy
- "연결" 버튼을 클릭한 다음 "도구" 탭을 클릭하여 시작하세요.
MCP 애플리케이션 사용
클로드 데스크톱 구성
이 구성 파일의 경로는 ~{username}/Library/Application Support/Claude/claude_desktop_config.json
입니다.
클로드 데스크톱 사용법
- 응용 프로그램을 시작하세요
- 설정 | 개발자 사용자 인터페이스를 통해 구성(위에서) 적용
- DSN(데이터 원본 이름)에 대한 ODBC 연결이 작동하는지 확인하세요.
- 쿼리 실행을 요청하는 프롬프트를 제시합니다. 예:
Execute the following query: SELECT TOP * from Demo..Customers
Cline(Visual Studio Extension) 구성
이 구성 파일의 경로는 다음과 같습니다. ~{username}/Library/Application\ Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Cline(Visual Studio Extension) 사용법
- Shift+Command+P를 사용하여 명령 팔레트를 엽니다.
- 입력하세요: Cline
- 선택: VSCode 사이드바에서 Cline UI를 여는 Cline View
- MCP 서버 설치 및 구성을 위한 UI에 액세스하려면 네 개의 사각형 아이콘을 사용하세요.
- Cline Config 적용(위에서)
- 확장 프로그램의 기본 UI로 돌아가서 다음 프롬프트의 처리를 요청하는 새 작업을 시작합니다. "다음 쿼리를 실행하세요: SELECT TOP 5 * from Demo..Customers"
커서 구성
설정 기어를 사용하여 mcp servers
등록하고 구성하기 위한 MCP 메뉴 항목이 포함된 구성 메뉴를 엽니다.
커서 사용
Command or Control + I
키 조합을 사용하여 채팅 인터페이스를 엽니다.- UI 왼쪽 하단의 드롭다운에서
Agent
선택하세요. 기본값은Ask
입니다. @odbc {rest-of-prompt}
패턴을 사용하여mcp-server for odbc
사용을 인증하는 프롬프트를 입력합니다.- 프롬프트를 실행하려면 "수락"을 클릭하세요.
관련된
This server cannot be installed
ODBC 커넥터(드라이버)를 통해 접근할 수 있는 모든 데이터베이스 관리 시스템(DBMS)에 일반적인 ODBC(Open Database Connectivity)를 제공합니다.