davidswolf/DexMCPServer
If you are the rightful owner of DexMCPServer and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
An MCP server for Dex, a personal CRM system, enabling AI assistants to find contacts, access relationship history, and enrich contact information.
Dex MCP Server
An MCP (Model Context Protocol) server for Dex, a personal CRM system. This server enables AI assistants to intelligently find contacts, access relationship history, and enrich contact information.
Features
🔍 Smart Contact Discovery
- Fuzzy name matching: Handles typos, nicknames, and name variations
- Exact matching: Find contacts by email, phone, or social media URLs
- Confidence scoring: Ranked results with match confidence levels
📚 Relationship History
- Complete timeline: View all interactions with a contact
- Notes access: Retrieve conversation history and context
- Reminders tracking: See upcoming and past reminders
✨ Contact Enrichment
- Smart updates: Add new information without losing existing data
- Note creation: Document interactions and important details
- Reminder management: Set follow-up reminders
Installation
-
Clone this repository
-
Install dependencies:
npm install -
Create a
.envfile with your Dex API credentials:DEX_API_KEY=your_api_key_here DEX_API_BASE_URL=https://api.getdex.com/api/rest -
Build the project:
npm run build
Configuration
Claude Desktop
Add to your Claude Desktop config file (claude_desktop_config.json):
{
"mcpServers": {
"dex": {
"command": "node",
"args": ["/path/to/DexMCPServer/dist/index.js"],
"env": {
"DEX_API_KEY": "your_api_key_here",
"DEX_API_BASE_URL": "https://api.getdex.com/api/rest"
}
}
}
}
Other MCP Clients
Use the server via stdio transport:
node dist/index.js
Available Tools
Contact Discovery
find_contact- Search for contacts with smart matchingget_contact_details- Get complete contact information
Relationship History
get_contact_history- View complete interaction timelineget_contact_notes- Retrieve all notes for a contactget_contact_reminders- Get reminders for a contact
Contact Enrichment
enrich_contact- Update contact with new informationadd_contact_note- Create a new notecreate_contact_reminder- Set a follow-up reminder
Usage Examples
Find a contact by email
"I got an email from john@example.com, what do I know about this person?"
Fuzzy name search
"What's the latest with Bob from Google?"
Enrich after a meeting
"I just met with Sarah Johnson, she's now a PM at Microsoft"
Development
Run in development mode:
npm run dev
Build for production:
npm run build
Code Quality Commands
Run all quality checks:
npm run check
Auto-fix issues:
npm run check:fix
Individual commands:
npm run lint # Run ESLint
npm run lint:fix # Auto-fix lint issues
npm run format # Format code with Prettier
npm run format:check # Check formatting
npm run test # Run tests
npm run test:coverage # Run tests with coverage
npm run audit # Security audit
npm run security # Snyk security scan
Pre-commit Hooks
The project uses Husky to run lint-staged before commits, ensuring code quality. This automatically:
- Lints and fixes TypeScript files
- Formats code with Prettier
- Prevents commits with quality issues
Testing
Run the test suite:
npm test
Watch mode for development:
npm run test:watch
Generate coverage report:
npm run test:coverage
Coverage thresholds:
- Lines: 80%
- Functions: 80%
- Branches: 75%
- Statements: 80%
Security
This server handles Personally Identifiable Information (PII) from your Dex CRM. Security is a top priority.
Key security features:
- 🔒 No local PII storage (in-memory cache only, 5-minute TTL)
- 🔐 HTTPS-only API communication
- 🚫 No logging of sensitive data
- ✅ Automated vulnerability scanning (Snyk + npm audit)
- 🛡️ Input validation and sanitization
- 📋 ESLint security plugin for static analysis
Important:
- Never commit your
.envfile or API keys - Regularly update dependencies (
npm audit fix) - Review for best practices and vulnerability reporting
For security concerns, see our .
Architecture
- Fuzzy Matching: Uses Fuse.js for intelligent name matching
- Caching: 5-minute contact cache for faster searches
- Smart Merging: Preserves existing data when enriching contacts
- Error Handling: Comprehensive error messages and retry logic
License
ISC