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.
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:
Variables de entorno
Actualice su .env
anulando estos valores predeterminados para que coincidan con sus preferencias:
Configuración
Para usuarios de Claude Desktop : agregue lo siguiente a claude_desktop_config.json
:
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
:
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
nombre | descripción |
---|---|
jdbc_get_schemas | Enumere los esquemas de bases de datos accesibles al sistema de administración de bases de datos (DBMS) conectado. |
jdbc_get_tables | Enumere las tablas asociadas con un esquema de base de datos seleccionado. |
jdbc_describe_table | Proporcione 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_names | Enumere tablas basadas en un patrón de subcadena del campo de entrada q , asociado con un esquema de base de datos seleccionado. |
jdbc_query_database | Ejecuta una consulta SQL y devuelve resultados en formato JSONL. |
jdbc_execute_query | Ejecuta una consulta SQL y devuelve resultados en formato JSONL. |
jdbc_execute_query_md | Ejecuta 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 es20
.timeout
(número, opcional): Tiempo de espera de la consulta en milisegundos. El valor predeterminado es30000
(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 es30000
(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:
- Instalar el Inspector MCP:
- Iniciar el inspector:
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:
- 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: - Inicie el inspector utilizando los siguientes argumentos de la línea de comandos:
Utilice un ejemplo basado en los controladores Oracle e Informix
- Suponiendo la siguiente información del controlador JDBC:
- Plantilla de URL del controlador JDBC de Oracle
- Plantilla de URL del controlador JDBC de Informix
- Plantilla de URL del controlador JDBC de Oracle
- 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: - Inicie el inspector utilizando los siguientes argumentos de la línea de comandos:
- 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
This server cannot be installed
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
Related MCP Servers
- TypeScript
- PythonMIT License
- PythonApache 2.0
- JavaScriptMIT License