Enterprise-grade MCP server untuk membaca metadata database dan menyimpan ke vector knowledge base dengan UI graph interaktif (Obsidian-like).
DB Knowledge MCP membaca metadata database (SQL Server, MySQL, PostgreSQL) dan menyimpannya sebagai vector knowledge base yang bisa dibaca cepat oleh AI agent. Dilengkapi dengan UI graph interaktif seperti Obsidian untuk visualisasi dan eksplorasi relationship antar tabel.
- Multi-Database Support: SQL Server, MySQL, PostgreSQL
- Vector Knowledge Base: Simpan schema sebagai embedded vectors
- 8 MCP Tools: list_databases, scan_database, search_knowledge, dll
- Semantic Search: Query natural language ke knowledge base
- Interactive Graph: Vis Network visualization
- Clickable Nodes: Klik node untuk melihat detail
- Database Selector: Switch antar knowledge bases
- Real-time Search: Filter nodes dengan search bar
- Zoom & Pan: Navigasi graph dengan mouse
- Drag Nodes: Atur posisi node sesuka hati
- Auto-layout: Button untuk auto-arrange graph
- Node.js >= 18.0.0
- Database credentials (SQL Server, MySQL, atau PostgreSQL)
git clone https://github.com/PTRJRepository/db-knowledge-mcp.git
cd db-knowledge-mcp
npm install
npm run buildEdit config/databases.json:
{
"databases": [
{
"id": "db_payroll",
"name": "Payroll Database",
"type": "sqlserver",
"host": "localhost",
"port": 1433,
"database": "payroll_db",
"username": "sa",
"password": "your_password",
"enabled": true,
"description": "Production payroll system"
},
{
"id": "db_hris",
"name": "HRIS Database",
"type": "mysql",
"host": "localhost",
"port": 3306,
"database": "hris_db",
"username": "root",
"password": "your_password",
"enabled": true
}
],
"embedder": {
"provider": "openai",
"model": "text-embedding-3-small",
"dimensions": 1536
},
"storage": {
"type": "json",
"path": "knowledgebases"
}
}npm run start:combined- UI Dashboard: http://localhost:5005
- REST API: http://localhost:5005/api/*
npm startBerguna untuk integrate dengan AI tools lain (Zo Computer, Claude, dll)
npm run scan-allβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DB Knowledge Graph [Search...] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Dropdown: Select Database βΌ] [Scan] [Refresh] [Layout] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ β
β β db_payroll β β Database Node (Cyan) β
β ββββββββ¬ββββββββ β
β β β
β ββββββββ΄ββββββββ β
β β employees β β Table Node (Green) β
β ββββββββ¬ββββββββ β
β β β
β βββββββββββββΌββββββββββββ β
β β β β β
β ββββ΄βββ βββββ΄ββββ βββββ΄ββββ β
β β id β βname β β dept β β Column Nodes (Yellow) β
β ββββ¬βββ βββββ¬ββββ βββββ¬ββββ β
β β β β β
β βββββββββββ΄ββββββββββββ β
β β (Click node) β
β ββββββββββββββΊ Shows detail panel βββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Legend: β Database β Table β Column β Relationship β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Type | Color | Description |
|---|---|---|
| Database | Cyan (#00bcd4) | Root node untuk setiap database |
| Table | Green (#4caf50) | Tabel dalam database |
| Column | Yellow (#ffeb3b) | Kolom dalam tabel |
| Relationship | Red (#f44336) | Foreign key relationship |
- Select Database: Gunakan dropdown untuk memilih database
- Scan: Klik "Scan" untuk scan database dan update knowledge base
- Search: Ketik di search bar untuk filter nodes
- Click Node: Klik node untuk melihat detail di panel kanan
- Drag: Drag node untuk reposisi
- Zoom: Scroll mouse untuk zoom in/out
- Layout: Klik "Layout" untuk auto-arrange graph
Ketika node diklik, panel kanan menampilkan:
Database Node:
βββββββββββββββββββββββββββ
β π db_payroll β
βββββββββββββββββββββββββββ€
β Type: SQL Server β
β Tables: 25 β
β Columns: 156 β
β Last Updated: 2026-03 β
βββββββββββββββββββββββββββ€
β [Scan] [Delete] β
βββββββββββββββββββββββββββ
Table Node:
βββββββββββββββββββββββββββ
β π employees β
βββββββββββββββββββββββββββ€
β Schema: dbo β
β Columns: 12 β
β Row Count: 1,250 β
βββββββββββββββββββββββββββ€
β Primary Keys: β
β β’ employee_id β
βββββββββββββββββββββββββββ€
β Foreign Keys: β
β β’ department_id β β
β departments(id) β
βββββββββββββββββββββββββββ€
β [View Details] β
βββββββββββββββββββββββββββ
Column Node:
βββββββββββββββββββββββββββ
β π employee_id β
βββββββββββββββββββββββββββ€
β Type: int β
β Nullable: No β
β Primary Key: Yes β
β Foreign Key: No β
βββββββββββββββββββββββββββ€
β Part of: employees β
βββββββββββββββββββββββββββ
List semua database yang dikonfigurasi.
{
"name": "list_databases",
"description": "List all configured databases"
}Scan database dan simpan ke knowledge base.
{
"name": "scan_database",
"arguments": {
"databaseId": "db_payroll"
}
}Search knowledge base dengan query.
{
"name": "search_knowledge",
"arguments": {
"query": "employee salary",
"databaseId": "db_payroll",
"options": {
"limit": 10,
"minScore": 0.1
}
}
}Get detail table.
{
"name": "get_table_info",
"arguments": {
"databaseId": "db_payroll",
"tableName": "employees",
"schema": "dbo"
}
}Get detail column.
{
"name": "get_column_info",
"arguments": {
"databaseId": "db_payroll",
"tableName": "employees",
"columnName": "salary"
}
}Get semua foreign key relationships untuk table.
{
"name": "get_table_relationships",
"arguments": {
"databaseId": "db_payroll",
"tableName": "employees"
}
}Get overview database termasuk semua tables.
{
"name": "get_database_overview",
"arguments": {
"databaseId": "db_payroll"
}
}Delete knowledge base untuk database.
{
"name": "delete_knowledge_base",
"arguments": {
"databaseId": "db_payroll"
}
}http://localhost:5005/api
List semua knowledge bases.
curl http://localhost:5005/api/knowledge-basesGet detail knowledge base.
curl http://localhost:5005/api/knowledge-bases/db_payrollGet graph data untuk visualization.
curl http://localhost:5005/api/knowledge-bases/db_payroll/graphResponse:
{
"nodes": [
{ "id": "db_payroll", "label": "Payroll DB", "type": "database", "color": "#00bcd4" },
{ "id": "employees", "label": "employees", "type": "table", "color": "#4caf50" },
{ "id": "employee_id", "label": "employee_id", "type": "column", "color": "#ffeb3b" }
],
"edges": [
{ "from": "employees", "to": "employee_id", "label": "pk" }
]
}Search dalam knowledge base.
curl "http://localhost:5005/api/knowledge-bases/db_payroll/search?q=salary"Scan database.
curl -X POST http://localhost:5005/api/scan/db_payrollScan semua database.
curl -X POST http://localhost:5005/api/scan-allList database configs.
curl http://localhost:5005/api/databasesTest koneksi database.
curl -X POST http://localhost:5005/api/test-connection/db_payrollHealth check.
curl http://localhost:5005/api/healthdb-knowledge-mcp/
βββ config/
β βββ databases.json # Konfigurasi database
βββ public/
β βββ index.html # UI Dashboard
βββ src/
β βββ connectors/ # Database connectors
β β βββ base.ts # Base connector class
β β βββ sqlserver.ts # SQL Server connector
β β βββ mysql.ts # MySQL connector
β β βββ postgresql.ts # PostgreSQL connector
β β βββ index.ts # Factory function
β βββ embedder/
β β βββ schema-embedder.ts # Schema β Embeddings
β βββ storage/
β β βββ vector-store.ts # JSON vector store
β βββ mcp-server.ts # MCP stdio server
β βββ server.ts # Express + UI server
βββ knowledgebases/ # Generated KB storage
βββ dist/ # Compiled output
βββ docs/
β βββ API.md # Detailed API docs
βββ CLAUDE.md # Developer guide
βββ README.md # This file
βββ package.json
{
"id": "db_payroll",
"name": "Payroll DB",
"type": "sqlserver",
"host": "localhost",
"port": 1433,
"database": "payroll",
"username": "sa",
"password": "***"
}{
"id": "db_hris",
"name": "HRIS DB",
"type": "mysql",
"host": "localhost",
"port": 3306,
"database": "hris",
"username": "root",
"password": "***"
}{
"id": "db_analytics",
"name": "Analytics DB",
"type": "postgresql",
"host": "localhost",
"port": 5432,
"database": "analytics",
"username": "postgres",
"password": "***"
}- No credentials stored in code: Semua credentials di
config/databases.json - Read-only access: Connector hanya baca metadata, tidak write
- Local storage: Knowledge base disimpan lokal, tidak dikirim ke cloud
- HTTPS-ready: Bisa taruh di reverse proxy (nginx, Caddy) untuk production
npm run buildnpm testnpm run lintMIT License - lihat LICENSE
- Fork repository
- Buat branch baru (
git checkout -b feature/xxx) - Commit changes (
git commit -m 'Add feature xxx') - Push ke branch (
git push origin feature/xxx) - Buat Pull Request
- Author: attapangestu
- GitHub: https://github.com/PTRJRepository/db-knowledge-mcp