Введение
В этом документе описывается настройка и использование универсального сервера 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
, обновите или установите явно с помощью: - Установите компоненты MCP с помощью:
- Установите версию
nvm
с помощью:
Установка
- Бегать
- Изменить каталог
- Бегать
- Бегать
Проверки среды выполнения unixODBC
- Проверьте конфигурацию установки (т. е. расположение ключевых INI-файлов), выполнив:
- Выведите список доступных имен источников данных (DSN), выполнив команду:
Переменные среды
В целях безопасности следует использовать файл .env
, расположенный в том же каталоге, что и mcp-ser
для установки привязок для имени источника данных ODBC ( ODBC_DSN
), пользователя ( ODBC_USER
), пароля ( ODBC_PWD
), ODBC INI ( ODBCINI
) и, если вы хотите использовать OpenLink AI Layer (OPAL) через ODBC, целевого API-ключа большой языковой модели (LLM) ( API_KEY
).
Использование
Инструменты
После успешной установки клиентским приложениям MCP будут доступны следующие инструменты.
Обзор
имя | описание |
---|---|
get_schemas | Перечислить схемы баз данных, доступные для подключенной системы управления базами данных (СУБД). |
get_tables | Список таблиц, связанных с выбранной схемой базы данных. |
describe_table | Предоставьте описание таблицы, связанной с назначенной схемой базы данных. Это включает информацию об именах столбцов, типах данных, обработке null, автоинкременте, первичном ключе и внешних ключах |
filter_table_names | Вывести список таблиц, связанных с выбранной схемой базы данных, на основе шаблона подстроки из поля ввода q . |
query_database | Выполнить SQL-запрос и вернуть результаты в формате строк JSON (JSONL). |
execute_query | Выполнить SQL-запрос и вернуть результаты в формате строк JSON (JSONL). |
execute_query_md | Выполнить SQL-запрос и вернуть результаты в формате таблицы Markdown. |
spasql_query | Выполнить запрос SPASQL и вернуть результаты. |
sparql_query | Выполнить запрос SPARQL и вернуть результаты. |
virtuoso_support_ai | Взаимодействие с помощником/агентом поддержки 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 с помощью следующей команды:
- Нажмите кнопку «Подключиться», затем нажмите вкладку «Инструменты», чтобы начать работу.
Издание инструмента OpenLink MCP Inspector
Это ответвление канонической версии, включающее исправление ошибки обработки JSON, связанной с использованием этого сервера MCP.
- бегать
- бегать
- Введите следующее значение в поле ввода
Arguments
пользовательского интерфейса MCP Inspectors с http://localhost:6274 - Нажмите кнопку
Connect
, чтобы инициализировать сеанс с назначенным сервером MCP.
Совместимость Apple Silicon (ARM64) с проблемами сервера MCP ODBC
Проблема конфликта узлов x86_64 и arm64
Возможно, используется версия node
x86_64, а не arm64, но мост ODBC и сервер MCP являются компонентами на базе arm64.
Эту проблему можно решить, выполнив следующие действия:
- Удалите версию
node
x86_64, выполнив: - Выполните следующую команду, чтобы убедиться, что ваша текущая оболочка находится в режиме arm64:
- если возвращается x86_64, выполните следующую команду, чтобы изменить активный режим:
- если возвращается x86_64, выполните следующую команду, чтобы изменить активный режим:
- Установите версию arm64
node
, выполнив:
Несовместимость уровня моста узла с ODBC
При попытке использовать Model Context Protocol (MCP) ODBC Server на машинах Apple Silicon вы можете столкнуться с ошибками несоответствия архитектуры. Они возникают из-за того, что собственный модуль Node.js ODBC ( odbc.node
) скомпилирован для архитектуры ARM64, но загружается версия среды выполнения unixODBC на базе x86_64.
Типичное сообщение об ошибке:
Эту проблему можно решить, выполнив следующие шаги:
- Убедитесь, что ваш Node.js работает в режиме ARM64:
- Установите unixODBC для ARM64:
- Пересоберите модуль Node.js ODBC для ARM64:
- Убедитесь, что модуль теперь ARM64:
Ключевые моменты
- И 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).
- Представить приглашение на выполнение запроса, например,
Конфигурация 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.
- Примените конфигурацию Клайна (см. выше).
- Вернитесь в основной пользовательский интерфейс расширения и запустите новую задачу, запросив обработку следующего запроса:
Конфигурация курсора
Используйте шестеренку настроек, чтобы открыть меню конфигурации, которое включает пункт меню 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
- -securityAlicense-qualityEnables execution of SQL queries and management of Microsoft SQL Server database connections through the Model Context Protocol.Last updated -10TypeScriptMIT License
- -securityAlicense-qualityAn MCP server that enables MySQL database integration with Claude. You can execute SQL queries and manage database connections.Last updated -1PythonMIT License
- -security-license-qualityA Model Context Protocol server that provides tools for connecting to and interacting with various database systems (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server) through a unified interface.Last updated -Python
- -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 -PythonMIT License
Appeared in Searches
- 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
- A server for connecting AWS infrastructure to a real-time AI-powered dashboard