MCP-сервер ODBC через PyODBC
Легкий сервер MCP (Model Context Protocol) для ODBC, созданный с помощью FastAPI и pyodbc . Этот сервер совместим с Virtuoso DBMS и другими бэкэндами СУБД, имеющими драйвер ODBC.

Функции
Получить схемы : извлечь и составить список всех имен схем из подключенной базы данных.
Получить таблицы : извлечь информацию о таблицах для определенных схем или всех схем.
Опишите таблицу : создайте подробное описание структур таблиц, включая:
Имена столбцов и типы данных
Атрибуты, допускающие значение NULL
Первичные и внешние ключи
Поиск таблиц : фильтрация и извлечение таблиц на основе подстрок имен.
Выполнение хранимых процедур : в случае Virtuoso выполнение хранимых процедур и получение результатов.
Выполнение запросов :
Формат результата JSONL: оптимизирован для структурированных ответов.
Формат таблицы Markdown: идеально подходит для составления отчетов и визуализации.
Предпосылки
Установить УФ :
pip install uvИли используйте Homebrew:
brew install uvПроверки среды выполнения unixODBC :
Проверьте конфигурацию установки (т.е. расположение ключевых INI-файлов), выполнив:
odbcinst -jВыведите список доступных имен источников данных, выполнив команду:
odbcinst -q -sНастройка ODBC DSN : Настройте имя источника данных ODBC (
~/.odbc.ini) для целевой базы данных. Пример для СУБД Virtuoso:[VOS] Description = OpenLink Virtuoso Driver = /path/to/virtodbcu_r.so Database = Demo Address = localhost:1111 WideAsUTF16 = Yes
Установка
Клонируйте этот репозиторий:
Переменные среды
Обновите свой .env , переопределив значения по умолчанию в соответствии со своими предпочтениями.
Конфигурация
Для пользователей Claude Desktop : добавьте следующее в claude_desktop_config.json :
Использование
Предоставляемые инструменты
После успешной установки клиентским приложениям MCP будут доступны следующие инструменты.
Обзор
имя | описание |
podbc_get_schemas | Перечислить схемы баз данных, доступные для подключенной системы управления базами данных (СУБД). |
podbc_get_tables | Список таблиц, связанных с выбранной схемой базы данных. |
podbc_describe_table | Предоставьте описание таблицы, связанной с указанной схемой базы данных. Это включает информацию об именах столбцов, типах данных, обработке нулей, автоинкременте, первичном ключе и внешних ключах |
podbc_filter_table_names | Список таблиц на основе шаблона подстроки из поля ввода
, связанного с выбранной схемой базы данных. |
podbc_query_database | Выполнить SQL-запрос и вернуть результаты в формате JSONL. |
podbc_execute_query | Выполнить SQL-запрос и вернуть результаты в формате JSONL. |
podbc_execute_query_md | Выполнить SQL-запрос и вернуть результаты в формате таблицы Markdown. |
podbc_spasql_query | Выполнить запрос SPASQL и вернуть результаты. |
podbc_sparql_query | Выполнить запрос SPARQL и вернуть результаты. |
podbc_virtuoso_support_ai | Взаимодействие с помощником/агентом поддержки Virtuoso — специфической функцией 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".
Возвращает строку JSON, содержащую информацию о таблице (например, TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE).
podbc_filter_table_names
Фильтрует и возвращает информацию о таблицах, имена которых содержат определенную подстроку.
Входные параметры:
q(строка, обязательно): подстрока для поиска в именах таблиц.schema(строка, необязательно): Схема базы данных для фильтрации таблиц. По умолчанию используется соединение по умолчанию.user(строка, необязательно): Имя пользователя базы данных. По умолчанию "demo".password(строка, необязательно): Пароль базы данных. По умолчанию "demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию "Local Virtuoso".
Возвращает строку JSON, содержащую информацию для сопоставления таблиц.
podbc_describe_table
Извлечение и возврат подробной информации о столбцах определенной таблицы.
Входные параметры:
schema(строка, обязательно): имя схемы базы данных, содержащей таблицу.table(строка, обязательно): Имя таблицы, которую нужно описать.user(строка, необязательно): Имя пользователя базы данных. По умолчанию "demo".password(строка, необязательно): Пароль базы данных. По умолчанию "demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию "Local Virtuoso".
Возвращает строку JSON, описывающую столбцы таблицы (например, COLUMN_NAME, TYPE_NAME, COLUMN_SIZE, IS_NULLABLE).
podbc_query_database
Выполнить стандартный SQL-запрос и вернуть результаты в формате JSON.
Входные параметры:
query(строка, обязательно): Строка SQL-запроса для выполнения.user(строка, необязательно): Имя пользователя базы данных. По умолчанию "demo".password(строка, необязательно): Пароль базы данных. По умолчанию "demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию "Local Virtuoso".
Возвращает результаты запроса в виде строки JSON.
podbc_query_database_md
Выполнить стандартный SQL-запрос и вернуть результаты, отформатированные в виде таблицы Markdown.
Входные параметры:
query(строка, обязательно): Строка SQL-запроса для выполнения.user(строка, необязательно): Имя пользователя базы данных. По умолчанию "demo".password(строка, необязательно): Пароль базы данных. По умолчанию "demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию "Local Virtuoso".
Возвращает результаты запроса в виде строки таблицы Markdown.
podbc_query_database_jsonl
Выполнить стандартный SQL-запрос и вернуть результаты в формате строк JSON (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").
podbc_virtuoso_support_ai
Использует функцию AI Assistant, специфичную для Virtuoso, передавая подсказку и необязательный ключ API. Это специфичная для Virtuoso функция.
Входные параметры:
prompt(строка, обязательно): текст подсказки для функции ИИ.api_key(строка, необязательно): API-ключ для службы AI. По умолчанию "none".user(строка, необязательно): Имя пользователя базы данных. По умолчанию "demo".password(строка, необязательно): Пароль базы данных. По умолчанию "demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию "Local Virtuoso".
Возвращает результат вызова функции AI Support Assistant (например,
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI).
Поиск неисправностей
Для облегчения устранения неполадок:
Установите MCP Inspector:
npm install -g @modelcontextprotocol/inspectorЗапустите инспектор:
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-pyodbc-server run mcp-pyodbc-server
Для устранения неполадок взаимодействия с сервером перейдите по предоставленному URL-адресу.
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Легкий сервер MCP, который обеспечивает доступ к базе данных и выполнение запросов через соединения ODBC, со специальной поддержкой функций СУБД Virtuoso, таких как SPARQL и помощь ИИ с использованием естественного языка.
Related MCP Servers
- Asecurity-licenseAqualityA high-performance MCP server utilizing libSQL for persistent memory and vector search capabilities, enabling efficient entity management and semantic knowledge storage.Last updated -625374MIT License
- -security-license-qualityThe Multi DB MCP Server is a high-performance implementation of the Database Model Context Protocol designed to revolutionize how AI agents interact with databases. Currently supporting MySQL and PostgreSQL databases.Last updated -295MIT License
- -security-license-qualityA FastMCP server that provides natural language interaction with MS SQL databases, enabling users to query data, list tables, describe structures, and execute database operations through a conversational AI interface.Last updated -
- -security-license-qualityMCP-Server from your Database optimized for LLMs and AI-Agents. Supports PostgreSQL, MySQL, ClickHouse, Snowflake, MSSQL, BigQuery, Oracle Database, SQLite, ElasticSearch, DuckDBLast updated -484Apache 2.0