MCP PyODBC Server

Official

hybrid server

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

Integrations

  • Allows interaction with WhatsApp contacts through Claude, leveraging AI capabilities in WhatsApp conversations by connecting to a database backend via ODBC.


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

  1. Instalar uv :
    pip install uv
    O usa Homebrew:
    brew install uv
  2. Comprobaciones del entorno de ejecución de unixODBC :
  3. Verifique la configuración de la instalación (es decir, la ubicación de los archivos INI clave) ejecutando: odbcinst -j
  4. Enumere los nombres de fuentes de datos disponibles ejecutando: odbcinst -q -s
  5. 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:

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

Variables de entorno

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

ODBC_DSN=VOS ODBC_USER=dba ODBC_PASSWORD=dba API_KEY=xxx

Configuración

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

{ "mcpServers": { "my_database": { "command": "uv", "args": ["--directory", "/path/to/mcp-pyodbc-server", "run", "mcp-pyodbc-server"], "env": { "ODBC_DSN": "dsn_name", "ODBC_USER": "username", "ODBC_PASSWORD": "password", "API_KEY": "sk-xxx" } } } }

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

nombredescripción
podbc_get_schemasEnumere los esquemas de bases de datos accesibles al sistema de administración de bases de datos (DBMS) conectado.
podbc_obtener_tablasEnumere las tablas asociadas con un esquema de base de datos seleccionado.
tabla de descripción de podbcProporcione 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 podbcEnumere tablas basadas en un patrón de subcadena del campo de entrada q , asociado con un esquema de base de datos seleccionado.
base de datos de consultas podbcEjecuta una consulta SQL y devuelve resultados en formato JSONL.
podbc_ejecutar_consultaEjecuta una consulta SQL y devuelve resultados en formato JSONL.
podbc_ejecutar_consulta_mdEjecuta una consulta SQL y devuelve los resultados en formato de tabla Markdown.
consulta podbc_spasqlEjecutar una consulta SPASQL y devolver resultados.
consulta podbc_sparqlEjecutar una consulta SPARQL y devolver resultados.
podbc_virtuoso_support_aiInteractú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 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 "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:

  1. Instalar el Inspector MCP:
    npm install -g @modelcontextprotocol/inspector
  2. Iniciar 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.

-
security - not tested
A
license - permissive license
-
quality - not tested

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.

  1. Features
    1. Prerequisites
      1. Installation
        1. Environment Variables
          1. Configuration
            1. Usage
              1. Tools Provided
              2. Troubleshooting
            ID: nryz2kz7w4