Data Nexus MCP

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.

Category
Visit Server

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/token
  • ldap — LDAP bind (requires REST_API_LDAP_SERVER and REST_API_LDAP_BASE_DN)

Adding a New Driver

  1. Create core_db_command/drivers/mydb.py
  2. Subclass BaseDriver and set driver_type
  3. Decorate with @DriverRegistry.register
  4. 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

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.

Official
Featured
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

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.

Official
Featured
Python
graphlit-mcp-server

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.

Official
Featured
TypeScript
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured