Unofficial Dex CRM MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Unofficial Dex CRM MCP Server add a note about my meeting with Jane Smith today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Unofficial Dex CRM MCP Server
An MCP (Model Context Protocol) server that exposes the Dex personal CRM API to AI assistants like Cursor, Claude Desktop, VS Code Copilot, and any MCP-compatible client.
Features
27 focused tools covering all core Dex CRM operations
Contacts: get, create, update, delete, merge duplicates
Groups: create, update, delete, list/add/remove members
Tags: create, update, delete, manage tag-contact associations
Reminders: create, update, delete
Notes/Timeline: create, update, delete (with note type support)
Custom Fields: list, create, update, delete
Unified search across contacts, groups, tags, reminders, notes, and views
User profile
Related MCP server: PipeDrive MCP Server
Prerequisites
Node.js >= 18
A Dex account with an API key (Dex Professional plan required)
Setup
1. Install dependencies
npm install2. Build
npm run build3. Get your Dex API Key
Go to Dex Settings > API and copy your API key.
4. Configure your AI client
Cursor
Add to .cursor/mcp.json in your project root (or ~/.cursor/mcp.json for global):
{
"mcpServers": {
"dex": {
"command": "node",
"args": ["/absolute/path/to/unnoficial-dex-mcp/dist/index.js"],
"env": {
"DEX_API_KEY": "dex_your_api_key_here"
}
}
}
}Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"dex": {
"command": "node",
"args": ["/absolute/path/to/unnoficial-dex-mcp/dist/index.js"],
"env": {
"DEX_API_KEY": "dex_your_api_key_here"
}
}
}
}VS Code
Add to .vscode/mcp.json in your project root:
{
"mcpServers": {
"dex": {
"command": "node",
"args": ["/absolute/path/to/unnoficial-dex-mcp/dist/index.js"],
"env": {
"DEX_API_KEY": "dex_your_api_key_here"
}
}
}
}Development
Run the server in development mode (with hot reload via tsx):
DEX_API_KEY=dex_your_key npm run devTesting with MCP Inspector
The project includes a built-in inspect script that opens the MCP Inspector UI in your browser. It loads DEX_API_KEY from your .env file automatically.
npm run build
npm run inspectThis starts the inspector at http://localhost:6274 where you can browse all tools and invoke them interactively.
Note: Requires Node.js >= 18. If using nvm:
nvm use 21(or any 18+) before running.
Available Tools (27)
Tool | Description |
Search | |
| Unified search across contacts, groups, tags, reminders, notes, and views |
Contacts | |
| Get full contact details by ID (includes tags, groups, notes) |
| Create a new contact |
| Update a contact by ID |
| Delete a contact by ID |
| Merge duplicate contacts into one |
Groups | |
| Create a new group |
| Update a group's name or emoji |
| Delete a group |
| List contacts in a specific group |
| Add contacts to a group |
| Remove contacts from a group |
Tags | |
| Create a new tag |
| Update a tag's name or color |
| Delete a tag |
| Add, remove, or create-and-assign tags to contacts |
Reminders | |
| Create a reminder (supports recurrence) |
| Update a reminder |
| Delete a reminder |
Notes / Timeline | |
| Create a note (types: meeting, call, email, note, coffee, etc.) |
| Update a note |
| Delete a note |
Custom Fields | |
| List all custom field definitions |
| Create a custom field |
| Update a custom field |
| Delete a custom field |
User | |
| Get current user profile |
License
MIT
Available Tools
28 toolsdex_add_contacts_to_groupC
Add one or more contacts to a group by providing their IDs.
Inputs: groupId (required), contactIds (required).
dex_create_contactB
Create a new contact. Supports all fields: name, company, job title, emails (contact_emails), phone numbers (contact_phone_numbers), social profiles (linkedin, twitter, facebook, instagram, telegram, tiktok, youtube), addresses (legacy_contact_addresses), custom fields, group and tag associations, and more.
Inputs: contact (required).
dex_create_custom_fieldC
Create a new custom field definition that can be set on any contact.
Inputs: custom_field (required).
dex_create_groupC
Create a new group for organizing contacts.
Inputs: name (required), emoji.
dex_create_noteA
Create a new note or timeline entry. Requires event_time (ISO datetime). Use meeting_type to categorize: 'call', 'coffee', 'email', 'meal', 'meeting', 'networking', 'note', 'other', 'party', 'text'. The meeting_type_id is resolved automatically from the note types API. Associate contacts via timeline_items_contacts array of { contact_id }. The note text goes in the 'note' field.
Inputs: note (required).
dex_create_reminderC
Create a new reminder, optionally linked to contacts. Supports recurrence (e.g. 'weekly', 'monthly').
Inputs: text (required), dueDate (required), dueTime, contactIds, +2 more.
dex_create_tagC
Create a new tag with a name and optional color for categorizing contacts.
Inputs: name (required), color.
dex_delete_contactA
Permanently delete a contact by ID. Removes the contact and all associated data.
Inputs: contactId (required).
dex_delete_custom_fieldA
Permanently delete a custom field and remove its values from all contacts.
Inputs: customFieldId (required).
dex_delete_groupA
Permanently delete a group. The contacts in the group are not deleted.
Inputs: groupId (required).
dex_delete_noteA
Permanently delete a note by ID. Removes the timeline entry from all associated contacts.
Inputs: noteId (required).
dex_delete_reminderA
Permanently delete a reminder. For recurring reminders, this stops all future occurrences.
Inputs: reminderId (required).
dex_delete_tagA
Permanently delete a tag. It is removed from all contacts it was assigned to.
Inputs: tagId (required).
dex_get_contactA
Retrieve a single contact by ID. Automatically fetches the contact's notes/timeline entries and includes them in the response under a 'notes' key. Use notesLimit to control how many notes are fetched (default 50). If the contact has more notes than a single page, pagination is handled automatically.
Inputs: contactId (required), includeNotes, notesLimit.
dex_get_current_userA
Retrieve the profile of the currently authenticated user including name, email, time zone, and subscription plan.
Inputs: no named parameters.
dex_list_contactsB
List contacts with advanced filtering, pagination, and field selection. Use 'where' to filter by starred, archived, frequency, birthday, location, job title, tags, groups, and more. Examples: find today's birthdays (where.hasBirthday), contacts with a keep-in-touch frequency (where.hasFrequency), monthly contacts (where.hasFrequency='monthly'), starred contacts (where.isStarred=true).
Inputs: take, skip, cursor, where, +2 more.
dex_list_custom_fieldsB
Retrieve all custom field definitions. Custom fields allow adding structured data to contacts beyond the built-in fields.
Inputs: no named parameters.
dex_list_group_contactsA
List all contacts that belong to a specific group. Supports pagination.
Inputs: groupId (required), take, cursor.
dex_manage_contact_tagsA
Manage tag-contact associations. Actions: 'add' assigns existing tags to contacts, 'remove' unassigns tags from contacts, 'create_and_assign' creates new tags by name and assigns them to a single contact (reuses existing tags with the same name).
Inputs: action (required), contactIds, tagIds, contactId, +1 more.
dex_merge_contactsA
Merge two or more duplicate contacts into one. The first ID in the group becomes the primary contact that is kept and enriched with data from the others. You can merge multiple groups at once.
Inputs: contactIds (required).
dex_remove_contacts_from_groupC
Remove one or more contacts from a group. The contacts themselves are not deleted.
Inputs: groupId (required), contactIds (required).
dex_searchB
Search across Dex entities by keyword. Set 'entity' to choose what to search: 'contacts' (name, email, company), 'groups', 'tags', 'reminders', 'notes' (timeline entries), or 'views'. For reminders you can also filter by startDate, endDate, and isComplete. For contacts you can filter by archived status.
Inputs: entity (required), searchQuery, take, cursor, +5 more.
dex_update_contactB
Update a contact by ID. Only included fields are modified; omitted fields remain unchanged. Supports all fields: name, company, job title, emails (contact_emails array with email/label/ranking), phone numbers (contact_phone_numbers array with phone_number/country_code/label/ranking), social profiles (linkedin, twitter, facebook, instagram, telegram, tiktok, youtube), addresses (legacy_contact_addresses), custom field values, group associations (groups_contacts), tag associations (tags_contacts with append/remove), related contacts, birthday, archival status, and more.
Inputs: contactId (required), data (required).
dex_update_custom_fieldC
Update a custom field definition by ID (e.g. rename it).
Inputs: customFieldId (required), custom_field (required).
dex_update_groupC
Update a group's name or emoji by ID.
Inputs: groupId (required), name, emoji.
dex_update_noteB
Update a note by ID. Can modify the note text, event_time, meeting_type ('call', 'coffee', 'email', 'meal', 'meeting', 'networking', 'note', 'other', 'party', 'text'), associated contacts (timeline_items_contacts), or custom_emoji. The meeting_type_id is resolved automatically.
Inputs: noteId (required), note (required).
dex_update_reminderB
Update a reminder by ID. Modify text, due date/time, linked contacts, recurrence, completion status, and notification flags.
Inputs: reminderId (required), reminder (required).
dex_update_tagC
Update a tag's name or color by ID.
Inputs: tagId (required), name, color.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 28 tools
Each tool has a distinct purpose with clear boundaries, such as dex_create_contact for creation, dex_update_contact for updates, and dex_list_contacts for listing. The actions (add, create, delete, get, list, manage, merge, remove, search, update) are well-defined and target specific resources (contacts, groups, tags, notes, reminders, custom fields), eliminating ambiguity.
All tool names follow a consistent 'dex_verb_noun' pattern with snake_case, such as dex_create_contact, dex_update_contact, and dex_delete_contact. This uniformity makes the tools predictable and easy to understand across the entire set.
With 28 tools, the count is borderline high for a CRM server, potentially overwhelming for agents. While the tools cover comprehensive operations, a more streamlined set might improve usability without sacrificing functionality.
The toolset provides complete CRUD and lifecycle coverage for all core CRM entities (contacts, groups, tags, notes, reminders, custom fields), including advanced features like merging contacts, managing associations, and searching. No obvious gaps exist for typical agent workflows in this domain.
Maintenance
Related MCP Connectors
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for Bitrix24 CRM integration that enables AI agents to manage contacts, deals, tasks, leads, and companies. It also provides advanced tools for sales team monitoring, performance analytics, and automated CRM search capabilities.9 npm-
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for the Pipedrive CRM API, enabling AI assistants to read, write, and analyze CRM data conversationally through 100 tools including performance reporting and loss analysis.101 npm8MIT
- AlicenseBqualityDmaintenanceA comprehensive MCP server that connects AI assistants to GoHighLevel CRM, enabling management of contacts, conversations, calendars, pipelines, payments, and more through 60+ tools.6440 npm1MIT
- AlicenseCqualityCmaintenanceAn MCP server that gives AI agents full access to Follow Up Boss CRM via natural language, enabling CRUD operations on people, deals, appointments, and more through 160 tools.10033 npm1Elastic 2.0