MCP PyODBC Server

Official

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Allows interaction with WhatsApp contacts through Claude, leveraging AI capabilities in WhatsApp conversations by connecting to a database backend via ODBC.


PyODBC를 통한 MCP 서버 ODBC

FastAPIpyodbc를 사용하여 구축된 ODBC용 경량 MCP(Model Context Protocol) 서버입니다. 이 서버는 Virtuoso DBMS 및 ODBC 드라이버가 있는 다른 DBMS 백엔드와 호환됩니다.


특징

  • 스키마 가져오기 : 연결된 데이터베이스에서 모든 스키마 이름을 가져와 나열합니다.
  • 테이블 가져오기 : 특정 스키마 또는 모든 스키마에 대한 테이블 정보를 검색합니다.
  • 테이블 설명 : 다음을 포함하여 테이블 구조에 대한 자세한 설명을 생성합니다.
    • 열 이름 및 데이터 유형
    • Null 가능 속성
    • 기본 키와 외래 키
  • 테이블 검색 : 이름 하위 문자열을 기준으로 테이블을 필터링하고 검색합니다.
  • 저장 프로시저 실행 : Virtuoso의 경우 저장 프로시저를 실행하고 결과를 검색합니다.
  • 쿼리 실행 :
    • JSONL 결과 형식: 구조화된 응답에 최적화되었습니다.
    • 마크다운 테이블 형식: 보고 및 시각화에 이상적입니다.

필수 조건

  1. uv 설치 :지엑스피1또는 Homebrew를 사용하세요:
    brew install uv
  2. unixODBC 런타임 환경 검사 :
  3. odbcinst -j 실행하여 설치 구성(즉, 주요 INI 파일의 위치)을 확인하세요.
  4. odbcinst -q -s 실행하여 사용 가능한 데이터 소스 이름을 나열합니다.
  5. ODBC DSN 설정 : 대상 데이터베이스에 대한 ODBC 데이터 원본 이름( ~/.odbc.ini )을 구성합니다. Virtuoso DBMS의 경우:
    [VOS] Description = OpenLink Virtuoso Driver = /path/to/virtodbcu_r.so Database = Demo Address = localhost:1111 WideAsUTF16 = Yes

설치

이 저장소를 복제하세요:

git clone https://github.com/OpenLinkSoftware/mcp-pyodbc-server.git cd mcp-pyodbc-server

환경 변수

기본 설정을 사용자의 선호도에 맞게 재정의하여 .env 를 업데이트하세요.

ODBC_DSN=VOS ODBC_USER=dba ODBC_PASSWORD=dba API_KEY=xxx

구성

Claude Desktop 사용자의 경우: claude_desktop_config.json 에 다음을 추가하세요.

{ "mcpServers": { "my_database": { "command": "uv", "args": ["--directory", "/path/to/mcp-pyodbc-server", "run", "mcp-pyodbc-server"], "env": { "ODBC_DSN": "dsn_name", "ODBC_USER": "username", "ODBC_PASSWORD": "password", "API_KEY": "sk-xxx" } } } }

용법

제공된 도구

성공적으로 설치하면 MCP 클라이언트 애플리케이션에서 다음 도구를 사용할 수 있습니다.

개요

이름설명
podbc_get_schemas연결된 데이터베이스 관리 시스템(DBMS)에서 접근할 수 있는 데이터베이스 스키마를 나열합니다.
podbc_get_tables선택한 데이터베이스 스키마와 연관된 테이블을 나열합니다.
포드비씨_설명_테이블지정된 데이터베이스 스키마와 연결된 테이블에 대한 설명을 제공하세요. 여기에는 열 이름, 데이터 유형, Null 처리, 자동 증가, 기본 키 및 외래 키에 대한 정보가 포함됩니다.
포드bc_필터_테이블_이름선택한 데이터베이스 스키마와 연관된 q 입력 필드의 하위 문자열 패턴을 기반으로 테이블을 나열합니다.
포드bc_쿼리_데이터베이스SQL 쿼리를 실행하고 결과를 JSONL 형식으로 반환합니다.
podbc_execute_querySQL 쿼리를 실행하고 결과를 JSONL 형식으로 반환합니다.
podbc_execute_query_mdSQL 쿼리를 실행하고 결과를 Markdown 테이블 형식으로 반환합니다.
podbc_spasql_querySPASQL 쿼리를 실행하고 결과를 반환합니다.
podbc_sparql_querySPARQL 쿼리를 실행하고 결과를 반환합니다.
포드비씨_거장_지원_AIVirtuoso 지원 지원자/에이전트와 상호 작용 - LLM과 상호 작용하기 위한 Virtuoso 특정 기능

자세한 설명

  • podbc_get_schemas
    • 연결된 데이터베이스에서 모든 스키마 이름 목록을 검색하여 반환합니다.
    • 입력 매개변수:
      • user (문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.
      • password (문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.
      • dsn (문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
    • 스키마 이름의 JSON 문자열 배열을 반환합니다.
  • podbc_get_tables
    • 지정된 스키마의 테이블 정보가 포함된 목록을 검색하여 반환합니다. 스키마가 제공되지 않으면 연결의 기본 스키마를 사용합니다.
    • 입력 매개변수:
      • schema (문자열, 선택 사항): 테이블을 필터링할 데이터베이스 스키마입니다. 기본값은 연결 기본값입니다.
      • user (문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.
      • password (문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.
      • dsn (문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
    • 테이블 정보(예: TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE)를 포함하는 JSON 문자열을 반환합니다.
  • 포드bc_필터_테이블_이름
    • 이름에 특정 하위 문자열이 포함된 테이블에 대한 정보를 필터링하고 반환합니다.
    • 입력 매개변수:
      • 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 문자열을 반환합니다.
  • 포드bc_쿼리_데이터베이스
    • 표준 SQL 쿼리를 실행하고 결과를 JSON 형식으로 반환합니다.
    • 입력 매개변수:
      • query (문자열, 필수): 실행할 SQL 쿼리 문자열입니다.
      • user (문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.
      • password (문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.
      • dsn (문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
    • 쿼리 결과를 JSON 문자열로 반환합니다.
  • 포드bc_쿼리_데이터베이스_md
    • 표준 SQL 쿼리를 실행하고 마크다운 테이블 형식으로 결과를 반환합니다.
    • 입력 매개변수:
      • query (문자열, 필수): 실행할 SQL 쿼리 문자열입니다.
      • user (문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.
      • password (문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.
      • dsn (문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
    • 쿼리 결과를 마크다운 테이블 문자열로 반환합니다.
  • podbc_query_database_jsonl
    • 표준 SQL 쿼리를 실행하고 JSON Lines(JSONL) 형식으로 결과를 반환합니다(줄당 JSON 개체 하나).
    • 입력 매개변수:
      • query (문자열, 필수): 실행할 SQL 쿼리 문자열입니다.
      • user (문자열, 선택 사항): 데이터베이스 사용자 이름입니다. 기본값은 "demo"입니다.
      • password (문자열, 선택 사항): 데이터베이스 비밀번호입니다. 기본값은 "demo"입니다.
      • dsn (문자열, 선택 사항): ODBC 데이터 원본 이름입니다. 기본값은 "Local Virtuoso"입니다.
    • 쿼리 결과를 JSONL 문자열로 반환합니다.
  • podbc_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 )의 결과를 반환합니다.
  • podbc_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 검사기 설치:
    npm install -g @modelcontextprotocol/inspector
  2. 검사기를 시작합니다.
    npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-pyodbc-server run mcp-pyodbc-server

제공된 URL에 접속하여 서버 상호작용 문제를 해결하세요.

-
security - not tested
A
license - permissive license
-
quality - not tested

ODBC 연결을 통해 데이터베이스에 접근하고 쿼리할 수 있는 가벼운 MCP 서버로, SPARQL과 자연어를 통한 AI 지원과 같은 Virtuoso DBMS 기능에 대한 특별한 지원을 제공합니다.

  1. Features
    1. Prerequisites
      1. Installation
        1. Environment Variables
          1. Configuration
            1. Usage
              1. Tools Provided
              2. Troubleshooting
            ID: nryz2kz7w4