what is My_database?
My_database is a lightweight MCP (Model Context Protocol) server for ODBC built with FastAPI, pyodbc, and SQLAlchemy, designed to work with Virtuoso DBMS and other SQLAlchemy-compatible databases.
how to use My_database?
To use My_database, set up your ODBC Data Source Name, install the required packages, and run the server using the provided command. You can then connect to various databases using the specified connection URLs.
key features of My_database?
- Fetch and list all schema names from the connected database.
- Retrieve table information for specific schemas.
- Generate detailed descriptions of table structures.
- Filter and retrieve tables based on name substrings.
- Execute stored procedures and SQL queries with results in JSONL or Markdown format.
use cases of My_database?
- Managing and querying data in Virtuoso and other SQLAlchemy-compatible databases.
- Generating reports and visualizations from database queries.
- Interacting with various database management systems through a unified interface.
FAQ from My_database?
- What databases are supported?
My_database supports Virtuoso DBMS and any other database that implements a SQLAlchemy provider.
- How do I install My_database?
Clone the repository from GitHub and follow the installation instructions provided in the documentation.
- Can I execute stored procedures?
Yes, My_database allows you to execute stored procedures specifically for Virtuoso.
MCP Server ODBC via SQLAlchemy
A lightweight MCP (Model Context Protocol) server for ODBC built with FastAPI, pyodbc, and SQLAlchemy. This server is compatible with Virtuoso DBMS and other DBMS backends that implement a SQLAlchemy provider.
Features
- Get Schemas: Fetch and list all schema names from the connected database.
- Get Tables: Retrieve table information for specific schemas or all schemas.
- Describe Table: Generate a detailed description of table structures, including:
- Column names and data types
- Nullable attributes
- Primary and foreign keys
- Search Tables: Filter and retrieve tables based on name substrings.
- Execute Stored Procedures: In the case of Virtuoso, execute stored procedures and retrieve results.
- Execute Queries:
- JSONL result format: Optimized for structured responses.
- Markdown table format: Ideal for reporting and visualization.
Prerequisites
-
Install uv:
pip install uv
Or use Homebrew:
brew install uv
-
ODBC DSN Setup: Configure your ODBC Data Source Name (
~/.odbc.ini
) for the target database. Example for Virtuoso DBMS:[VOS] Description = OpenLink Virtuoso Driver = /path/to/virtodbcu_r.so Database = Demo Address = localhost:1111 WideAsUTF16 = Yes
-
SQLAlchemy URL Binding: Use the format:
virtuoso+pyodbc://user:password@VOS
Installation
Clone this repository:
git clone https://github.com/OpenLinkSoftware/mcp-sqlalchemy-server.git
cd mcp-sqlalchemy-server
Configuration
For Claude Desktop users:
Add the following to claude_desktop_config.json
:
{
"mcpServers": {
"my_database": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-sqlalchemy-server", "run", "mcp-sqlalchemy-server"],
"env": {
"DB_URL": "virtuoso+pyodbc://user:password@VOS"
}
}
}
}
Usage
Database Management System (DBMS) Connection URLs
Here are the pyodbc URL examples for connecting to DBMS systems that have been tested using this mcp-server.
Database | URL Format |
---|---|
Virtuoso DBMS | virtuoso+pyodbc://user:password@ODBC_DSN |
PostgreSQL | postgresql://user:password@localhost/dbname |
MySQL | mysql+pymysql://user:password@localhost/dbname |
SQLite | sqlite:///path/to/database.db |
Once connected, you can interact with your WhatsApp contacts through Claude, leveraging Claude's AI capabilities in your WhatsApp conversations. |
Tools Provided
name | description |
---|---|
get_schemas | List database schemas accessible to connected database management system (DBMS). |
get_tables | List tables associated with a selected database schema. |
describe_table | Provide the description of a table associated with a designated database schema. This includes information about column names, data types, nulls handling, autoincrement, primary key, and foreign keys |
filter_table_names | List tables, based on a substring pattern from the q input field, associated with a selected database schema. |
query_database | Execute a SQL query and return results in JSONL format. |
execute_query | Execute a SQL query and return results in JSONL format. |
execute_query_md | Execute a SQL query and return results in Markdown table format. |
spasql_query | Execute a SPASQL query and return results. |
sparql_query | Execute a SPARQL query and return results. |
virtuoso_support_ai | Interact with the Virtuoso Support Assistant/Agent -- a Virtuoso-specific feature for interacting with LLMs |
Troubleshooting
For easier troubleshooting:
-
Install the MCP Inspector:
npm install -g @modelcontextprotocol/inspector
-
Start the inspector:
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-sqlalchemy-server run mcp-sqlalchemy-server
Access the provided URL to troubleshoot server interactions.
