Introducción
Este documento describe la configuración y el uso de un servidor ODBC genérico para el Protocolo de Contexto de Modelo (MCP), denominado servidor mcp-odbc
. Se desarrolló para proporcionar a los Modelos de Lenguaje Grandes acceso transparente a fuentes de datos accesibles mediante ODBC mediante un nombre de fuente de datos configurado para un conector ODBC específico (también denominado controlador ODBC).
Implementación del servidor
Este servidor MCP para ODBC es una pequeña capa de TypeScript construida sobre node-odbc
. Enruta las llamadas al administrador de controladores ODBC local del sistema host mediante node.js
(específicamente, usando npx
para TypeScript).
Configuración y requisitos previos del entorno operativo
Aunque los ejemplos siguientes están orientados al Conector ODBC de Virtuoso, esta guía también es compatible con otros conectores ODBC. Recomendamos encarecidamente las contribuciones de código y el envío de demostraciones de uso relacionadas con otros sistemas de gestión de bases de datos (SGBD) para su incorporación en este proyecto.
Componentes clave del sistema
- Comprueba la versión
node.js
Si no es21.1.0
o superior, actualízala o instálala explícitamente usando: - Instalar componentes MCP usando:
- Establezca la versión
nvm
usando:
Instalación
- Correr
- Cambiar directorio
- Correr
- Correr
Comprobaciones del entorno de ejecución de unixODBC
- Verifique la configuración de la instalación (es decir, la ubicación de los archivos INI clave) ejecutando:
- Enumere los nombres de fuentes de datos (DSN) disponibles ejecutando:
Variables de entorno
Como buena práctica de seguridad, debe utilizar el archivo .env
ubicado en el mismo directorio que mcp-ser
para establecer enlaces para el nombre de origen de datos ODBC ( ODBC_DSN
), el usuario ( ODBC_USER
), la contraseña ( ODBC_PWD
), el ODBC INI ( ODBCINI
) y, si desea utilizar OpenLink AI Layer (OPAL) a través de ODBC, la clave API del modelo de lenguaje grande (LLM) de destino ( API_KEY
).
Uso
Herramientas
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 |
---|---|
get_schemas | Enumere los esquemas de bases de datos accesibles al sistema de administración de bases de datos (DBMS) conectado. |
get_tables | Enumere las tablas asociadas con un esquema de base de datos seleccionado. |
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. |
filter_table_names | Enumere las tablas asociadas con un esquema de base de datos seleccionado, según un patrón de subcadena del campo de entrada q . |
query_database | Ejecuta una consulta SQL y devuelve los resultados en formato de líneas JSON (JSONL). |
execute_query | Ejecuta una consulta SQL y devuelve los resultados en formato de líneas JSON (JSONL). |
execute_query_md | Ejecuta una consulta SQL y devuelve los resultados en formato de tabla Markdown. |
spasql_query | Ejecutar una consulta SPASQL y devolver resultados. |
sparql_query | Ejecutar una consulta SPARQL y devolver resultados. |
virtuoso_support_ai | Interactúe con el asistente/agente de soporte de Virtuoso: una función específica de Virtuoso para interactuar con los LLM |
Descripción detallada
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"
.dsn
(cadena, opcional): nombre de la fuente de datos ODBC. El valor predeterminado es"Local Virtuoso"
.
- Devuelve una matriz de cadenas JSON de nombres de esquemas.
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"
.dsn
(cadena, opcional): nombre de la fuente de datos ODBC. El valor predeterminado es"Local Virtuoso"
.
- Devuelve una cadena JSON que contiene información de la tabla (por ejemplo,
TABLE_CAT
,TABLE_SCHEM
,TABLE_NAME
,TABLE_TYPE
).
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"
.dsn
(cadena, opcional): nombre de la fuente de datos ODBC. El valor predeterminado es"Local Virtuoso"
.
- Devuelve una cadena JSON que contiene información para las tablas coincidentes.
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"
.dsn
(cadena, opcional): nombre de la fuente de datos ODBC. El valor predeterminado es"Local Virtuoso"
.
- Devuelve una cadena JSON que describe las columnas de la tabla (por ejemplo,
COLUMN_NAME
,TYPE_NAME
,COLUMN_SIZE
,IS_NULLABLE
).
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"
.dsn
(cadena, opcional): nombre de la fuente de datos ODBC. El valor predeterminado es"Local Virtuoso"
.
- Devuelve los resultados de la consulta como una cadena JSON.
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"
.dsn
(cadena, opcional): nombre de la fuente de datos ODBC. El valor predeterminado es"Local Virtuoso"
.
- Devuelve los resultados de la consulta como una cadena de tabla Markdown.
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"
.dsn
(cadena, opcional): nombre de la fuente de datos ODBC. El valor predeterminado es"Local Virtuoso"
.
- Devuelve los resultados de la consulta como una cadena JSONL.
spasql_query
- Ejecutar una consulta SPASQL (SQL/SPARQL híbrido) y devolver resultados. Esta función es específica de Virtuoso.
- 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"
.dsn
(cadena, opcional): nombre de la fuente de datos ODBC. El valor predeterminado es"Local Virtuoso"
.
- Devuelve el resultado de la llamada al procedimiento almacenado subyacente (por ejemplo,
Demo.demo.execute_spasql_query
).
sparql_query
- Ejecutar una consulta SPARQL y devolver resultados. Esta es una función específica de Virtuoso.
- 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"
.dsn
(cadena, opcional): nombre de la fuente de datos ODBC. El valor predeterminado es"Local Virtuoso"
.
- Devuelve el resultado de la llamada de función subyacente (por ejemplo,
"UB".dba."sparqlQuery"
).
virtuoso_support_ai
- Utiliza una función del Asistente de IA específica de Virtuoso, que envía un mensaje y una clave API opcional. Esta función es específica de Virtuoso.
- 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"
.dsn
(cadena, opcional): nombre de la fuente de datos ODBC. El valor predeterminado es"Local Virtuoso"
.
- Devuelve el resultado de la llamada a la función AI Support Assistant (por ejemplo,
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI
).
Pruebas de instalación básicas y resolución de problemas
Herramienta de inspección MCP
Edición de la herramienta Canonical MCP Inspector
- Inicie el inspector desde el directorio/carpeta mcp-server usando el siguiente comando:
- Haga clic en el botón "Conectar", luego haga clic en la pestaña "Herramientas" para comenzar.
Edición de la herramienta de inspección MCP de OpenLink
Esta es una bifurcación de la edición canónica que incluye una corrección de errores de manejo de JSON relacionados con el uso con este servidor MCP.
- correr
- correr
- Proporcione el siguiente valor en el campo de entrada
Arguments
de la interfaz de usuario de Inspectores de MCP desde http://localhost:6274 - Haga clic en el botón
Connect
para inicializar su sesión con el servidor MCP designado
Problemas de compatibilidad de Apple Silicon (ARM64) con el servidor ODBC MCP
Problema de conflicto entre nodos x86_64 y arm64
Es posible que esté instalada la edición x86_64 en lugar de arm64 del node
, pero el puente ODBC y el servidor MCP son componentes basados en arm64.
Puedes solucionar este problema realizando los siguientes pasos:
- Desinstale la edición x86_64 del
node
ejecutando: - Ejecute el siguiente comando para confirmar que su shell actual está en modo arm64:
- Si eso devuelve x86_64, ejecute el siguiente comando para cambiar el modo activo:
- Si eso devuelve x86_64, ejecute el siguiente comando para cambiar el modo activo:
- Instale la edición arm64 del
node
ejecutando:
Incompatibilidad entre el nodo y la capa de puente ODBC
Al intentar usar un servidor ODBC de Protocolo de Contexto de Modelo (MCP) en equipos Apple Silicon, pueden producirse errores de incompatibilidad de arquitectura. Esto ocurre porque el módulo nativo ODBC de Node.js ( odbc.node
) está compilado para la arquitectura ARM64, pero se está cargando la edición x86_64 del entorno de ejecución unixODBC.
Mensaje de error típico:
Puedes resolver este problema realizando los siguientes pasos:
- Verifique que su Node.js se esté ejecutando en modo ARM64:
- Instalar unixODBC para ARM64:
- Reconstruir el módulo ODBC de Node.js para ARM64:
- Verifique que el módulo ahora sea ARM64:
Puntos clave
- Tanto unixODBC como el módulo ODBC de Node.js deben ser compatibles con ARM64
- El uso de variables de entorno (
export npm_config_arch=arm64
) es más confiable que los comandos de configuración de npm - Verifique siempre la arquitectura con el comando
file
onode -p "process.arch"
- Al usar Homebrew en Apple Silicon, los comandos pueden prefijarse con
arch -arm64
para forzar el uso de binarios ARM64
Uso de la aplicación MCP
Configuración del escritorio de Claude
La ruta para este archivo de configuración es: ~{username}/Library/Application Support/Claude/claude_desktop_config.json
.
Uso del escritorio de Claude
- Inicie la aplicación.
- Aplicar la configuración (desde arriba) a través de Configuración | Interfaz de usuario para desarrolladores.
- Asegúrese de tener una conexión ODBC en funcionamiento a un nombre de fuente de datos (DSN).
- Presentar un mensaje solicitando la ejecución de una consulta, por ejemplo,
Configuración de Cline (extensión de Visual Studio)
La ruta para este archivo de configuración es: ~{username}/Library/Application\ Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Uso de Cline (extensión de Visual Studio)
- Utilice Shift+Comando+P para abrir la paleta de comandos.
- Escriba:
Cline
. - Seleccionar: Vista Cline, que abre la interfaz de usuario de Cline en la barra lateral de VSCode.
- Utilice el icono de cuatro cuadrados para acceder a la interfaz de usuario para instalar y configurar servidores MCP.
- Aplicar la configuración de Cline (de arriba).
- Regrese a la interfaz de usuario principal de la extensión y comience una nueva tarea solicitando el procesamiento del siguiente mensaje:
Configuración del cursor
Utilice el engranaje de configuración para abrir el menú de configuración que incluye el elemento de menú MCP para registrar y configurar mcp servers
.
Uso del cursor
- Utilice la combinación de teclas
Command + I
oControl + I
para abrir la interfaz de chat. - Seleccione
Agent
en el menú desplegable en la parte inferior izquierda de la interfaz de usuario, donde el valor predeterminado esAsk
. - Ingrese su mensaje, calificando el uso del
mcp-server for odbc
usando el patrón:@odbc {rest-of-prompt}
. - Haga clic en “Aceptar” para ejecutar el mensaje.
Relacionado
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Proporciona conectividad de base de datos abierta genérica (ODBC) a cualquier sistema de gestión de bases de datos (DBMS) al que se pueda acceder a través de un conector ODBC (controlador).
Related MCP Servers
- -securityAlicense-qualityEnables execution of SQL queries and management of Microsoft SQL Server database connections through the Model Context Protocol.Last updated -10TypeScriptMIT License
- -securityAlicense-qualityAn MCP server that enables MySQL database integration with Claude. You can execute SQL queries and manage database connections.Last updated -1PythonMIT License
- -security-license-qualityA 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-qualityEnables 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 -PythonMIT License
Appeared in Searches
- Information about Java programming language or related topics
- Connecting to PostgreSQL database, retrieving table schema, and executing SQL queries
- Information or resources about SQL Server
- Running MySQL Queries Through a MySQL Socket
- A server for connecting AWS infrastructure to a real-time AI-powered dashboard