# HybridHub
Universal Hybrid Data MCP Server - Connect to both structured (databases) and unstructured (object storage) data sources.
## Features
- **Structured Data Sources (Databases)**
- PostgreSQL
- MySQL
- MariaDB
- SQL Server
- SQLite
- **Unstructured Data Sources (Object Storage)**
- Huawei Cloud OBS
- Alibaba Cloud OSS
- AWS S3 / S3-Compatible (MinIO, etc.)
- Tencent Cloud COS
## Quick Start
### 1. Install Dependencies
```bash
npm install
# or
yarn install
# or
pnpm install
```
### 2. Configure Data Sources
Copy the sample configuration file:
```bash
cp env.sample .env
```
Edit `.env` with your data source credentials.
For multi-source configuration, copy and edit the TOML example:
```bash
cp hybridhub.toml.example hybridhub.toml
```
### 3. Run the Server
```bash
# Development mode
npm run dev
# Production mode
npm run build
npm start
```
## Configuration
### Environment Variables
| Variable | Description | Example |
|----------|-------------|---------|
| `HYBRIDHUB_TRANSPORT` | Transport mode | `stdio` or `http` |
| `HYBRIDHUB_PORT` | HTTP port | `8080` |
| `HYBRIDHUB_API_KEY` | API key for authentication | `your-api-key` |
#### Database Configuration
| Variable | Description | Example |
|----------|-------------|---------|
| `DSN` | Database connection string | `postgres://user:pass@localhost:5432/db` |
| `DB_TYPE` | Database type | `postgres`, `mysql`, `sqlite`, etc. |
| `DB_HOST` | Database host | `localhost` |
| `DB_PORT` | Database port | `5432` |
| `DB_NAME` | Database name | `mydb` |
| `DB_USER` | Database username | `user` |
| `DB_PASSWORD` | Database password | `password` |
| `DB_READONLY` | Enable read-only mode | `true` or `false` |
| `DB_MAX_ROWS` | Maximum rows per query | `1000` |
#### Storage Configuration
| Variable | Description | Example |
|----------|-------------|---------|
| `STORAGE_TYPE` | Storage provider type | `s3`, `oss`, `obs`, etc. |
| `STORAGE_ENDPOINT` | Storage endpoint URL | `https://s3.amazonaws.com` |
| `STORAGE_ACCESS_KEY` | Access key ID | `AKIAIOSFODNN7EXAMPLE` |
| `STORAGE_SECRET_KEY` | Secret access key | `wJalrXUtnFEMI...` |
| `STORAGE_REGION` | Storage region | `us-east-1` |
| `STORAGE_PATH_STYLE` | Use path-style URLs (for MinIO) | `true` or `false` |
### TOML Configuration
For multi-source configuration, use `hybridhub.toml`:
```toml
# Database source
[[databases]]
id = "prod_pg"
dsn = "postgres://user:password@localhost:5432/production"
readonly = false
max_rows = 1000
# Storage source
[[storages]]
id = "aws_s3"
type = "s3"
endpoint = "https://s3.amazonaws.com"
access_key = "AKIAIOSFODNN7EXAMPLE"
secret_key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
region = "us-east-1"
```
See `hybridhub.toml.example` for complete configuration options.
## MCP Tools
### Database Tools
- `execute_sql` - Execute SQL queries on database sources
### Storage Tools
- `list_buckets` - List all storage buckets
- `list_objects` - List objects in a bucket
- `get_object` - Get object content
- `get_object_metadata` - Get object metadata
- `search_objects` - Search objects with filters
## Development
```bash
# Run in development mode
npm run dev
# Run with HTTP transport
npm run dev:http
# Build for production
npm run build
# Run tests
npm test
```
## License
MIT