ODBC del servidor MCP a través de PyODBC
Un servidor MCP (Protocolo de Contexto de Modelo) ligero para ODBC, desarrollado con FastAPI y pyodbc . Este servidor es compatible con Virtuoso DBMS y otros backends de DBMS con controlador ODBC.
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 : en el caso de Virtuoso, ejecutar procedimientos almacenados y recuperar resultados.
Ejecutar consultas :
Formato de resultado JSONL: optimizado para respuestas estructuradas.
Formato de tabla Markdown: ideal para informes y visualización.
Prerrequisitos
Instalar uv :
pip install uvO usa Homebrew:
brew install uvComprobaciones 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:
odbcinst -j
Enumere los nombres de fuentes de datos disponibles ejecutando:
odbcinst -q -s
Configuración de DSN ODBC : Configure el nombre de la fuente de datos ODBC (
~/.odbc.ini
) para la base de datos de destino. Ejemplo para Virtuoso DBMS:[VOS] Description = OpenLink Virtuoso Driver = /path/to/virtodbcu_r.so Database = Demo Address = localhost:1111 WideAsUTF16 = Yes
Instalación
Clonar este repositorio:
Variables de entorno
Actualice su .env
anulando los valores predeterminados para que coincidan con sus preferencias
Configuración
Para usuarios de Claude Desktop : agregue lo siguiente a claude_desktop_config.json
:
Uso
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 |
podbc_get_schemas | Enumere los esquemas de bases de datos accesibles al sistema de administración de bases de datos (DBMS) conectado. |
podbc_obtener_tablas | Enumere las tablas asociadas con un esquema de base de datos seleccionado. |
tabla de descripción de podbc | 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. |
nombres de tabla de filtros podbc | Enumere tablas basadas en un patrón de subcadena del campo de entrada
, asociado con un esquema de base de datos seleccionado. |
base de datos de consultas podbc | Ejecuta una consulta SQL y devuelve resultados en formato JSONL. |
podbc_ejecutar_consulta | Ejecuta una consulta SQL y devuelve resultados en formato JSONL. |
podbc_ejecutar_consulta_md | Ejecuta una consulta SQL y devuelve los resultados en formato de tabla Markdown. |
consulta podbc_spasql | Ejecutar una consulta SPASQL y devolver resultados. |
consulta podbc_sparql | Ejecutar una consulta SPARQL y devolver resultados. |
podbc_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
podbc_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 "Virtuoso local".
Devuelve una matriz de cadenas JSON de nombres de esquemas.
podbc_obtener_tablas
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 "Virtuoso local".
Devuelve una cadena JSON que contiene información de la tabla (por ejemplo, TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE).
nombres de tabla de filtros podbc
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 "Virtuoso local".
Devuelve una cadena JSON que contiene información para las tablas coincidentes.
tabla de descripción de podbc
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 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 "Virtuoso local".
Devuelve una cadena JSON que describe las columnas de la tabla (por ejemplo, COLUMN_NAME, TYPE_NAME, COLUMN_SIZE, IS_NULLABLE).
base de datos de consultas podbc
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 "Virtuoso local".
Devuelve los resultados de la consulta como una cadena JSON.
base de datos de consulta podbc_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 "Virtuoso local".
Devuelve los resultados de la consulta como una cadena de tabla Markdown.
podbc_query_base_de_datos_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 "Virtuoso local".
Devuelve los resultados de la consulta como una cadena JSONL.
consulta podbc_spasql
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 es 20.timeout
(número, opcional): Tiempo de espera de la consulta en milisegundos. El valor predeterminado es 30000.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 "Virtuoso local".
Devuelve el resultado de la llamada al procedimiento almacenado subyacente (por ejemplo,
Demo.demo.execute_spasql_query
).
consulta podbc_sparql
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 es 30000.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 "Virtuoso local".
Devuelve el resultado de la llamada de función subyacente (por ejemplo,
"UB".dba."sparqlQuery"
).
podbc_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. Su valor predeterminado es "ninguna".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 "Virtuoso local".
Devuelve el resultado de la llamada a la función AI Support Assistant (por ejemplo,
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI
).
Solución de problemas
Para facilitar la resolución de problemas:
Instalar el Inspector MCP:
npm install -g @modelcontextprotocol/inspectorIniciar el inspector:
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-pyodbc-server run mcp-pyodbc-server
Acceda a la URL proporcionada para solucionar problemas de interacciones con el servidor.
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.
Un servidor MCP liviano que permite el acceso y la consulta de bases de datos a través de conexiones ODBC, con soporte especial para características de Virtuoso DBMS como SPARQL y asistencia de IA a través del lenguaje natural.
Related MCP Servers
- AsecurityAlicenseAqualityA high-performance MCP server utilizing libSQL for persistent memory and vector search capabilities, enabling efficient entity management and semantic knowledge storage.Last updated -630470MIT License
- -securityAlicense-qualityThe Multi DB MCP Server is a high-performance implementation of the Database Model Context Protocol designed to revolutionize how AI agents interact with databases. Currently supporting MySQL and PostgreSQL databases.Last updated -294MIT License
- -securityFlicense-qualityA FastMCP server that provides natural language interaction with MS SQL databases, enabling users to query data, list tables, describe structures, and execute database operations through a conversational AI interface.Last updated -
- -securityAlicense-qualityMCP-Server from your Database optimized for LLMs and AI-Agents. Supports PostgreSQL, MySQL, ClickHouse, Snowflake, MSSQL, BigQuery, Oracle Database, SQLite, ElasticSearch, DuckDBLast updated -478Apache 2.0