mcp-odbc

Official

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 커넥터도 지원합니다. 이 프로젝트에 다른 데이터베이스 관리 시스템과 관련된 코드 기여 및 사용 데모 제출을 적극 권장합니다.

주요 시스템 구성 요소

  1. node.js 버전을 확인하세요. 21.1.0이 아니면 nvm install v21.1.0 사용하여 명시적으로 업그레이드하거나 설치하세요.
  2. npm install @modelcontextprotocol/sdk zod tsx odbc dotenv 사용하여 MCP 구성 요소를 설치합니다.
  3. 다음을 사용하여 nvm 버전을 설정합니다: nvm alias default 21.1.0

설치

  1. git clone https://github.com/OpenLinkSoftware/mcp-odbc-server.git 실행합니다.
  2. 디렉토리 변경 cd mcp-odbc-server
  3. npm init -y 실행하세요
  4. package.json 파일에 "type":"module" 항목을 추가합니다.
  5. npm install @modelcontextprotocol/sdk zod tsx odbc dotenv 실행하세요.

unixODBC 런타임 환경 검사

  1. odbcinst -j 실행하여 설치 구성(즉, 주요 INI 파일의 위치)을 확인하세요.
  2. 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 형식으로 반환합니다.
실행_쿼리_mdSQL 쿼리를 실행하고 결과를 Markdown 테이블 형식으로 반환합니다.
spasql_querySPASQL 쿼리를 실행하고 결과를 반환합니다.
sparql_querySPARQL 쿼리를 실행하고 결과를 반환합니다.
거장_지원_AIVirtuoso 지원 지원자/에이전트와 상호 작용 - 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 )의 결과를 반환합니다.

기본 설치 테스트 및 문제 해결

  1. 다음 명령을 사용하여 mcp-server 디렉토리/폴더에서 검사기를 시작합니다.
    ODBCINI=/Library/ODBC/odbc.ini npx -y @modelcontextprotocol/inspector npx tsx ./src/main.ts
  2. "연결" 버튼을 클릭한 다음 "도구" 탭을 클릭하여 시작하세요.

MCP 애플리케이션 사용

클로드 데스크톱 구성

이 구성 파일의 경로는 ~{username}/Library/Application Support/Claude/claude_desktop_config.json 입니다.

{ "mcpServers": { "ODBC": { "command": "/path/to/.nvm/versions/node/v21.1.0/bin/node", "args": [ "/path/to/mcp-odbc-server/node_modules/.bin/tsx", "/path/to/mcp-odbc-server/src/main.ts" ], "env": { "ODBCINI": "/Library/ODBC/odbc.ini", "NODE_VERSION": "v21.1.0", "PATH": "~/.nvm/versions/node/v21.1.0/bin:${PATH}" }, "disabled": false, "autoApprove": [] } } }

클로드 데스크톱 사용법

  1. 응용 프로그램을 시작하세요
  2. 설정 | 개발자 사용자 인터페이스를 통해 구성(위에서) 적용
  3. DSN(데이터 원본 이름)에 대한 ODBC 연결이 작동하는지 확인하세요.
  4. 쿼리 실행을 요청하는 프롬프트를 제시합니다. 예: 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

{ "mcpServers": { "ODBC": { "command": "/path/to/.nvm/versions/node/v21.1.0/bin/node", "args": [ "/path/to/mcp-odbc-server/node_modules/.bin/tsx", "/path/to/mcp-odbc-server/src/main.ts" ], "env": { "ODBCINI": "/Library/ODBC/odbc.ini", "NODE_VERSION": "v21.1.0", "PATH": "/path/to/.nvm/versions/node/v21.1.0/bin:${PATH}" }, "disabled": false, "autoApprove": [] } } }

Cline(Visual Studio Extension) 사용법

  1. Shift+Command+P를 사용하여 명령 팔레트를 엽니다.
  2. 입력하세요: Cline
  3. 선택: VSCode 사이드바에서 Cline UI를 여는 Cline View
  4. MCP 서버 설치 및 구성을 위한 UI에 액세스하려면 네 개의 사각형 아이콘을 사용하세요.
  5. Cline Config 적용(위에서)
  6. 확장 프로그램의 기본 UI로 돌아가서 다음 프롬프트의 처리를 요청하는 새 작업을 시작합니다. "다음 쿼리를 실행하세요: SELECT TOP 5 * from Demo..Customers"

커서 구성

설정 기어를 사용하여 mcp servers 등록하고 구성하기 위한 MCP 메뉴 항목이 포함된 구성 메뉴를 엽니다.

커서 사용

  1. Command or Control + I 키 조합을 사용하여 채팅 인터페이스를 엽니다.
  2. UI 왼쪽 하단의 드롭다운에서 Agent 선택하세요. 기본값은 Ask 입니다.
  3. @odbc {rest-of-prompt} 패턴을 사용하여 mcp-server for odbc 사용을 인증하는 프롬프트를 입력합니다.
  4. 프롬프트를 실행하려면 "수락"을 클릭하세요.

관련된

-
security - not tested
F
license - not found
-
quality - not tested

ODBC 커넥터(드라이버)를 통해 접근할 수 있는 모든 데이터베이스 관리 시스템(DBMS)에 일반적인 ODBC(Open Database Connectivity)를 제공합니다.

  1. Server Implementation
    1. Operating Environment Setup & Prerequisites
      1. Key System Components
      2. Installation
      3. unixODBC Runtime Environment Checks
      4. Environment Variables
    2. Usage
      1. Tools
      2. Basic Installation Testing & Troubleshooting
      3. MCP Application Usage
    3. Related
      ID: 4ypqmj472o