Введение
В этом документе описывается настройка и использование универсального сервера ODBC для Model Context Protocol (MCP), называемого сервером mcp-odbc . Он был разработан для предоставления Большим языковым моделям прозрачного доступа к доступным ODBC источникам данных через Имя источника данных, настроенное для определенного ODBC-коннектора (также называемого драйвером ODBC).

Реализация сервера
Этот MCP Server для ODBC представляет собой небольшой слой TypeScript, построенный поверх node-odbc . Он направляет вызовы локальному диспетчеру драйверов ODBC хост-системы через node.js (в частности, используя npx для TypeScript).
Настройка и предварительные условия операционной среды
Хотя примеры, которые следуют ниже, ориентированы на Virtuoso ODBC Connector, это руководство также будет работать с другими ODBC Connector. Мы настоятельно рекомендуем вносить вклад в код и отправлять демонстрационные примеры использования, связанные с другими системами управления базами данных (СУБД), для включения в этот проект.
Ключевые компоненты системы
Проверьте версию
node.jsЕсли она не ниже21.1.0, обновите или установите явно с помощью:nvm install v21.1.0Установите компоненты MCP с помощью:
npm install @modelcontextprotocol/sdk zod tsx odbc dotenvУстановите версию
nvmс помощью:nvm alias default 21.1.0
Установка
Бегать
git clone https://github.com/OpenLinkSoftware/mcp-odbc-server.gitИзменить каталог
cd mcp-odbc-serverБегать
npm init -yБегать
npm install @modelcontextprotocol/sdk zod tsx odbc dotenv
Проверки среды выполнения unixODBC
Проверьте конфигурацию установки (т. е. расположение ключевых INI-файлов), выполнив:
odbcinst -jВыведите список доступных имен источников данных (DSN), выполнив команду:
odbcinst -q -s
Переменные среды
В целях безопасности следует использовать файл .env , расположенный в том же каталоге, что и mcp-ser для установки привязок для имени источника данных ODBC ( ODBC_DSN ), пользователя ( ODBC_USER ), пароля ( ODBC_PWD ), ODBC INI ( ODBCINI ) и, если вы хотите использовать OpenLink AI Layer (OPAL) через ODBC, целевого API-ключа большой языковой модели (LLM) ( API_KEY ).
Использование
Инструменты
После успешной установки клиентским приложениям MCP будут доступны следующие инструменты.
Обзор
имя | описание |
| Перечислить схемы баз данных, доступные для подключенной системы управления базами данных (СУБД). |
| Список таблиц, связанных с выбранной схемой базы данных. |
| Предоставьте описание таблицы, связанной с назначенной схемой базы данных. Это включает информацию об именах столбцов, типах данных, обработке null, автоинкременте, первичном ключе и внешних ключах |
| Вывести список таблиц, связанных с выбранной схемой базы данных, на основе шаблона подстроки из поля ввода
. |
| Выполнить SQL-запрос и вернуть результаты в формате строк JSON (JSONL). |
| Выполнить SQL-запрос и вернуть результаты в формате строк JSON (JSONL). |
| Выполнить SQL-запрос и вернуть результаты в формате таблицы Markdown. |
| Выполнить запрос SPASQL и вернуть результаты. |
| Выполнить запрос SPARQL и вернуть результаты. |
| Взаимодействие с помощником/агентом поддержки Virtuoso — специфическая функция Virtuoso для взаимодействия с LLM |
Подробное описание
get_schemasИзвлечь и вернуть список всех имен схем из подключенной базы данных.
Входные параметры:
user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию"Local Virtuoso".
Возвращает массив строк JSON с именами схем.
get_tablesИзвлечь и вернуть список, содержащий информацию о таблицах в указанной схеме. Если схема не указана, используется схема соединения по умолчанию.
Входные параметры:
schema(строка, необязательно): Схема базы данных для фильтрации таблиц. По умолчанию используется соединение по умолчанию.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию"Local Virtuoso".
Возвращает строку JSON, содержащую информацию о таблице (например,
TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE).
filter_table_namesФильтрует и возвращает информацию о таблицах, имена которых содержат определенную подстроку.
Входные параметры:
q(строка, обязательно): подстрока для поиска в именах таблиц.schema(строка, необязательно): Схема базы данных для фильтрации таблиц. По умолчанию используется соединение по умолчанию.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию"Local Virtuoso".
Возвращает строку JSON, содержащую информацию для сопоставления таблиц.
describe_tableИзвлечение и возврат подробной информации о столбцах определенной таблицы.
Входные параметры:
schema(строка, обязательно): имя схемы базы данных, содержащей таблицу.table(строка, обязательно): Имя таблицы, которую нужно описать.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию"Local Virtuoso".
Возвращает строку JSON, описывающую столбцы таблицы (например,
COLUMN_NAME,TYPE_NAME,COLUMN_SIZE,IS_NULLABLE).
query_databaseВыполнить стандартный SQL-запрос и вернуть результаты в формате JSON.
Входные параметры:
query(строка, обязательно): Строка SQL-запроса для выполнения.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию"Local Virtuoso".
Возвращает результаты запроса в виде строки JSON.
query_database_mdВыполнить стандартный SQL-запрос и вернуть результаты, отформатированные в виде таблицы Markdown.
Входные параметры:
query(строка, обязательно): Строка SQL-запроса для выполнения.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию"Local Virtuoso".
Возвращает результаты запроса в виде строки таблицы Markdown.
query_database_jsonlВыполнить стандартный SQL-запрос и вернуть результаты в формате строк JSON (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, т.е. 30 секунд.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию"Local Virtuoso".
Возвращает результат вызова базовой хранимой процедуры (например,
Demo.demo.execute_spasql_query).
sparql_queryВыполнить запрос SPARQL и вернуть результаты. Это специфическая функция Virtuoso.
Входные параметры:
query(строка, обязательно): строка запроса SPARQL.format(string, необязательно): Желаемый формат результата. По умолчанию'json'.timeout(число, необязательно): Время ожидания запроса в миллисекундах. По умолчанию30000, т.е. 30 секунд.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию"Local Virtuoso".
Возвращает результат вызова базовой функции (например,
"UB".dba."sparqlQuery").
virtuoso_support_aiИспользует функцию AI Assistant, специфичную для Virtuoso, передавая подсказку и необязательный ключ API. Это специфичная для Virtuoso функция.
Входные параметры:
prompt(строка, обязательно): текст подсказки для функции ИИ.api_key(string, необязательно): API-ключ для службы AI. По умолчанию"none".user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".dsn(строка, необязательно): Имя источника данных ODBC. По умолчанию"Local Virtuoso".
Возвращает результат вызова функции AI Support Assistant (например,
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI).
Базовое тестирование установки и устранение неполадок
Инструмент инспектора MCP
Canonical MCP Inspector Tool Edition
Запустите инспектор из каталога/папки mcp-server с помощью следующей команды:
ODBCINI=/Library/ODBC/odbc.ini npx -y @modelcontextprotocol/inspector npx tsx ./src/main.tsНажмите кнопку «Подключиться», затем нажмите вкладку «Инструменты», чтобы начать работу.

Издание инструмента OpenLink MCP Inspector
Это ответвление канонической версии, включающее исправление ошибки обработки JSON, связанной с использованием этого сервера MCP.
бегать
git clone git@github.com:OpenLinkSoftware/inspector.git cd inspectorбегать
npm run startВведите следующее значение в поле ввода
Argumentsпользовательского интерфейса MCP Inspectors с http://localhost:6274tsx /path/to/mcp-odbc-server/src/main.tsНажмите кнопку
Connect, чтобы инициализировать сеанс с назначенным сервером MCP.
Совместимость Apple Silicon (ARM64) с проблемами сервера MCP ODBC
Проблема конфликта узлов x86_64 и arm64
Возможно, используется версия node x86_64, а не arm64, но мост ODBC и сервер MCP являются компонентами на базе arm64.
Эту проблему можно решить, выполнив следующие действия:
Удалите версию
nodex86_64, выполнив:nvm uninstall 21.1.0Выполните следующую команду, чтобы убедиться, что ваша текущая оболочка находится в режиме arm64:
archесли возвращается x86_64, выполните следующую команду, чтобы изменить активный режим:
arch arm64
Установите версию arm64
node, выполнив:nvm install 21.1.0
Несовместимость уровня моста узла с ODBC
При попытке использовать Model Context Protocol (MCP) ODBC Server на машинах Apple Silicon вы можете столкнуться с ошибками несоответствия архитектуры. Они возникают из-за того, что собственный модуль Node.js ODBC ( odbc.node ) скомпилирован для архитектуры ARM64, но загружается версия среды выполнения unixODBC на базе x86_64.
Типичное сообщение об ошибке:
Эту проблему можно решить, выполнив следующие шаги:
Убедитесь, что ваш Node.js работает в режиме ARM64:
node -p "process.arch" # Should output: `arm64`Установите unixODBC для ARM64:
# Verify Homebrew is running in ARM64 mode which brew # Should point to /opt/homebrew/bin/brew # Remove existing unixODBC brew uninstall --force unixodbc # Install ARM64 version arch -arm64 brew install unixodbcПересоберите модуль Node.js ODBC для ARM64:
# Navigate to your project cd /path/to/mcp-odbc-server # Remove existing module rm -rf node_modules/odbc # Set architecture environment variable export npm_config_arch=arm64 # Reinstall with force build npm install odbc --build-from-sourceУбедитесь, что модуль теперь ARM64:
file node_modules/odbc/lib/bindings/napi-v8/odbc.node # Should show "arm64" instead of "x86_64"
Ключевые моменты
И unixODBC, и модуль Node.js ODBC должны быть совместимы с ARM64.
Использование переменных окружения (
export npm_config_arch=arm64) более надежно, чем команды npm config.Всегда проверяйте архитектуру с помощью команды
fileилиnode -p "process.arch"При использовании Homebrew на Apple Silicon команды можно префиксировать с помощью
arch -arm64чтобы принудительно использовать двоичные файлы ARM64.
Использование приложения MCP
Конфигурация рабочего стола Клода
Путь к этому файлу конфигурации: ~{username}/Library/Application Support/Claude/claude_desktop_config.json .
Использование рабочего стола Клода
Запустите приложение.
Примените конфигурацию (см. выше) через Настройки | Интерфейс разработчика.
Убедитесь, что у вас есть работающее ODBC-соединение с именем источника данных (DSN).
Представить приглашение на выполнение запроса, например,
Execute the following query: SELECT TOP * from Demo..Customers
Конфигурация Cline (расширение Visual Studio)
Путь к этому файлу конфигурации: ~{username}/Library/Application\ Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Использование Cline (расширение Visual Studio)
Используйте Shift+Command+P, чтобы открыть палитру команд.
Введите:
Cline.Выберите: Cline View, чтобы открыть пользовательский интерфейс Cline на боковой панели VSCode.
Используйте значок с четырьмя квадратами для доступа к пользовательскому интерфейсу для установки и настройки серверов MCP.
Примените конфигурацию Клайна (см. выше).
Вернитесь в основной пользовательский интерфейс расширения и запустите новую задачу, запросив обработку следующего запроса:
"Execute the following query: SELECT TOP 5 * from Demo..Customers"
Конфигурация курсора
Используйте шестеренку настроек, чтобы открыть меню конфигурации, которое включает пункт меню MCP для регистрации и настройки mcp servers .
Использование курсора
Используйте комбинацию клавиш
Command + IилиControl + I, чтобы открыть интерфейс чата.Выберите
Agentв раскрывающемся списке в левом нижнем углу пользовательского интерфейса, где по умолчанию установленоAsk.Введите приглашение, определяющее использование
mcp-server for odbcиспользуя шаблон:@odbc {rest-of-prompt}.Нажмите «Принять», чтобы выполнить запрос.

Связанный
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.
Обеспечивает универсальное открытое подключение к базам данных (ODBC) к любой системе управления базами данных (СУБД), доступной через соединитель ODBC (драйвер).
Related MCP Servers
- -security-license-qualityUniversal database MCP server connecting to MySQL, PostgreSQL, SQLite, DuckDB and etc.Last updated -31,401MIT License
- -security-license-qualityEnables LLM tools like Claude Desktop to query databases via ODBC connections, allowing access, analysis, and insight generation from database data while maintaining security through read-only safeguards.Last updated -1MIT License
- Asecurity-licenseAqualityProvides SQLAlchemy (via pyodbc) connectivity to any Database Management System (DBMS) that's accessible via SQLAlchemy.Last updated -1115MIT License
- -security-license-qualityOpenLink MCP Server for JDBCLast updated -9MIT License
Appeared in Searches
- System capable of integrating with ERP and other information system databases
- Information about Java programming language or related topics
- Connecting to PostgreSQL database, retrieving table schema, and executing SQL queries
- Information or resources about SQL Server
- Running MySQL Queries Through a MySQL Socket