Data Nexus MCP
Enables AI agents to interact with over 50 SQL and NoSQL databases through MCP tools for querying, schema inspection, and table management.
README
Data Nexus MCP
A modular, secure platform for connecting to SQL and NoSQL databases via REST API, MCP (Model Context Protocol), and a Vue.js Web UI.
Architecture
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Web UI │────▶│ REST API │────▶│ core-db-command │
│ (Vue.js) │ │ (FastAPI) │ │ (Python lib) │
└─────────────┘ └──────┬───────┘ └────────┬────────┘
│ │
┌──────▼───────┐ │
│ MCP Server │───────────────┘
└──────┬───────┘
│
┌──────▼───────┐
│ MCP Client │──▶ AI Agents / LLMs
└──────────────┘
Modules
| Module | Package | Description |
|---|---|---|
| core-db-command | core_db_command/ |
Plugin-based Python library for all database drivers |
| rest-api-command | rest_api_command/ |
FastAPI REST layer with OAuth2/LDAP/basic auth |
| mcp-server | mcp_server/ |
MCP tools: query_database, get_schema, list_tables, describe_table, execute_sql |
| mcp-client | mcp_client/ |
MCP client bridge for agent integration |
| web-ui | web-ui/ |
Vue 3 + Pinia + Monaco Editor query studio |
| config | config/ |
YAML connection definitions with ${ENV} substitution |
Supported Database Types
The driver registry supports 50+ database types across 13 categories:
- Relational: PostgreSQL, MySQL, MSSQL, Oracle, CockroachDB, TiDB, YugabyteDB, TimescaleDB, pgvector
- Document: MongoDB, DocumentDB, Firestore, Couchbase (stub)
- Key-Value: Redis, DynamoDB, Memcached/etcd/RocksDB (stub)
- Wide-Column: Cassandra, ScyllaDB, Bigtable/HBase (stub)
- Graph: Neo4j, Neptune/JanusGraph/ArangoDB (stub)
- Time-Series: InfluxDB, ClickHouse, Prometheus/QuestDB (stub)
- Vector: Qdrant, Weaviate, Milvus, Pinecone
- Search: Elasticsearch, OpenSearch, Splunk/Solr (stub)
- Warehouse: BigQuery, Snowflake, Redshift/Databricks (stub)
- Multi-Model: Cosmos DB, OrientDB (stub)
- Embedded: SQLite, DuckDB, Realm/LMDB (stub)
- Ledger: QLDB/BigchainDB (stub)
- NewSQL: Spanner (stub)
Fully implemented drivers include PostgreSQL, MySQL, MSSQL, Oracle, MongoDB, Redis, SQLite, DuckDB, Elasticsearch, ClickHouse, Neo4j, InfluxDB, Cassandra, DynamoDB, BigQuery, Snowflake, Qdrant, Weaviate, Milvus, Pinecone, Cosmos DB, and Firestore. Stub drivers are registered and extensible.
Quick Start
Prerequisites
- Python 3.11+
- Node.js 20+ (for Web UI development)
- Docker & Docker Compose (optional)
1. Install Python dependencies
cp .env.example .env
pip install -e ".[dev]"
2. Configure connections
Edit config/connections.yaml and set secrets via environment variables:
connections:
- name: postgres_prod
type: postgresql
host: localhost
port: 5432
database: mydb
user: readonly_user
password: ${PG_PASSWORD}
3. Start the REST API
db-rest-api
# or: uvicorn rest_api_command.app:app --reload
API docs: http://localhost:8000/docs
4. Start the Web UI (development)
cd web-ui
cp .env.example .env
npm install
npm run dev
Open http://localhost:5173 — default credentials: admin / changeme
5. Run with Docker Compose
docker compose up -d
Services:
- REST API: http://localhost:8000
- Web UI: http://localhost:5173
- PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch
REST API Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /api/connections |
List connections (no credentials) |
| POST | /api/db/{name}/query |
Parameterized query |
| POST | /api/db/{name}/sql |
Raw SQL / native command |
| GET | /api/db/{name}/schema |
Database schema |
| GET | /api/db/{name}/tables |
List tables/collections |
| GET | /api/db/{name}/tables/{table}/describe |
Table structure |
| GET/POST | /api/query-history |
Query history |
MCP Server
Configure in .env or Cursor MCP env:
MCP_REST_API_URL=http://localhost:8000
# Option A: bearer token (when REST_API_AUTH_MODE=oauth2)
MCP_REST_API_TOKEN=<jwt-from-/api/auth/token>
# Option B: username/password (works with basic auth; auto-fetches JWT if oauth2)
MCP_REST_API_USER=admin
MCP_REST_API_PASSWORD=changeme
Run:
db-mcp-server
Add to Cursor/Claude MCP config:
{
"mcpServers": {
"data-nexus-mcp": {
"command": "db-mcp-server",
"cwd": "/path/to/data_nexus_mcp",
"env": {
"MCP_REST_API_URL": "http://localhost:8000",
"MCP_REST_API_USER": "admin",
"MCP_REST_API_PASSWORD": "changeme"
}
}
}
}
Note: REST_API_* variables belong on the REST API process (db-rest-api), not in the MCP server config.
MCP Client
db-mcp-client # list available tools
db-mcp-client query local_sqlite "SELECT 1"
Authentication
Set REST_API_AUTH_MODE to one of:
basic— HTTP Basic Auth (default for development)oauth2— JWT bearer tokens via/api/auth/tokenldap— LDAP bind (requiresREST_API_LDAP_SERVERandREST_API_LDAP_BASE_DN)
Adding a New Driver
- Create
core_db_command/drivers/mydb.py - Subclass
BaseDriverand setdriver_type - Decorate with
@DriverRegistry.register - Import in
core_db_command/drivers/registry_loader.py
from core_db_command.base import BaseDriver, DriverRegistry
@DriverRegistry.register
class MyDBDriver(BaseDriver):
driver_type = "mydb"
async def connect(self): ...
async def disconnect(self): ...
async def query(self, query, params=None): ...
async def execute(self, command, params=None): ...
async def list_tables(self, schema=None): ...
async def describe_table(self, table, schema=None): ...
Testing
pytest tests/ -v
Security Notes
- Credentials are never returned by the REST API or MCP server
- Secrets must use
${ENV_VAR}placeholders in YAML config - All API endpoints require authentication
- Query input is validated and length-limited
Project Structure
data-nexus-mcp/
├── core_db_command/ # Core library + drivers
├── rest_api_command/ # FastAPI REST API
├── mcp_server/ # MCP server
├── mcp_client/ # MCP client
├── web-ui/ # Vue.js frontend
├── config/ # YAML connection config
├── tests/ # Unit tests
├── docker-compose.yml
├── Dockerfile
└── pyproject.toml
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.