Сервер Model Context Procotol (MCP) на основе Java для JDBC
Легкий сервер MCP (Model Context Protocol) для JDBC, созданный с помощью Quakrus . Этот сервер совместим с СУБД Virtuoso и другими бэкэндами СУБД, имеющими драйверы JDBC.

Функции
Получить схемы : извлечь и составить список всех имен схем из подключенной базы данных.
Получить таблицы : извлечь информацию о таблицах для определенных схем или всех схем.
Опишите таблицу : создайте подробное описание структур таблиц, включая:
Имена столбцов и типы данных
Атрибуты, допускающие значение NULL
Первичные и внешние ключи
Поиск таблиц : фильтрация и извлечение таблиц на основе подстрок имен.
Выполнение хранимых процедур : специфическая функция Virtuoso! Выполнение хранимых процедур и получение результатов.
Выполнение запросов :
Формат результата JSONL: оптимизирован для структурированных ответов.
Формат таблицы Markdown: идеально подходит для составления отчетов и визуализации.
Related MCP server: Joomla MCP Server
Предпосылки
Для сервера MCP требуется Java 21 или выше.
Установка
Клонируйте этот репозиторий:
Переменные среды
Обновите свой .env , переопределив эти значения по умолчанию в соответствии со своими предпочтениями:
Конфигурация
Для пользователей Claude Desktop : добавьте следующее в claude_desktop_config.json :
Для пользователей Claude Desktop, использующих другие драйверы JDBC или комбинацию драйверов: добавьте следующее в claude_desktop_config.json :
Использовать
Предоставляемые инструменты
После успешной установки клиентским приложениям MCP будут доступны следующие инструменты.
Обзор
имя | описание |
| Перечислить схемы баз данных, доступные для подключенной системы управления базами данных (СУБД). |
| Список таблиц, связанных с выбранной схемой базы данных. |
| Предоставьте описание таблицы, связанной с указанной схемой базы данных. Это включает информацию об именах столбцов, типах данных, обработке нулей, автоинкременте, первичном ключе и внешних ключах. |
| Список таблиц на основе шаблона подстроки из поля ввода |
| Выполнить SQL-запрос и вернуть результаты в формате JSONL. |
| Выполнить SQL-запрос и вернуть результаты в формате JSONL. |
| Выполнить SQL-запрос и вернуть результаты в формате таблицы Markdown. |
| Специфическая функция Virtuoso! Выполнение запроса SPASQL и возврат результатов. |
| Специфическая функция Virtuoso! Выполнение запроса SPARQL и возврат результатов. |
| Специальная функция Virtuoso! Взаимодействуйте с LLM через помощника/агента поддержки Virtuoso. |
Подробное описание
jdbc_get_schemasИзвлечь и вернуть список всех имен схем из подключенной базы данных.
Входные параметры:
user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".url(строка, необязательно): строка подключения URL-адреса JDBC.
Возвращает массив строк JSON с именами схем.
jdbc_get_tablesИзвлечь и вернуть список, содержащий информацию о таблицах в указанной схеме. Если схема не указана, используется схема соединения по умолчанию.
Входные параметры:
schema(строка, необязательно): Схема базы данных для фильтрации таблиц. По умолчанию используется соединение по умолчанию.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".url(строка, необязательно): строка подключения URL-адреса JDBC.
Возвращает строку JSON, содержащую информацию о таблице (например,
TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE).
jdbc_filter_table_namesФильтрует и возвращает информацию о таблицах, имена которых содержат определенную подстроку.
Входные параметры:
q(строка, обязательно): подстрока для поиска в именах таблиц.schema(строка, необязательно): Схема базы данных для фильтрации таблиц. По умолчанию используется соединение по умолчанию.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".url(строка, необязательно): строка подключения URL-адреса JDBC.
Возвращает строку JSON, содержащую информацию для сопоставления таблиц.
jdbc_describe_tableИзвлечение и возврат подробной информации о столбцах определенной таблицы.
Входные параметры:
schema(строка, обязательно): имя схемы базы данных, содержащей таблицу.table(строка, обязательно): Имя таблицы, которую нужно описать.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".url(строка, необязательно): строка подключения URL-адреса JDBC.
Возвращает строку JSON, описывающую столбцы таблицы (например,
COLUMN_NAME,TYPE_NAME,COLUMN_SIZE,IS_NULLABLE).
jdbc_query_databaseВыполнить стандартный SQL-запрос и вернуть результаты в формате JSON.
Входные параметры:
query(строка, обязательно): строка SQL-запроса для выполнения.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".url(строка, необязательно): строка подключения URL-адреса JDBC.
Возвращает результаты запроса в виде строки JSON.
jdbc_query_database_mdВыполнить стандартный SQL-запрос и вернуть результаты, отформатированные в виде таблицы Markdown.
Входные параметры:
query(строка, обязательно): строка SQL-запроса для выполнения.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".url(строка, необязательно): строка подключения URL-адреса JDBC.
Возвращает результаты запроса в виде строки таблицы Markdown.
jdbc_query_database_jsonlВыполнить стандартный SQL-запрос и вернуть результаты в формате строк JSON (JSONL) (один объект JSON на строку).
Входные параметры:
query(строка, обязательно): строка SQL-запроса для выполнения.user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".url(строка, необязательно): строка подключения URL-адреса JDBC.
Возвращает результаты запроса в виде строки JSONL.
jdbc_spasql_queryСпецифическая функция Virtuoso!
Выполнение запроса SPASQL (гибрид SQL/SPARQL) с возвратом результатов.
Входные параметры:
query(строка, обязательно): строка запроса SPASQL.max_rows(число, необязательно): Максимальное количество возвращаемых строк. По умолчанию20.timeout(число, необязательно): Тайм-аут запроса в миллисекундах. По умолчанию30000(т.е. 30 секунд).user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".url(строка, необязательно): строка подключения URL-адреса JDBC.
Возвращает результат вызова базовой хранимой процедуры (например,
Demo.demo.execute_spasql_query).
jdbc_sparql_queryСпецифическая функция Virtuoso!
Выполнить запрос SPARQL и вернуть результаты.
Входные параметры:
query(строка, обязательно): строка запроса SPARQL.format(string, необязательно): Желаемый формат результата. По умолчанию'json'.timeout(число, необязательно): Тайм-аут запроса в миллисекундах. По умолчанию30000(т.е. 30 секунд).user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".url(строка, необязательно): строка подключения URL-адреса JDBC.
Возвращает результат вызова базовой функции (например,
"UB".dba."sparqlQuery").
jdbc_virtuoso_support_aiСпецифическая функция Virtuoso!
Использует специфичную для Virtuoso функцию AI Assistant, передавая подсказку и необязательный ключ API.
Входные параметры:
prompt(строка, обязательно): текст подсказки для функции ИИ.api_key(string, необязательно): API-ключ для службы AI. По умолчанию"none".user(строка, необязательно): Имя пользователя базы данных. По умолчанию"demo".password(строка, необязательно): Пароль базы данных. По умолчанию"demo".url(строка, необязательно): строка подключения URL-адреса JDBC.
Возвращает результат вызова функции AI Support Assistant (например,
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI).
Базовое использование и устранение неполадок
MCP Inspector подключается к драйверу ODBC Virtuoso
Для базового использования клиента MCP и устранения неполадок используйте MCP Inspector следующим образом:
Установите MCP Inspector:
npm install -g @modelcontextprotocol/inspectorЗапустите инспектор:
npx @modelcontextprotocol/inspector java -jar /path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar
Перейдите по URL-адресу, возвращенному инспектором, для устранения неполадок взаимодействия с сервером MCP.
MCP Inspector Подключение к дополнительным драйверам
Для базового использования клиента MCP и устранения неполадок используйте MCP Inspector следующим образом:
Установите драйвер(ы) JDBC, убедившись, что их файлы JAR зарегистрированы в виртуальной машине Java (JVM) операционной системы хоста через
$CLASSPATH. Например:export CLASSPATH=$CLASSPATH:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jarЗапустите инспектор, используя следующие аргументы командной строки:
npx @modelcontextprotocol/inspector java -cp MCPServer-1.0.0-runner.jar:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jar io.quarkus.runner.GeneratedMain
Пример использования на основе драйверов Oracle и Informix
Предположим, что имеется следующая информация о драйвере JDBC:
Шаблон URL-адреса драйвера Oracle JDBC
jdbc:oracle:thin:@<hostname>:[port]:<SERVICEID>Шаблон URL-адреса драйвера Informix JDBC
jdbc:informix-sqli://<hostname>:<port>/<database></database>:<INFORMIXSERVER>=<SERVICEID>
Установите драйверы JDBC Oracle (
ojdbc17.jar) и/или Informix (jdbc-15.0.0.1.1.jar) и убедитесь, что их файлы JAR зарегистрированы в виртуальной машине Java (JVM) операционной системы хоста через$CLASSPATH. Например:export CLASSPATH=$CLASSPATH:/path/to/Java/Extensions/jdbc-15.0.0.1.1.jar export CLASSPATH=$CLASSPATH:/path/to/Java/Extensions/ojdbc17.jarЗапустите инспектор, используя следующие аргументы командной строки:
npx @modelcontextprotocol/inspector java -cp MCPServer-1.0.0-runner.jar:/path/to/Java/Extensions/ojdbc17.jar:/path/to/Java/Extensions/jdbc-15.0.0.1.1.jar io.quarkus.runner.GeneratedMainПолучите доступ к URL-адресу, возвращенному инспектором, а затем используйте операцию
jdbc_execute_queryдля запроса целевой базы данных, указав фактические значения для следующих шаблонов полей ввода:URL-адрес JDBC
Пользователь
Пароль
Запрос