Skip to main content
Glama
sksachan

Dealer Fusion MCP Server

by sksachan

Dealer Fusion Workspace

Intelligence layer for an automotive dealership network.
Reads CRM, DMS, CDP, and Adobe Analytics data; responds to and qualifies customers; writes back to CRM; emits PII-free OEM signals.

Architecture

Dealer_Fusion_Workspace/
  dealer_fusion_mock_data_stub_v1/   — 31 JSONL data files + 11 JSON schemas
  dealer_fusion_core/                — shared DuckDB loader + privacy helper
  dealer_fusion_mcp/                 — FastMCP server  (port 4010, Bearer auth)
  dealer_fusion_explorer/
    backend/                         — FastAPI CRUD + graph API  (port 8020)
    frontend/                        — React + Vite + TypeScript  (port 5200)
  start_explorer.sh                  — stable backend start script

Related MCP server: MCP Business AI Transformation

Prerequisites

  • Python 3.11+

  • Node.js 18+

  • npm 9+

Quick start

# 1 — Install Python dependencies
pip install -e dealer_fusion_core/
pip install -r requirements.txt

# 2 — Terminal 1: MCP server
cd /path/to/Dealer_Fusion_Workspace
python3 -m dealer_fusion_mcp.server

# 3 — Terminal 2: Explorer backend  (use the script — limits file-watching to src dirs only)
./start_explorer.sh

# 4 — Terminal 3: Explorer frontend
cd dealer_fusion_explorer/frontend
npm install
npm run dev -- --port 5200

Open the Explorer UI at http://localhost:5200

Services

Service

Port

Start command

MCP Server

4010

python3 -m dealer_fusion_mcp.server

Explorer Backend

8020

./start_explorer.sh

Explorer Frontend

5200

cd dealer_fusion_explorer/frontend && npm run dev -- --port 5200

Environment variables

Variable

Default

Description

DEALER_FUSION_MCP_PORT

4010

MCP server port

DEALER_FUSION_MCP_TOKEN

dev-token

Bearer token for all MCP requests

DEALER_FUSION_DATA_DIR

auto-resolved

Override path to data/jsonl/

DEALER_FUSION_SCHEMAS_DIR

auto-resolved

Override path to schemas/

EXPLORER_API_PORT

8020

Explorer backend port

MCP server (14 tools)

Authentication: Authorization: Bearer dev-token
Protocol: MCP streamable HTTP / SSE — POST http://localhost:4010/mcp

Lead & CRM

Tool

Required args

Returns

list_leads

limit?

{items, total_count} — paginated lead list

get_lead

lead_id

{lead, contact, latest_decision}

search_leads

query

{items} — full-text match across lead fields

get_customer_360

customer_key

11-section view: customer, CRM, DMS, CDP, identity graph, segments, leads, activities, appointments, deals, service history

Inventory & DMS

Tool

Required args

Returns

search_inventory

model?, fuel_type?, price_max?, dealer_id?, in_stock_only?

{items} — filtered vehicle list

get_dealer_inventory

dealer_id

{grouped} — vehicles keyed by inventory status

get_deal

deal_id

{deal, finance_contract, trade_in, repair_orders}

get_service_history

customer_key

{service_appointments, repair_orders}

Analytics & CDP

Tool

Required args

Returns

get_customer_journey

customer_key

{events} — merged chronological timeline (XDM + CRM + Dealer Fusion decisions)

get_segment_members

segment_id

{items} — CDP profiles in that segment

get_network_kpis

region?, brand?, model?, date_from?, date_to?

{items} — OEM KPI rows (privacy-gated, PII-free)

Dealer Ops

Tool

Required args

Returns

get_dealer_inbox

dealer_id, limit?

{items} — leads sorted: handover-required → temperature → score

get_dealer_staff

dealer_id

{items} — staff roster with roles

simulate_crm_writeback

lead_id, decision_type

{payload} — CRM upsert payload (no mutation)

decision_type must be one of: acknowledge_and_escalate · acknowledge_and_nurture · suppress_marketing_or_privacy_only · merge_duplicate_then_update_owner

Explorer API (http://localhost:8020)

GET  /api/entities                              — all 31 entity types with record counts
GET  /api/{entity}/list?page=&limit=&search=    — paginated, searchable table
GET  /api/{entity}/{id}                         — single record
POST /api/{entity}                              — create record
PUT  /api/{entity}/{id}                         — update record
DELETE /api/{entity}/{id}                       — soft-delete (sets deleted_at)
GET  /api/customers/{customer_key}/golden-record — force-graph payload for Golden Record view
GET  /api/search?q=                             — cross-entity full-text search
GET  /api/schema                                — all 31 tables with columns, row counts, and FK relationships
GET  /health                                    — health check

Explorer UI views

Tab

Description

Entity Browser

Browse, search, edit, and soft-delete records across all 31 tables

Golden Record

Search by name / email / CUST_XXXXX ID → interactive force-graph of linked entities

Dealer Inbox

Live lead triage view sorted by urgency: handover → temperature → score

KPI Dashboard

OEM network KPIs with dealer filter and trend charts

Schema

ERD-style force-graph of all 31 tables with FK edges, domain colour-coding, and column explorer

Data model

31 tables across 8 domains — all joined on customer_key.

Domain

Tables

Core

customers, households, dealers, staff, vehicles_inventory, inventory_price_changes

CRM

crm_leads, crm_contacts, crm_activities, crm_opportunities, crm_appointments, crm_tasks

DMS

dms_customers, dms_deals, dms_finance_contracts, dms_repair_orders, dms_service_appointments, dms_trade_ins

CDP

cdp_profiles, cdp_segment_memberships, cdp_identity_graph

Adobe

adobe_xdm_events, adobe_analytics_hits

Dealer Fusion

dealer_fusion_decisions

Reference

journey_stage_reference, campaign_reference, segment_reference, vehicle_reference, scenario_reference, scenario_coverage_matrix

OEM

oem_network_kpi_daily

Key joins: customers.customer_key → CRM, DMS, CDP, Adobe, and Dealer Fusion tables. See dealer_fusion_mock_data_stub_v1/DATA_DICTIONARY.md for the full relationship map.

Tests

# Python — MCP server + Explorer backend
python3 -m pytest dealer_fusion_mcp/tests/ dealer_fusion_explorer/backend/tests/ -v

# Frontend — Vitest
cd dealer_fusion_explorer/frontend && npx vitest run

MCP smoke test

# Quick connectivity check using the MCP JSON-RPC protocol
python3 - << 'EOF'
import requests, json
r = requests.post("http://localhost:4010/mcp",
    headers={"Authorization": "Bearer dev-token",
             "Content-Type": "application/json",
             "Accept": "application/json, text/event-stream"},
    json={"jsonrpc":"2.0","id":1,"method":"initialize","params":{
        "protocolVersion":"2024-11-05","capabilities":{},
        "clientInfo":{"name":"test","version":"1"}}},
    stream=True, timeout=10)
sid = r.headers.get("mcp-session-id")
for line in r.iter_lines():
    line = line.decode() if isinstance(line, bytes) else line
    if line.startswith("data:"):
        d = json.loads(line[5:])
        print("Server:", d["result"]["serverInfo"])
        print("Session:", sid)
        break
EOF

PS brand design tokens (Explorer UI)

--ps-bg-primary:     #0A0B0D
--ps-bg-surface:     #141518
--ps-bg-elevated:    #1E2025
--ps-text-primary:   #FFFFFF
--ps-text-secondary: #9CA3AF
--ps-accent:         #E63312
--ps-border:         rgba(255,255,255,0.10)
F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sksachan/dealer-fusion-workspace'

If you have feedback or need assistance with the MCP directory API, please join our Discord server