ADB-Link
Bridging AI Agents to Your Databases
A lightweight, high-performance database gateway designed for AI agents β providing unified SQL access, schema discovery, and tool orchestration across multiple database engines via REST API and MCP (Model Context Protocol).
π Documentation | English | δΈζ
Quick Install
# One-line install
curl -fsSL https://raw.githubusercontent.com/gnodux/adb-link/main/scripts/install-adb-link.sh | bash
Agent One-Click Setup
Install adb-link and configure MCP in one command:
curl -fsSL https://raw.githubusercontent.com/gnodux/adb-link/main/skills/adb-link/scripts/setup-mcp.sh | bash
This auto-detects your agent platform (Claude Desktop, Cursor, Windsurf, Qoder CLI), installs the binary, creates a default config, and registers the MCP server. After running, restart your agent and call list_datasources.
For full instructions you can paste directly into any AI Agent, see AGENT_INSTALL.md.
# Or build from source (requires Go 1.22+)
git clone https://github.com/gnodux/adb-link.git
cd adb-link
make build
Demo
A complete workflow: discover datasources, explore schema, then execute queries β all via the MCP protocol.
# 1. List available datasources
curl -s -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-api-key>" \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": "list_datasources", "arguments": {}}
}'
# => [{"name":"my-postgres","type":"postgresql","description":"Production DB", ...}]
# 2. List databases in a datasource
curl -s -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-api-key>" \
-d '{
"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": {"name": "list_databases", "arguments": {"datasource_name": "my-postgres"}}
}'
# => [{"name":"mydb","comment":"Main application database"}, ...]
# 3. Get schema (tables & columns)
curl -s -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-api-key>" \
-d '{
"jsonrpc": "2.0", "id": 3, "method": "tools/call",
"params": {"name": "get_schema", "arguments": {"datasource_name": "my-postgres", "database": "mydb"}}
}'
# => {"tables":[{"name":"users","columns":[{"name":"id","type":"INT4"},{"name":"username","type":"VARCHAR"}, ...]}]}
# 4. Execute a query
curl -s -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-api-key>" \
-d '{
"jsonrpc": "2.0", "id": 5, "method": "tools/call",
"params": {
"name": "execute_query",
"arguments": {
"datasource_name": "my-postgres",
"database": "mydb",
"sql": "SELECT id, username, created_at FROM users ORDER BY created_at DESC LIMIT 10"
}
}
}'
# => {"columns":[...],"rows":[[1,"alice","2026-03-15"], ...],"row_count":3}
Core Features
Quick Start
Install (one-liner)
curl -fsSL https://raw.githubusercontent.com/gnodux/adb-link/main/scripts/install-adb-link.sh | bash
This installs the latest release to ~/.adb-link/ and creates a symlink at ~/.local/bin/adb-link.
Build from Source
git clone https://github.com/gnodux/adb-link.git
cd adb-link
make build
# Binary: bin/adb-link
Configure
Configuration files live in ~/.adb-link/conf/ by default (override via ADB_LINK_CONFIG_DIR).
# Copy example configs to get started
mkdir -p ~/.adb-link/conf
cp conf/mcp_stdio.yaml.example ~/.adb-link/conf/mcp_stdio.yaml
# Edit with your datasource details
Example datasource config:
kind: datasource
name: my-postgres
type: postgresql
description: "Production PostgreSQL"
connection:
host: 127.0.0.1
port: 5432
username: app_user
password: ${PG_PASSWORD} # supports env var interpolation
default_database: mydb
options:
pool_size: 10
Authentication config:
kind: users
users:
- name: admin
api_key: "your-secret-api-key"
group: admin
- name: mcp_stdio_user
group: mcp
description: "Default user for MCP stdio transport"
Run
# API + MCP HTTP on a single port (default :8000)
adb-link run-all
# API only
adb-link run-api
# MCP over stdio (for IDE/agent integration)
adb-link run-mcp
Verify
curl http://localhost:8000/api/health
# {"status":"ok"}
MCP Integration
Claude Desktop / Cursor / Windsurf
Add to your MCP client configuration:
{
"mcpServers": {
"adb-link": {
"command": "adb-link",
"args": ["run-mcp"]
}
}
}
The stdio transport uses mcp_stdio_user as the default identity. Configure permissions for this user in your auth/permission YAML files.
Qoder CLI
qoder mcp add adb-link -- adb-link run-mcp
Agent Skill Suite
A Qoder CLI skill package is bundled in skills/adb-link/. It provides deep context about adb-link's MCP tools and workflows, enabling any Qoder-compatible agent to use adb-link fluently.
# Install user-level (available in all projects)
cp -r skills/adb-link ~/.qoder/skills/
# Or use the setup script (installs binary + registers MCP + installs skill)
curl -fsSL https://raw.githubusercontent.com/gnodux/adb-link/main/skills/adb-link/scripts/setup-mcp.sh | bash
HTTP Transport
For remote or multi-client access, use the HTTP transport:
adb-link run-all # serves MCP at /mcp endpoint
Documentation
Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI Agent / Client β
ββββββββββββ¬ββββββββββββββββββββββββββ¬βββββββββββββββββ
β REST API β MCP (JSON-RPC)
βΌ βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ADB-Link Server β
β ββββββββββββ βββββββββββββ ββββββββββββββββββββββ β
β β Router β β MCP β β Config Service β β
β β + Auth β β Server β β (Hot-Reload/YAML) β β
β βββββββ¬βββββ βββββββ¬ββββββ ββββββββββββββββββββββ β
β β β β
β βββββββΌββββββββββββββΌββββββββββββββββββββββββββββ β
β β Service Layer β β
β β Schema Β· Query Β· Async Β· Permission Β· Meta β β
β ββββββββββββββββββββ¬βββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββΌβββββββββββββββββββββββββββββ β
β β Connection Service (Pool + Health) β β
β ββββββββββββββββββββ¬βββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββΌβββββββββββββββββββββββββββββ β
β β Dialect Layer (DSN Builder per DB engine) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β β
βββββββ ββββββ ββββββ ββββββ
βΌ βΌ βΌ βΌ
MySQL PostgreSQL ClickHouse SQLite ...
API Endpoints
MCP Tools
All MCP tools are available via tools/call:
list_datasourcesβ List all datasourceslist_databasesβ List databases in a datasourceget_schemaβ Get full schemaget_table_info/get_view_infoβ Column detailsexecute_queryβ Run SQL/DSLexplain_queryβ Execution plansubmit_async_queryβ Async queryget_async_query_status/get_async_query_resultβ Poll async resultsregister_tool/unregister_toolβ Dynamic tool managementregister_datasource/unregister_datasourceβ Dynamic datasource management- Any dynamically registered tool
Configuration
All configuration is YAML-based in the config directory (~/.adb-link/conf/ by default):
Environment variables are supported via ${VAR_NAME} syntax. Configuration changes are hot-reloaded automatically.
Environment Variables
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
# Development workflow
make fmt # Format code
make vet # Run tests
make test # Run tests
make build # Build binary
License
If you find ADB-Link useful, please give it a star!