Skip to main content
Glama

Введение

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

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

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

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

Related MCP server: mcp-sqlalchemy

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

Хотя примеры, которые следуют ниже, ориентированы на 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. Нажмите «Принять», чтобы выполнить запрос.

    Редактор курсора

Связанный

A
license - permissive license
-
quality - not tested
F
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    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.
    3
    MIT
  • A
    license
    -
    quality
    F
    maintenance
    A lightweight MCP server that enables database access and querying through ODBC connections, with special support for Virtuoso DBMS features like SPARQL and AI assistance through natural language.
    4
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    A Python MCP server that connects to any ODBC data source and exposes schema discovery + query tools. Read-only by default, write access available per-connection.
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.

  • Explore your Messages SQLite database to browse tables and inspect schemas with ease. Run flexible…

  • Geocode, reverse geocode, and run Overpass spatial queries on OpenStreetMap data.

View all MCP Connectors

Latest Blog Posts

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