Rewriting the entire DataXLR8 TypeScript monorepo into independent Rust MCP servers for near-zero latency, minimal memory footprint, and total independence.
DataXLR8 is a business operations platform built on the Model Context Protocol (MCP). It provides 150+ AI-callable tools for CRM, sales, project management, meetings, analytics, and more.
This project rewrites everything from TypeScript/Node.js to Rust, resulting in:
| Metric | TypeScript (current) | Rust (target) |
|---|---|---|
| Tool call latency | ~10ms | ~0.2ms |
| Memory per MCP | ~110MB | ~10MB |
| Binary size | ~100MB (node_modules) | ~6.5MB |
| Cold start | ~500ms | ~5ms |
| Dependencies | npm ecosystem | Single static binary |
| Component | Repo | Status |
|---|---|---|
| Shared core library | dataxlr8-mcp-core | Done — DB pool, config, errors, logging |
| Feature flags MCP | dataxlr8-features-mcp | Done — 8 tools, 6.5MB binary |
| Code review & fixes | docs/ASSESSMENT.md | Done — all critical bugs fixed |
See docs/PLAN.md for the full migration plan and phase breakdown.
┌─────────────────────────────┐
│ dataxlr8-gateway-mcp │ ← Single HTTP endpoint
│ (spawns & manages all) │ for Claude Desktop / web app
└──────────┬──────────────────┘
│ stdio
┌──────┼──────┬──────┬──────┐
│ │ │ │ │
features deals meet portal ... ← 22 Rust MCP binaries
│ │ │ │ │
└──────┴──────┴──────┴──────┘
│
┌──────▼──────┐
│ PostgreSQL │ ← Single database
│ (shared) │ Schema namespaces per MCP
└─────────────┘
See docs/ARCHITECTURE.md for detailed design decisions.
| # | Repository | Purpose | Tools |
|---|---|---|---|
| 0 | dataxlr8-mcp-core | Shared Rust library | N/A |
| 1 | dataxlr8-features-mcp | Feature flag management | 8 |
| 2-22 | To be built | See PLAN.md | 140+ |
| 23 | dataxlr8-gateway-mcp | Auto-connector gateway | N/A |
See docs/SETUP.md for full setup instructions.
# Prerequisites: Rust, PostgreSQL
# Clone
git clone https://github.com/pdaxt/dataxlr8-mcp-core.git
git clone https://github.com/pdaxt/dataxlr8-features-mcp.git
# Configure
cd dataxlr8-features-mcp
echo 'DATABASE_URL=postgres://dataxlr8:dataxlr8@localhost:5432/dataxlr8' > .env
# Build & run
cargo build --release
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | ./target/release/dataxlr8-features-mcp| Document | Description |
|---|---|
| BRD.md | Business Requirements Document — single source of truth |
| STATUS.md | Live status dashboard — auto-updated per verified MCP |
| ACCEPTANCE.md | Acceptance criteria — test protocol for every MCP |
| PLAN.md | Migration plan — 7 phases, 24 repos |
| ARCHITECTURE.md | System design — gateway, schemas, stack choices |
| ASSESSMENT.md | Code review findings — bugs found and fixed |
| SETUP.md | Getting started — PostgreSQL, build, test |
| MCP | Phase | Spec |
|---|---|---|
| mcp-core | 0 | core.md |
| features-mcp | 0 | features.md |
| contacts-mcp | 1 | contacts.md |
| commissions-mcp | 1 | commissions.md |
| email-mcp | 1 | email.md |
| moderation-mcp | 1 | moderation.md |
| supplier-mcp | 2 | supplier.md |
| quotation-mcp | 2 | quotation.md |
| rooming-mcp | 2 | rooming.md |
| portal-mcp | 2 | portal.md |
| pdf-mcp | 2 | pdf.md |
| employees-mcp | 3 | employees.md |
| deals-mcp | 3 | deals.md |
| training-mcp | 3 | training.md |
| booking-mcp | 3 | booking.md |
| meet-mcp | 4 | meet.md |
| recording-mcp | 4 | recording.md |
| transcript-mcp | 4 | transcript.md |
| analytics-mcp | 4 | analytics.md |
| calendar-mcp | 4 | calendar.md |
| notification-mcp | 4 | notification.md |
| copilot-mcp | 5 | copilot.md |
| ai-analysis-mcp | 5 | ai-analysis.md |
| gateway-mcp | 5 | gateway.md |
- MCP SDK: rmcp v0.17 (official Rust MCP SDK)
- Database: sqlx v0.8 + PostgreSQL
- Async: tokio
- Serialization: serde
- Logging: tracing
The first completed MCP manages feature flags with 8 tools:
| Tool | Description |
|---|---|
get_all_flags |
Get all feature flags with overrides |
get_flag |
Get a specific flag by name |
check_flag |
Check if enabled (respects user/role overrides) |
check_flags_bulk |
Check multiple flags at once |
create_flag |
Create a new feature flag |
update_flag |
Update a flag's status/description |
delete_flag |
Delete a flag and all overrides |
set_override |
Set role/user override for a flag |
Override priority: user override > role override > global setting
Unknown flags default to disabled (fail-closed security).
Built with Rust. Powered by rmcp.