mcp-sqlalchemy

Official
Apache 2.0
7
  • Apple
  • Linux

hybrid server

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

Integrations

  • Built with FastAPI to provide a lightweight MCP server for ODBC database connections.

  • Provides capability to format query results as Markdown tables for better readability and visualization.

  • Connects to MySQL databases through PyMySQL, supporting schema exploration, table information retrieval, and query execution.


ODBC del servidor MCP a través de SQLAlchemy

Un servidor MCP (Protocolo de Contexto de Modelo) ligero para ODBC, desarrollado con FastAPI , pyodbc y SQLAlchemy . Este servidor es compatible con Virtuoso DBMS y otros backends de DBMS que implementan un proveedor SQLAlchemy.


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
  6. Enlace de URL de SQLAlchemy : utilice el formato:
    virtuoso+pyodbc://user:password@VOS

Instalación

Clonar este repositorio:

git clone https://github.com/OpenLinkSoftware/mcp-sqlalchemy-server.git cd mcp-sqlalchemy-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-sqlalchemy-server", "run", "mcp-sqlalchemy-server"], "env": { "ODBC_DSN": "dsn_name", "ODBC_USER": "username", "ODBC_PASSWORD": "password", "API_KEY": "sk-xxx" } } } }

Uso

URL de conexión del sistema de gestión de bases de datos (DBMS)

Aquí se encuentran los ejemplos de URL de pyodbc para conectarse a sistemas DBMS que se han probado utilizando este servidor mcp.

Base de datosFormato de URL
Sistema de gestión de bases de datos Virtuosovirtuoso+pyodbc://user:password@ODBC_DSN
PostgreSQLpostgresql://user:password@localhost/dbname
MySQLmysql+pymysql://user:password@localhost/dbname
SQLitesqlite:///path/to/database.db
Una vez conectado, podrás interactuar con tus contactos de WhatsApp a través de Claude, aprovechando las capacidades de inteligencia artificial de Claude en tus conversaciones de WhatsApp.

Herramientas proporcionadas

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-sqlalchemy-server run mcp-sqlalchemy-server

Acceda a la URL proporcionada para solucionar problemas de interacciones con el servidor.

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Proporciona conectividad SQLAlchemy (a través de pyodbc) a cualquier sistema de administración de bases de datos (DBMS) al que se pueda acceder a través de SQLAlchemy.

  1. Features
    1. Prerequisites
      1. Installation
        1. Environment Variables
          1. Configuration
            1. Usage
              1. Database Management System (DBMS) Connection URLs
              2. Tools Provided
              3. Troubleshooting
            ID: d29eq2qygt