Skip to main content
Glama

OpenLink MCP Server for JDBC

Official

Servidor de protocolo de contexto de modelo (MCP) basado en Java para JDBC

Un servidor MCP (Protocolo de Contexto de Modelo) ligero para JDBC, desarrollado con Quakrus . Este servidor es compatible con Virtuoso DBMS y otros backends DBMS con controladores JDBC.

cliente-y-servidores-mcp|648x499


Características

  • Obtener esquemas : obtiene y enumera todos los nombres de esquemas de la base de datos conectada.
  • Obtener tablas : recupera información de la tabla para esquemas específicos o todos los esquemas.
  • Describir tabla : genere una descripción detallada de las estructuras de tabla, incluyendo:
    • Nombres de columnas y tipos de datos
    • Atributos que aceptan valores nulos
    • Claves primarias y externas
  • Tablas de búsqueda : filtre y recupere tablas según subcadenas de nombre.
  • Ejecutar procedimientos almacenados : ¡Una función exclusiva de Virtuoso! Ejecute procedimientos almacenados y recupere resultados.
  • Ejecutar consultas :
    • Formato de resultado JSONL: optimizado para respuestas estructuradas.
    • Formato de tabla Markdown: ideal para informes y visualización.

Prerrequisitos

El servidor MCP requiere Java 21 o superior.


Instalación

Clonar este repositorio:

git clone https://github.com/OpenLinkSoftware/mcp-jdbc-server.git cd mcp-jdbc-server

Variables de entorno

Actualice su .env anulando estos valores predeterminados para que coincidan con sus preferencias:

jdbc.url=jdbc:virtuoso://localhost:1111 jdbc.user=dba jdbc.password=dba jdbc.api_key=xxx

Configuración

Para usuarios de Claude Desktop : agregue lo siguiente a claude_desktop_config.json :

{ "mcpServers": { "my_database": { "command": "java", "args": ["-jar", "/path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar"], "env": { "jdbc.url": "jdbc:virtuoso://localhost:1111", "jdbc.user": "username", "jdbc.password": "password", "jdbc.api_key": "sk-xxx" } } } }

Para los usuarios de Claude Desktop que utilizan otros controladores JDBC o una combinación de controladores: agregue lo siguiente a claude_desktop_config.json :

"jdbc": { "command": "java", "args": [ "-cp", "/path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar:/path/to/jdbc_driver1.jar:/path/to/jdbc_driverN.jar", "io.quarkus.runner.GeneratedMain" ], "env": { "jdbc.url": "jdbc:virtuoso://localhost:1111", "jdbc.user": "dba", "jdbc.password": "dba" } }

Usar

Herramientas proporcionadas

Después de una instalación exitosa, las siguientes herramientas estarán disponibles para las aplicaciones cliente de MCP.

Descripción general
nombredescripción
jdbc_get_schemasEnumere los esquemas de bases de datos accesibles al sistema de administración de bases de datos (DBMS) conectado.
jdbc_get_tablesEnumere las tablas asociadas con un esquema de base de datos seleccionado.
jdbc_describe_tableProporcione la descripción de una tabla asociada a un esquema de base de datos designado. Esto incluye información sobre nombres de columnas, tipos de datos, gestión de valores nulos, autoincremento, clave principal y claves foráneas.
jdbc_filter_table_namesEnumere tablas basadas en un patrón de subcadena del campo de entrada q , asociado con un esquema de base de datos seleccionado.
jdbc_query_databaseEjecuta una consulta SQL y devuelve resultados en formato JSONL.
jdbc_execute_queryEjecuta una consulta SQL y devuelve resultados en formato JSONL.
jdbc_execute_query_mdEjecuta una consulta SQL y devuelve los resultados en formato de tabla Markdown.
jdbc_spasql_query¡Una función específica de Virtuoso! Ejecuta una consulta SPASQL y devuelve resultados.
jdbc_sparql_query¡Una función específica de Virtuoso! Ejecuta una consulta SPARQL y devuelve resultados.
jdbc_virtuoso_support_ai¡Una función exclusiva de Virtuoso! Interactúa con los LLM a través del Asistente/Agente de Soporte de Virtuoso.
Descripción detallada
  • jdbc_get_schemas
    • Recupere y devuelva una lista de todos los nombres de esquemas de la base de datos conectada.
    • Parámetros de entrada:
      • user (cadena, opcional): nombre de usuario de la base de datos. El valor predeterminado es "demo" .
      • password (cadena, opcional): Contraseña de la base de datos. El valor predeterminado es "demo" .
      • url (cadena, opcional): cadena de conexión URL JDBC.
    • Devuelve una matriz de cadenas JSON de nombres de esquemas.
  • jdbc_get_tables
    • Recupera y devuelve una lista con información sobre las tablas de un esquema especificado. Si no se proporciona ningún esquema, se utiliza el esquema predeterminado de la conexión.
    • Parámetros de entrada:
      • schema (cadena, opcional): Esquema de base de datos para filtrar tablas. El valor predeterminado es el valor de conexión.
      • user (cadena, opcional): nombre de usuario de la base de datos. El valor predeterminado es "demo" .
      • password (cadena, opcional): Contraseña de la base de datos. El valor predeterminado es "demo" .
      • url (cadena, opcional): cadena de conexión URL JDBC.
    • Devuelve una cadena JSON que contiene información de la tabla (por ejemplo, TABLE_CAT , TABLE_SCHEM , TABLE_NAME , TABLE_TYPE ).
  • jdbc_filter_table_names
    • Filtra y devuelve información sobre las tablas cuyos nombres contienen una subcadena específica.
    • Parámetros de entrada:
      • q (cadena, obligatoria): la subcadena que se buscará dentro de los nombres de las tablas.
      • schema (cadena, opcional): Esquema de base de datos para filtrar tablas. El valor predeterminado es el valor de conexión.
      • user (cadena, opcional): nombre de usuario de la base de datos. El valor predeterminado es "demo" .
      • password (cadena, opcional): Contraseña de la base de datos. El valor predeterminado es "demo" .
      • url (cadena, opcional): cadena de conexión URL JDBC.
    • Devuelve una cadena JSON que contiene información para las tablas coincidentes.
  • jdbc_describe_table
    • Recupere y devuelva información detallada sobre las columnas de una tabla específica.
    • Parámetros de entrada:
      • schema (cadena, obligatorio): el nombre del esquema de la base de datos que contiene la tabla.
      • table (cadena, obligatoria): el nombre de la tabla a describir.
      • user (cadena, opcional): nombre de usuario de la base de datos. El valor predeterminado es "demo" .
      • password (cadena, opcional): Contraseña de la base de datos. El valor predeterminado es "demo" .
      • url (cadena, opcional): cadena de conexión URL JDBC.
    • Devuelve una cadena JSON que describe las columnas de la tabla (por ejemplo, COLUMN_NAME , TYPE_NAME , COLUMN_SIZE , IS_NULLABLE ).
  • jdbc_query_database
    • Ejecuta una consulta SQL estándar y devuelve los resultados en formato JSON.
    • Parámetros de entrada:
      • query (cadena, obligatoria): la cadena de consulta SQL que se ejecutará.
      • user (cadena, opcional): nombre de usuario de la base de datos. El valor predeterminado es "demo" .
      • password (cadena, opcional): Contraseña de la base de datos. El valor predeterminado es "demo" .
      • url (cadena, opcional): cadena de conexión URL JDBC.
    • Devuelve los resultados de la consulta como una cadena JSON.
  • jdbc_query_database_md
    • Ejecute una consulta SQL estándar y devuelva los resultados formateados como una tabla Markdown.
    • Parámetros de entrada:
      • query (cadena, obligatoria): la cadena de consulta SQL que se ejecutará.
      • user (cadena, opcional): nombre de usuario de la base de datos. El valor predeterminado es "demo" .
      • password (cadena, opcional): Contraseña de la base de datos. El valor predeterminado es "demo" .
      • url (cadena, opcional): cadena de conexión URL JDBC.
    • Devuelve los resultados de la consulta como una cadena de tabla Markdown.
  • jdbc_query_database_jsonl
    • Ejecuta una consulta SQL estándar y devuelve los resultados en formato de líneas JSON (JSONL) (un objeto JSON por línea).
    • Parámetros de entrada:
      • query (cadena, obligatoria): la cadena de consulta SQL que se ejecutará.
      • user (cadena, opcional): nombre de usuario de la base de datos. El valor predeterminado es "demo" .
      • password (cadena, opcional): Contraseña de la base de datos. El valor predeterminado es "demo" .
      • url (cadena, opcional): cadena de conexión URL JDBC.
    • Devuelve los resultados de la consulta como una cadena JSONL.
  • jdbc_spasql_query
    • ¡Una característica específica de Virtuoso!
    • Ejecute una consulta SPASQL (híbrida SQL/SPARQL) y devuelva resultados.
    • Parámetros de entrada:
      • query (cadena, obligatoria): la cadena de consulta SPASQL.
      • max_rows (número, opcional): Número máximo de filas a devolver. El valor predeterminado es 20 .
      • timeout (número, opcional): Tiempo de espera de la consulta en milisegundos. El valor predeterminado es 30000 (es decir, 30 segundos).
      • user (cadena, opcional): nombre de usuario de la base de datos. El valor predeterminado es "demo" .
      • password (cadena, opcional): Contraseña de la base de datos. El valor predeterminado es "demo" .
      • url (cadena, opcional): cadena de conexión URL JDBC.
    • Devuelve el resultado de la llamada al procedimiento almacenado subyacente (por ejemplo, Demo.demo.execute_spasql_query ).
  • jdbc_sparql_query
    • ¡Una característica específica de Virtuoso!
    • Ejecutar una consulta SPARQL y devolver resultados.
    • Parámetros de entrada:
      • query (cadena, obligatoria): la cadena de consulta SPARQL.
      • format (cadena, opcional): formato del resultado deseado. El valor predeterminado es 'json' .
      • timeout (número, opcional): Tiempo de espera de la consulta en milisegundos. El valor predeterminado es 30000 (es decir, 30 segundos).
      • user (cadena, opcional): nombre de usuario de la base de datos. El valor predeterminado es "demo" .
      • password (cadena, opcional): Contraseña de la base de datos. El valor predeterminado es "demo" .
      • url (cadena, opcional): cadena de conexión URL JDBC.
    • Devuelve el resultado de la llamada de función subyacente (por ejemplo, "UB".dba."sparqlQuery" ).
  • jdbc_virtuoso_support_ai
    • ¡Una característica específica de Virtuoso!
    • Utiliza una función de asistente de inteligencia artificial específica de Virtuoso, pasando un mensaje y una clave API opcional.
    • Parámetros de entrada:
      • prompt (cadena, obligatorio): el texto de solicitud para la función AI.
      • api_key (cadena, opcional): Clave de API para el servicio de IA. El valor predeterminado es "none" .
      • user (cadena, opcional): nombre de usuario de la base de datos. El valor predeterminado es "demo" .
      • password (cadena, opcional): Contraseña de la base de datos. El valor predeterminado es "demo" .
      • url (cadena, opcional): cadena de conexión URL JDBC.
    • Devuelve el resultado de la llamada a la función AI Support Assistant (por ejemplo, DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI ).

Uso básico y solución de problemas

Conexión del inspector MCP al controlador ODBC de Virtuoso

Para el uso básico del cliente MCP y la resolución de problemas, utilice el Inspector MCP de la siguiente manera:

  1. Instalar el Inspector MCP:
    npm install -g @modelcontextprotocol/inspector
  2. Iniciar el inspector:
    npx @modelcontextprotocol/inspector java -jar /path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar

Acceda a la URL devuelta por el inspector para solucionar problemas de interacciones con el servidor MCP.

Inspector MCP Conexión a controladores adicionales

Para el uso básico del cliente MCP y la resolución de problemas, utilice el Inspector MCP de la siguiente manera:

  1. Instale el/los controlador(es) JDBC, asegurándose de que sus archivos JAR estén registrados en la Máquina Virtual Java (JVM) del sistema operativo host mediante $CLASSPATH . Por ejemplo:
    export CLASSPATH=$CLASSPATH:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jar
  2. Inicie el inspector utilizando los siguientes argumentos de la línea de comandos:
    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
Utilice un ejemplo basado en los controladores Oracle e Informix
  1. Suponiendo la siguiente información del controlador JDBC:
    • Plantilla de URL del controlador JDBC de Oracle
      jdbc:oracle:thin:@<hostname>:[port]:<SERVICEID>
    • Plantilla de URL del controlador JDBC de Informix
      jdbc:informix-sqli://<hostname>:<port>/<database></database>:<INFORMIXSERVER>=<SERVICEID>
  2. Instale los controladores JDBC de Oracle ( ojdbc17.jar ) o Informix ( jdbc-15.0.0.1.1.jar ) y asegúrese de que sus archivos JAR estén registrados en la máquina virtual Java (JVM) del sistema operativo host mediante $CLASSPATH . Por ejemplo:
    export CLASSPATH=$CLASSPATH:/path/to/Java/Extensions/jdbc-15.0.0.1.1.jar export CLASSPATH=$CLASSPATH:/path/to/Java/Extensions/ojdbc17.jar
  3. Inicie el inspector utilizando los siguientes argumentos de la línea de comandos:
    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
  4. Acceda a la URL devuelta por el inspector y luego utilice la operación jdbc_execute_query para consultar la base de datos de destino, proporcionando valores reales para las siguientes plantillas de campo de entrada:
    • URL de JDBC
    • Usuario
    • Contraseña
    • Consulta
-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Servidor MCP de OpenLink para JDBC

  1. Características
    1. Prerrequisitos
      1. Instalación
        1. Variables de entorno
          1. Configuración
            1. Usar
              1. Herramientas proporcionadas
              2. Uso básico y solución de problemas

            Related MCP Servers

            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-jdbc-server'

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