SQLAlchemy를 통한 MCP 서버 ODBC
FastAPI , pyodbc 및 SQLAlchemy를 기반으로 구축된 ODBC용 경량 MCP(Model Context Protocol) 서버입니다. 이 서버는 Virtuoso DBMS 및 SQLAlchemy 공급자를 구현하는 다른 DBMS 백엔드와 호환됩니다.

특징
스키마 가져오기 : 연결된 데이터베이스에서 모든 스키마 이름을 가져와 나열합니다.
테이블 가져오기 : 특정 스키마 또는 모든 스키마에 대한 테이블 정보를 검색합니다.
테이블 설명 : 다음을 포함하여 테이블 구조에 대한 자세한 설명을 생성합니다.
열 이름 및 데이터 유형
Null 가능 속성
기본 키와 외래 키
테이블 검색 : 이름 하위 문자열을 기준으로 테이블을 필터링하고 검색합니다.
저장 프로시저 실행 : Virtuoso의 경우 저장 프로시저를 실행하고 결과를 검색합니다.
쿼리 실행 :
JSONL 결과 형식: 구조화된 응답에 최적화되었습니다.
마크다운 테이블 형식: 보고 및 시각화에 이상적입니다.
Related MCP server: MySql MCP Server
필수 조건
uv 설치 :
지엑스피1
또는 Homebrew를 사용하세요:
brew install uvunixODBC 런타임 환경 검사 :
odbcinst -j실행하여 설치 구성(즉, 주요 INI 파일의 위치)을 확인하세요.odbcinst -q -s실행하여 사용 가능한 데이터 소스 이름을 나열합니다.ODBC DSN 설정 : 대상 데이터베이스에 대한 ODBC 데이터 원본 이름(
~/.odbc.ini)을 구성합니다. Virtuoso DBMS의 경우:[VOS] Description = OpenLink Virtuoso Driver = /path/to/virtodbcu_r.so Database = Demo Address = localhost:1111 WideAsUTF16 = YesSQLAlchemy URL 바인딩 : 다음 형식을 사용하세요.
virtuoso+pyodbc://user:password@VOS
설치
이 저장소를 복제하세요:
환경 변수
기본 설정을 사용자의 선호도에 맞게 재정의하여 .env 를 업데이트하세요.
구성
Claude Desktop 사용자의 경우: claude_desktop_config.json 에 다음을 추가하세요.
용법
데이터베이스 관리 시스템(DBMS) 연결 URL
이 mcp-server를 사용하여 테스트된 DBMS 시스템에 연결하기 위한 pyodbc URL 예는 다음과 같습니다.
데이터 베이스 | URL 형식 |
거장 DBMS |
|
포스트그레스큐엘 |
|
MySQL |
|
SQLite |
|
연결되면 Claude를 통해 WhatsApp 연락처와 상호 작용할 수 있으며, WhatsApp 대화에서 Claude의 AI 기능을 활용할 수 있습니다. |
제공된 도구
개요
이름 | 설명 |
podbc_get_schemas | 연결된 데이터베이스 관리 시스템(DBMS)에서 접근할 수 있는 데이터베이스 스키마를 나열합니다. |
podbc_get_tables | 선택한 데이터베이스 스키마와 연관된 테이블을 나열합니다. |
포드비씨_설명_테이블 | 지정된 데이터베이스 스키마와 연결된 테이블에 대한 설명을 제공하세요. 여기에는 열 이름, 데이터 유형, Null 처리, 자동 증가, 기본 키 및 외래 키에 대한 정보가 포함됩니다. |
포드bc_필터_테이블_이름 | 선택한 데이터베이스 스키마와 연관된
입력 필드의 하위 문자열 패턴을 기반으로 테이블을 나열합니다. |
포드bc_쿼리_데이터베이스 | SQL 쿼리를 실행하고 결과를 JSONL 형식으로 반환합니다. |
podbc_execute_query | SQL 쿼리를 실행하고 결과를 JSONL 형식으로 반환합니다. |
podbc_execute_query_md | SQL 쿼리를 실행하고 결과를 마크다운 테이블 형식으로 반환합니다. |
podbc_spasql_query | SPASQL 쿼리를 실행하고 결과를 반환합니다. |
podbc_sparql_query | SPARQL 쿼리를 실행하고 결과를 반환합니다. |
포드비씨_거장_지원_AI | Virtuoso 지원 지원자/에이전트와 상호 작용 - 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)의 결과를 반환합니다.
문제 해결
더 쉽게 문제를 해결하려면 다음을 수행하세요.
MCP 검사기 설치:
npm install -g @modelcontextprotocol/inspector검사기를 시작합니다.
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-sqlalchemy-server run mcp-sqlalchemy-server
제공된 URL에 접속하여 서버 상호작용 문제를 해결하세요.