Skip to main content
Glama

mcp-odbc

Введение

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

mcp-клиент-и-серверы|648x499

Реализация сервера

Этот MCP Server для ODBC представляет собой небольшой слой TypeScript, построенный поверх node-odbc . Он направляет вызовы локальному диспетчеру драйверов ODBC хост-системы через node.js (в частности, используя npx для TypeScript).

Настройка и предварительные условия операционной среды

Хотя примеры, которые следуют ниже, ориентированы на Virtuoso ODBC Connector, это руководство также будет работать с другими ODBC Connector. Мы настоятельно рекомендуем вносить вклад в код и отправлять демонстрационные примеры использования, связанные с другими системами управления базами данных (СУБД), для включения в этот проект.

Ключевые компоненты системы

  1. Проверьте версию node.js Если она не ниже 21.1.0 , обновите или установите явно с помощью:
    nvm install v21.1.0
  2. Установите компоненты MCP с помощью:
    npm install @modelcontextprotocol/sdk zod tsx odbc dotenv
  3. Установите версию nvm с помощью:
    nvm alias default 21.1.0

Установка

  1. Бегать
    git clone https://github.com/OpenLinkSoftware/mcp-odbc-server.git
  2. Изменить каталог
    cd mcp-odbc-server
  3. Бегать
    npm init -y
  4. Бегать
    npm install @modelcontextprotocol/sdk zod tsx odbc dotenv

Проверки среды выполнения unixODBC

  1. Проверьте конфигурацию установки (т. е. расположение ключевых INI-файлов), выполнив:
    odbcinst -j
  2. Выведите список доступных имен источников данных (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 ).

API_KEY=sk-xxx ODBC_DSN=Local Virtuoso ODBC_USER=dba ODBC_PASSWORD=dba ODBCINI=/Library/ODBC/odbc.ini

Использование

Инструменты

После успешной установки клиентским приложениям 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
  1. Запустите инспектор из каталога/папки mcp-server с помощью следующей команды:
    ODBCINI=/Library/ODBC/odbc.ini npx -y @modelcontextprotocol/inspector npx tsx ./src/main.ts
  2. Нажмите кнопку «Подключиться», затем нажмите вкладку «Инструменты», чтобы начать работу.

Это ответвление канонической версии, включающее исправление ошибки обработки JSON, связанной с использованием этого сервера MCP.

  1. бегать
    git clone git@github.com:OpenLinkSoftware/inspector.git cd inspector
  2. бегать
    npm run start
  3. Введите следующее значение в поле ввода Arguments пользовательского интерфейса MCP Inspectors с http://localhost:6274
    tsx /path/to/mcp-odbc-server/src/main.ts
  4. Нажмите кнопку Connect , чтобы инициализировать сеанс с назначенным сервером MCP.

Совместимость Apple Silicon (ARM64) с проблемами сервера MCP ODBC

Проблема конфликта узлов x86_64 и arm64

Возможно, используется версия node x86_64, а не arm64, но мост ODBC и сервер MCP являются компонентами на базе arm64.

Эту проблему можно решить, выполнив следующие действия:

  1. Удалите версию node x86_64, выполнив:
    nvm uninstall 21.1.0
  2. Выполните следующую команду, чтобы убедиться, что ваша текущая оболочка находится в режиме arm64:
    arch
    • если возвращается x86_64, выполните следующую команду, чтобы изменить активный режим:
      arch arm64
  3. Установите версию 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.

Типичное сообщение об ошибке:

Error: dlopen(...odbc.node, 0x0001): tried: '...odbc.node' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64'))

Эту проблему можно решить, выполнив следующие шаги:

  1. Убедитесь, что ваш Node.js работает в режиме ARM64:
    node -p "process.arch" # Should output: `arm64`
  2. Установите 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
  3. Пересоберите модуль 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
  4. Убедитесь, что модуль теперь 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 .

{ "mcpServers": { "ODBC": { "command": "/path/to/.nvm/versions/node/v21.1.0/bin/node", "args": [ "/path/to/mcp-odbc-server/node_modules/.bin/tsx", "/path/to/mcp-odbc-server/src/main.ts" ], "env": { "ODBCINI": "/Library/ODBC/odbc.ini", "NODE_VERSION": "v21.1.0", "PATH": "~/.nvm/versions/node/v21.1.0/bin:${PATH}" }, "disabled": false, "autoApprove": [] } } }

Использование рабочего стола Клода

  1. Запустите приложение.
  2. Примените конфигурацию (см. выше) через Настройки | Интерфейс разработчика.
  3. Убедитесь, что у вас есть работающее ODBC-соединение с именем источника данных (DSN).
  4. Представить приглашение на выполнение запроса, например,
    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

{ "mcpServers": { "ODBC": { "command": "/path/to/.nvm/versions/node/v21.1.0/bin/node", "args": [ "/path/to/mcp-odbc-server/node_modules/.bin/tsx", "/path/to/mcp-odbc-server/src/main.ts" ], "env": { "ODBCINI": "/Library/ODBC/odbc.ini", "NODE_VERSION": "v21.1.0", "PATH": "/path/to/.nvm/versions/node/v21.1.0/bin:${PATH}" }, "disabled": false, "autoApprove": [] } } }

Использование Cline (расширение Visual Studio)

  1. Используйте Shift+Command+P, чтобы открыть палитру команд.
  2. Введите: Cline .
  3. Выберите: Cline View, чтобы открыть пользовательский интерфейс Cline на боковой панели VSCode.
  4. Используйте значок с четырьмя квадратами для доступа к пользовательскому интерфейсу для установки и настройки серверов MCP.
  5. Примените конфигурацию Клайна (см. выше).
  6. Вернитесь в основной пользовательский интерфейс расширения и запустите новую задачу, запросив обработку следующего запроса:
    "Execute the following query: SELECT TOP 5 * from Demo..Customers"

Конфигурация курсора

Используйте шестеренку настроек, чтобы открыть меню конфигурации, которое включает пункт меню MCP для регистрации и настройки mcp servers .

Использование курсора

  1. Используйте комбинацию клавиш Command + I или Control + I , чтобы открыть интерфейс чата.
  2. Выберите Agent в раскрывающемся списке в левом нижнем углу пользовательского интерфейса, где по умолчанию установлено Ask .
  3. Введите приглашение, определяющее использование mcp-server for odbc используя шаблон: @odbc {rest-of-prompt} .
  4. Нажмите «Принять», чтобы выполнить запрос.

Связанный

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

local-only server

The server can only run on the client's local machine because it depends on local resources.

Обеспечивает универсальное открытое подключение к базам данных (ODBC) к любой системе управления базами данных (СУБД), доступной через соединитель ODBC (драйвер).

  1. Реализация сервера
    1. Настройка и предварительные условия операционной среды
      1. Ключевые компоненты системы
      2. Установка
      3. Проверки среды выполнения unixODBC
      4. Переменные среды
    2. Использование
      1. Инструменты
      2. Базовое тестирование установки и устранение неполадок
      3. Использование приложения MCP
    3. Связанный

      Related MCP Servers

      • -
        security
        A
        license
        -
        quality
        Enables execution of SQL queries and management of Microsoft SQL Server database connections through the Model Context Protocol.
        Last updated -
        10
        TypeScript
        MIT License
        • Apple
        • Linux
      • -
        security
        A
        license
        -
        quality
        An MCP server that enables MySQL database integration with Claude. You can execute SQL queries and manage database connections.
        Last updated -
        1
        Python
        MIT License
        • Apple
      • -
        security
        -
        license
        -
        quality
        A 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
        -
        quality
        Enables 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 -
        Python
        MIT License

      View all related MCP servers

      MCP directory API

      We provide all the information about MCP servers via our MCP API.

      curl -X GET 'https://glama.ai/api/mcp/v1/servers/OpenLinkSoftware/mcp-odbc-server'

      If you have feedback or need assistance with the MCP directory API, please join our Discord server