Dex MCP server 是官方的吗?
是的。它由 Dex(DanaHQ, Inc.)运营,地址为 `https://mcp.getdex.com/mcp`,并记录在 Dex 产品指南中。
@Dex
基本信息
Dex 是一款个人 CRM,会汇集你在 LinkedIn、邮箱等来源的联系人,并提醒你保持联系。它的托管 MCP 服务器让 AI 助手可以搜索和更新联系人、记录笔记、设置提醒、整理标签和分组,并操作你已连接的日历和收件箱。需要 Dex Professional 套餐。
https://mcp.getdex.com/mcpclaude mcp add dex --transport http https://mcp.getdex.com/mcpSearch contacts by name, email, phone number, or any keyword. Phone numbers are matched on digits; formatting and country code are ignored (a query that is only a phone number searches phone numbers instead of the text fields, so "+420 604 354 254", "420604354254" and "604354254" all find the same contact). Use `near` (Personal Dex only) for geographic proximity ("contacts in the Bay Area", "near Sydney") — the place is geocoded and contacts are matched by their own coordinates, so it finds people whose saved location differs from the query (e.g. "San Francisco" still matches "Bay Area"). `near` and `query` combine (AND): "engineers in the Bay Area" → query "engineer" + near "Bay Area". Returns up to `limit` results. Use an empty query to list contacts sorted by most recently interacted. In a Dex for Teams workspace these rows carry no keep-in-touch cadence: read one contact's Team and My cadences with dex_get_contact, see who is due with dex_list_upcoming_reminders_and_birthdays, or select contacts by cadence with dex_filter_contacts' has_frequency (true/false; it matches Team cadences only, so a contact with only a My cadence matches false).
List all contacts with cursor-based pagination. Returns lightweight contact summaries (id, name, company, job title, location). Use dex_get_contact for full details on a specific contact. Use dex_search_contacts for keyword search. In a Dex for Teams workspace these rows carry no keep-in-touch cadence: read one contact's Team and My cadences with dex_get_contact, see who is due with dex_list_upcoming_reminders_and_birthdays, or select contacts by cadence with dex_filter_contacts' has_frequency (true/false; it matches Team cadences only, so a contact with only a My cadence matches false).
Get a single contact by ID with full details including emails, phone numbers, location (text plus latitude/longitude when geocoded), keep-in-touch cadence (`frequency` / `never_keep_in_touch` on Personal Dex; in a Dex for Teams workspace, `keep_in_touch` with the contact's Team cadence as `team` and your own My cadence as `my`, each left out or null when not set, so `keep_in_touch: {}` means the contact has neither), tags, groups, custom fields, related contacts, and optionally recent notes/timeline. Workspace connections also include `team_interactions`: up to 20 members by recency, `members_total`, and the strongest current connection (2 × meeting_count + email_count; ties or all-zero use most recent email, meeting or shared note). Counts cover all of the member's emails/meetings with the contact across connected accounts, not just shared accounts, and require active membership and current sharing for that channel. Null means unknown. Former members retain dates only and never rank strongest. `linkedin_connected_at` is when the member connected with the contact on LinkedIn, and `linkedin_connected_at_exact` tells a real LinkedIn date (true) from the date Dex first saw the connection (false), which is only an upper bound; it is not an interaction, so a member known only through LinkedIn lists last, with no interaction dates, and never ranks strongest. The block is omitted if unavailable. In a workspace, a contact-type custom field appears in `contacts_custom_fields` as `{ custom_field_id, linked_contact_ids }`. Use `fields` to request only the relation data needed and keep rich contacts within the response limit.
Create one or more contacts. For a single contact, pass fields directly (first_name, email, etc.). For batch creation (e.g. CSV import), pass a `contacts` array instead (max 100). Creating does NOT deduplicate: a contact with the same name or email as an existing one becomes a second contact, so search first (dex_search_contacts) when the person may already be in Dex. For a batch, pass an `idempotency_key` and reuse it if you must send the same call again; without one, a repeated call creates every contact a second time. Returns every created contact (up to 100) with its new `id`; when full rows would not fit the response size limit, each row is trimmed to its id, names, job title and company (or, failing that, its id and names) — read the rest with dex_get_contact.
Update an existing contact. Only provided fields are changed. Pass `null` to clear an optional scalar such as website, company, job title, social profile, birthday, description, or location. For emails and phone numbers, you can add or remove entries — existing ones are preserved automatically. `is_archived: true` ARCHIVES the contact (hidden from lists, search, and reminders; reversible) — confirm with the user first, and use dex_archive_contacts for more than one contact. On a Dex for Teams workspace connection, where dex_archive_contacts is refused, this is the way to archive (true) or restore (false), one contact at a time.
Mark a keep-in-touch contact as done — records that the user was just in touch, so the cadence resets and the next reminder lands one frequency interval from now (the dashboard's "Mark as complete"). Pass snooze_days to instead push the next reminder out without recording a touch (the dashboard's snooze uses 7). Set or clear the cadence itself via dex_update_contact's keep_in_touch field, or dex_set_keep_in_touch for many contacts at once. In a Dex for Teams workspace it acts on the contact's Team or My cadence (pass kind when the contact has both) and returns the rescheduled `cadence`: "We met" on a Team cadence writes a note shared with the workspace, on a My cadence a private note (returned as `note_id`), and a viewer gets no note. That shared note counts as your own touch too, so marking the Team cadence done also restarts your My cadence on the contact, if you have one. A snooze only hides the cadence until it ends and never moves its due date, so one that ends on or before the next due date changes nothing and the result carries a `warning` saying so. Set or remove a workspace cadence with dex_set_keep_in_touch.
Set or clear the keep-in-touch cadence for up to 500 contacts in one call (chunk larger sets into multiple calls) — the bulk companion to dex_update_contact's keep_in_touch field. An interval sets how often to stay in touch ("7 days" = weekly, "14 days" = every 2 weeks, "1 mon" = monthly, "42 days" = every 6 weeks, "3 mons" = quarterly, "6 mons" = every 6 months, "1 year" = yearly) — this is "remind me to reach out every N", "stay in touch every N". "never" is the explicit don't-keep-in-touch mark — "no regular outreach", "stop reaching out", "don't keep in touch with them", "stop reminding me about them". "unset" simply clears the cadence so the contact has none — "no cadence", "remove the keep-in-touch" — leaving them unmarked rather than flagged. Every value overwrites whatever cadence each contact already has — and "never"/"unset" leave nothing in its place — so confirm with the user before changing a large set. Marking a due keep-in-touch as done is dex_complete_keep_in_touch, not this tool. In a Dex for Teams workspace (at most 100 contacts per call): kind is required — "team" sets the cadence shared with the whole workspace (needs write access), "my" your own private cadence — and the frequency is one of the workspace's own, chosen with exactly one of cadence (an interval must match a workspace frequency exactly; a month is 30 days, a year 365), frequency_days or frequency_id. A contact that already has a cadence of that kind moves to the new frequency, "unset" removes it, and "never" is not available. This tool never creates frequencies; an owner or admin adds them in Settings → Keep in touch.
Archive or unarchive up to 500 contacts by ID (chunk larger sets into multiple calls). Archived contacts keep all their data (notes, reminders, history) but are hidden from the default contact list, search, and keep-in-touch reminders — the reversible alternative to dex_delete_contacts, recommended for bulk cleanup. Always show the user which contacts will be archived and get their confirmation first. Archiving MORE THAN 20 contacts in one call is server-enforced: the call is rejected (nothing changes) unless it carries confirm: true AND expected_count equal to the number of distinct contact_ids — the count the user confirmed. Restoring (archived: false) is never gated. Find archived contacts with dex_filter_contacts archived_only:true and restore them with archived:false. Not available on a Dex for Teams workspace connection: archive or restore one contact at a time with dex_update_contact is_archived (true or false). That covers any number of contacts, and restoring too.
Delete one or more contacts by their IDs. This action is irreversible — when the user might want the contacts back later, use dex_archive_contacts instead. Not available on a Dex for Teams workspace connection: delete workspace contacts in the Dex app, or archive one contact at a time with dex_update_contact is_archived: true.
Merge duplicate contacts. Each group of IDs is consolidated into one surviving contact — all data is combined onto it and the other IDs are deleted. The survivor defaults to the oldest (longest-lived) record in the group, NOT the first ID you pass; to choose the survivor yourself, pass the group as { contact_ids, primary_contact_id } instead of a plain array. A chosen survivor also keeps its own fields (photo, company, title, LinkedIn); the others only fill its empty ones. Without one, values from the most recently updated contact win. Read the returned mergedContactIds to learn which contact ID survived each group instead of assuming the order you sent. This is irreversible. Not available on a Dex for Teams workspace connection: merge workspace contacts in the Dex app.
Read the user's relationship-priority tiers (tier_number + the label the user sees) and, optionally, the current priority of specific contacts. Priority is a built-in field on every contact, the same one the Priority Map and the contact page's priority control edit. Tiers are numbered from 1 (highest); the defaults are 1 Top, 2 High, 3 Medium, 4 Low, 5 None, but the user may have RENAMED them — always call this first and speak in the user's own labels, never the defaults. A contact with no priority_tier has no priority set, which is different from the "None" tier (a priority the user chose). Set priorities with dex_set_contact_priority. Personal Dex only.
Set or clear the relationship priority of up to 500 contacts in one call (chunk larger sets into multiple calls). It writes the same field the Priority Map and the contact page's priority control edit. Pass `tier` as the user's tier label (e.g. "Inner circle", matched case-insensitively) or its tier_number, both from dex_get_priority_tiers; null clears the priority, which is different from the "None" tier. An unknown tier is refused and nothing changes. Every value OVERWRITES each contact's current priority, so show the user exactly which contacts go to which tier and get explicit confirmation before calling. Build audiences with dex_filter_contacts (its priority_tier filter finds who is already in a tier). Personal Dex only.
Filter contacts with the same structured filters as Dex views: tags, groups, company, job title, social profile presence, LinkedIn history, location, interaction dates, keep-in-touch cadence, custom fields, and more. All conditions combine with AND. Up to 100 contact IDs can be fetched in one call; tenant ownership is enforced server-side. Archived contacts are omitted unless `archived_only: true`. Use this to answer questions like "contacts tagged investor at Google I talked to this year". For plain keyword or geographic search use dex_search_contacts; for full details on one contact use dex_get_contact.
Link one or more contacts to a contact as related contacts (e.g. family members, colleagues, people met through them). Relations are symmetric — linking A to B also links B to A — and carry no relationship label, so record the nature of the relationship in a note or the description instead. Resolve names to IDs with dex_search_contacts first. Related contacts appear in dex_get_contact under `related_contacts`. Re-linking an existing pair is a no-op.
Unlink one or more related contacts from a contact. Relations are symmetric, so removing A↔B clears the link from both sides. The contacts themselves are not modified or deleted.
List contact groups, most recent page first. Returns up to `limit` groups; if `has_more` is true, pass `next_cursor` back as `cursor` to fetch the rest.
Get a single group by ID, with its direct sub-groups (`sub_groups`) and its counts (`_count.groups_contacts` active contacts, `_count.sub_groups`), the same shape dex_create_group and dex_update_group return.
Create a new contact group, optionally nested under an existing group. A group cannot be its own parent or ancestor.
Update an existing group: name, emoji, description, or parent group. To nest a group under another, pass parent_id; pass parent_id: null to move it to the top level. A group cannot be its own parent or ancestor. Because null fields are omitted from tool results, a top-level group reads back with no parent_id key.
Delete a group. This action is irreversible. Not available on a Dex for Teams workspace connection: delete workspace groups in the Dex app.
Add up to 500 contacts to a group per call. Split larger selections into separate calls. result.added counts new memberships (the same number as result.count) and result.already_linked the IDs that were members already; any other processed ID matched no contact you can add. result.remaining is always present: retry any IDs in it to finish a partial write, and an empty list means every ID was processed.
Remove up to 500 contacts from a group per call. Split larger selections into separate calls. remaining is always present: retry any IDs in it to finish a partial write, and an empty list means every ID was processed.
List contacts in a group with pagination.
List all tags with optional pagination.
Get a single tag by ID.
Create a new tag. Tag names are unique regardless of letter case: if a tag with the same name already exists (e.g. "Design Partner" when you pass "design partner"), that tag is returned instead of a duplicate, with `existing: true` when its stored name differs in letter case from the one you passed. Repeating the exact name returns the same tag without the flag.
Update an existing tag.
Delete a tag. This action is irreversible. Not available on a Dex for Teams workspace connection: delete workspace tags in the Dex app.
Add tags to contacts. `tags` and `affected` cover every requested pair that is tagged after the call, including pairs that already were; `added` counts the links this call created and `already_linked` the ones that existed before it, so a pair in neither was not tagged. A retry with the same `idempotency_key` after the first call completed reports those pairs as `already_linked`.
Remove tags from contacts.
List reminders/tasks with optional filtering by contact, completion status, overdue status and due-date range, plus sorting and pagination. Each row carries the contacts it is linked to (`reminders_contacts`) and, on a Dex for Teams workspace connection, its tags (`tags`). "Today" and "overdue" are judged by the calendar day in UTC, not the user's timezone. On a Dex for Teams workspace connection, `assignee_id` also filters by who a reminder is assigned to.
Get a single reminder by ID.
Create a new reminder/task. When `idempotency_key` is supplied, repeat calls with the same key within the server's 24-hour idempotency window return the original reminder instead of creating a duplicate. On a Dex for Teams workspace connection the reminder is assigned to you unless `assignee_id` names another member (or null for unassigned).
Update an existing reminder. On a Dex for Teams workspace connection, `assignee_id` reassigns it (null unassigns).
Delete a reminder. This action is irreversible.
List notes on contact timelines with optional filtering by contact and date range. In a workspace, contact_id is required and date filters are unavailable.
Get a single note by ID.
List available note types (e.g. Meeting, Call, Coffee, Note).
Create a new note. Use dex_list_note_types first to discover available note types and pick the most appropriate one. `event_time` is required when `idempotency_key` is supplied; repeat calls with the same key and arguments within the server's 24-hour idempotency window return the original note instead of creating a duplicate. In a workspace, notes are shared with every member unless you pass audience "private" (only when the user asks for a private note).
Update an existing note's content or event_time. Only those two can change: this tool cannot change the note type, the audience (shared or private) or the linked contacts, so tell the user when they ask for one of those.
Delete a note. This action is irreversible.
List custom field definitions. Contact fields by default; pass entity_type "company" for company fields (Dex for Teams workspaces) or "all" for both. Each row carries its entity_type.
Create a new custom field definition. In a Dex for Teams workspace, only owners and admins can create field definitions.
Update an existing custom field definition. In a Dex for Teams workspace, only owners and admins can edit field definitions.
Delete a custom field definition. This action is irreversible. Deleting an ID that does not exist — including one you already deleted — returns a not-found error, NOT a success. Do not retry a delete that already succeeded; treat the first success as final. Not available on a Dex for Teams workspace connection: delete workspace custom fields in the Dex app.
Batch-update custom field values on contacts and, in a Dex for Teams workspace, on companies (use company_id instead of contact_id, with a company field). Each update has a mode: "replace" (the default) overwrites the stored value; "prepend" / "append" preserve the existing text atomically on the server and add the new text in front of / after it, joined by `separator` (defaults to a newline) — you do NOT need to read the current value first. Array values prepend/append as a de-duplicated list; date values only support replace. Send the one value key the field type takes: text_value (input, autocomplete), date_value (datepicker), array_value (multiselect). In a Dex for Teams workspace also: member_user_id (teammate), number_value (number), boolean_value (boolean) and linked_contact_ids (contact; replaces the whole set) and linked_company_ids (company; replaces the whole set). Those five are replace-only, take no separator, and cannot be combined with any other value key; null (or [] for the link sets) clears the value. A field only takes values on the entity it was created for.
List events across ALL of the user's connected calendars (Google/Microsoft) within a time range. Defaults to the next 7 days when no range is given. An optional free-text `query` searches titles, descriptions, locations, and attendees — combine it with a wide start/end range to find past or future meetings matching a person or company. Events are fetched live from the providers. A failure across all accounts returns an error; warnings indicate incomplete results when only some accounts failed. Each event's `email` field identifies which connected account it belongs to — pass that as `account_email` to get/update/delete it. On a Dex for Teams workspace connection it reads only what members share with the workspace. With a range (one day from `start` by default, at most 7 days; `query` is Personal Dex only and `limit` applies only with `contact_id`) it returns every event on your own calendars that you share with this workspace, in full, plus teammates' meetings with workspace contacts, oldest first. With `contact_id` instead of a range, it returns the meetings with that contact on every calendar shared with the workspace at subject and metadata or full level, yours included, newest first (`order: "newest_first"`) — capped, not exhaustive. A teammate's meeting carries `shared_id` (not an event id: get/update/delete stay Personal Dex only), `member_user_ids` (the members whose shared calendars hold it, not every attendee; names via dex_list_workspace_members) and `visibility`: `metadata` gives title, time and attendees, `full` adds the description.
Get a single calendar event by its provider event ID, including attendees, conferencing links, and recurrence flags, fetched live from the connected Google/Microsoft account. This tool writes nothing: it opts out of the note-metadata refresh the API performs for other clients. When the same address is connected under both providers, pass account_provider from the event returned by dex_list_calendar_events. Personal Dex connection only (on a Dex for Teams workspace connection it is refused). On a workspace connection, dex_list_calendar_events already returns your own events from the calendars you share there in full.
Create an event on the user's connected calendar (primary account by default). For a timed event set start_datetime + end_datetime; for an all-day event set start_date (end_date optional for multi-day). Attendees are added to the invite; whether they are emailed follows the calendar provider's default behavior. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
Update an existing calendar event by its provider event ID. Only provided fields change. To reschedule, provide BOTH start_datetime and end_datetime (or start_date for all-day) — new times replace the old ones and can switch an event between timed and all-day. Recurring events: this edits the whole series when given the series ID. Supply idempotency_key from the first attempt to safely retry a timed-out operation; use a fresh key for a new edit. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
Delete a calendar event by its provider event ID. Irreversible — and if the user organizes the event, deleting it cancels the meeting for all attendees. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
Search or list emails across ALL of the user's connected mail accounts (Google/Microsoft), fetched live from the providers. Omit `query` to LIST the most recent emails — set folder:'inbox' for received mail only ("my inbox"); the default includes the user's own sent messages. With `query`, matches plain text against subject, body, and participants — pass keywords like a name, company, or email domain; provider search operators (from:, to:) are neutralized. Date ranges: without `after`/`before`, results cover roughly the last 6 months — when listing, prefer following `next_cursor` over widening the range, and pass bounds only when the request names a period. Returns message metadata (sender, participants, subject, snippet, date, provider link) — not full bodies. Only listings paginate: search results are a single relevance-ranked page (`cursor` with `query` is rejected) — narrow a search with dates or better keywords instead. On a Dex for Teams workspace connection it reads only what members share with the workspace, one workspace contact at a time: pass `contact_id` (required there; `query`, `folder`, `cursor`, `after` and `before` are Personal Dex only) for the newest emails with that contact, from roughly the last 6 months, in every mailbox shared with the workspace at subject and metadata or full level, yours included, redacted to each share's level. That list is the newest `limit` emails, not exhaustive, with no cursor: if it comes back `_truncated`, ask again with a smaller `limit`. Each email there carries `shared_id`, `member_user_ids` (the members whose shared mailboxes hold it, not every recipient; names via dex_list_workspace_members) and `visibility`: `metadata` gives sender, participants, subject and date, `full` adds the snippet.
Run Dex Research on 1–5 contacts: searches the public web, reads the best pages, and stores a cited research note per contact (one-line summary + "Current focus" / "Background" / "Interests" bullets with [[n]] citations into `sources`) plus structured findings (LinkedIn, website, email, phone) with confidence and evidence. This is a PAID action that takes a minute or more per contact (contacts run in parallel, so the call lasts as long as the slowest one) — confirm with the user before researching a large set, and chunk bigger sets into several calls. A contact researched within the last 30 days returns its cached note at no cost unless `force: true`. A run auto-fills a contact's EMPTY linkedin/website fields from high-confidence findings (reported in `applied`) and preserves populated contact fields; a fresh run replaces the previous stored research note, findings, and review statuses. Email/phone findings come back `pending` for the user to confirm before you apply them with dex_update_contact. `outcome: "in_progress"` means another request is already researching that contact: read it back later with dex_get_contact_research rather than running again. Results are large — research a few contacts per call to stay under the response limit. Rows that are not `ok` are listed first so they survive truncation; an `ok` note that was truncated is still stored and readable with dex_get_contact_research.
Read the stored Dex Research note for 1–10 contacts without running anything (free and fast). Returns each contact's cited note and structured findings from its last run, or no `research` key when the contact has never been researched. Use this to check for existing research before paying for dex_research_contacts, to pick up a run that came back `in_progress`, or to re-read results a large run response truncated.
What's coming up for the user inside a date window, like the Dex homepage: the contacts whose birthday falls in the window, the open reminders due in it, and the keep-in-touch contacts due for a touch by the end of it. Defaults to the next 7 days starting today — use `days: 30` for the next month, or set `from` to look at a specific week. Use this for questions like "whose birthday is next week?", "who should I reach out to this week?" or "what do I have coming up?". Recurring reminders are listed on their next occurrence. Birthdays the user already marked done this year on the homepage are omitted. `keep_in_touch` DOES include contacts already overdue for a touch (flagged `is_overdue`) — the homepage keeps showing them as due until the touch is logged. Reminders are picked by the day they come up inside the window, so reminders due before `from` are NOT included — call dex_list_reminders with is_overdue=true for those. Dates, "today" and `is_overdue` are judged in UTC, not the user's timezone: a reminder due inside the window still reads `is_overdue: true` once its day is past in UTC, as one due on `from` is when `from` is the user's local date and UTC has already reached the next day. In a Dex for Teams workspace: `keep_in_touch` lists the workspace's Team cadences and your own My cadences due by the end of the window (narrow with kind; each row carries cadence_id, kind and frequency_days, and `due_on` accounts for a snooze); `reminders` are the workspace's open reminders, across the whole workspace rather than only yours, a recurring one listed on its current occurrence; and birthdays are not available, so `birthdays` is empty and `unavailable_in_workspace` lists it.
List the Dex for Teams workspaces the user belongs to, with their role in each and whether API & MCP access is turned on (api_access_enabled), and say where this MCP connection acts: `connection` is { kind: "personal" } for Personal Dex or { kind: "workspace", workspace_id } for a workspace, whose row is marked current: true. A connection acts in that one place only. To work somewhere else, an OAuth or device-code connection connects again and picks Personal or another workspace on the Dex consent page; an API key acts where it was created (Personal or one workspace), so use a key created for the other place in Dex under Settings → Dex API & MCP. Naming another workspace with ?workspace= is refused. A workspace only works with api_access_enabled true, which a workspace owner or admin turns on in the workspace's settings. Roles: viewer can read; standard, admin and owner can read and write, and owners and admins can also create and edit custom-field definitions over MCP. Whatever the role, a workspace connection never deletes contacts, tags, groups or custom fields, merges contacts, or runs dex_archive_contacts (any number of contacts, archive or restore): archive or restore one contact at a time with dex_update_contact is_archived, and do the rest in the Dex app.
List the active members of this connection's Dex for Teams workspace: member_id, name, email, role and is_you (the caller). Use a member's member_id as `assignee_id` on dex_create_reminder, dex_update_reminder and dex_list_reminders. Pass `query` (part of a name or email) to find a specific member, e.g. before assigning a reminder. Returns up to `limit` members (default 50); if `has_more` is true, pass `next_cursor` back as `cursor` with the SAME `query` to continue; a new query starts without a cursor. Only active members can be assigned. Viewers can read but cannot edit or complete a reminder, so assigning one strands it; prefer owner, admin or standard members. Workspace connections only: a Personal connection has no workspace and this tool is refused.
List the user's attention items: email threads Dex flagged as waiting on them — a reply someone expects, or an action they need to take (sign, renew, set something up) — newest first, as shown on the Dex home page. Use for "what's waiting on me?", "who do I owe a reply?" or "anything in my inbox I need to deal with?". Each item has a short `title` (e.g. "Reply to Matt about the intro"), an optional `body`, the sender, the linked Dex contact when the sender is one, and a `link` that opens the thread in the mail client. Open items only unless include_resolved is true. Items are generated hourly from the last couple of hours of mail; this tool does not scan the mailbox itself. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
Read the email thread behind an attention item, live from the user's mailbox, oldest message first. The newest 5 messages are returned (`earlier_messages_omitted` counts the rest); each carries its `id`, sender, `reply_to` when set (where a reply goes), date, whether the user wrote it (`from_user`), and its text, clipped to 4000 characters. Call this before dex_send_attention_item_reply: its `message_id` is the `id` of the message being answered — normally the latest one not from the user. Nothing is stored or changed. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
Draft the user's reply to an attention item's thread with Dex's drafting model, in the user's saved drafting style. Returns `{ body }`; nothing is sent or saved. The reply goes into the thread under its own subject, to the answered message's `reply_to` (or its sender) as dex_get_attention_item_thread shows — show the draft to the user, and send it (as written or edited) with dex_send_attention_item_reply only once they approve. To revise, pass the current draft and a short `instruction` ("shorter", "say no politely"). Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
Send the user's reply into an attention item's email thread, from the mailbox that holds it, to the sender of the message being answered — then mark the item done. Irreversible: the email goes to a real person. Only call after the user has seen and approved the exact text. `message_id` is the `id` of the message being answered, from dex_get_attention_item_thread. Plain text. An item already done, or one whose thread can no longer be read, is refused and nothing is sent. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
Mark an attention item done (it leaves the home page), or reopen one with done: false. Use when the user says they handled it some other way or it needs no reply. Sending a reply with dex_send_attention_item_reply already marks it done. Personal Dex connection only (on a Dex for Teams workspace connection it is refused).
Dex MCP Server 是个人 CRM 工具 Dex 官方托管的 Model Context Protocol 端点,让 AI 助手可以直接在对话中搜索、更新和整理你的联系人、笔记、提醒、日历和邮件。
Dex 汇集来自 LinkedIn、邮箱、手机等来源的联系人,自动同步职位变化,并提醒你保持联系。Dex MCP server 通过 Streamable HTTP(地址 https://mcp.getdex.com/mcp)把这些人脉数据开放给 Claude Code、Claude Desktop、Cursor、VS Code 等 MCP 客户端。
你需要一个 Professional 套餐的 Dex 账号。服务器地址是 https://mcp.getdex.com/mcp,传输方式为 Streamable HTTP(不是 SSE)。在支持 MCP OAuth 的客户端中,首次连接时会在浏览器中完成登录:登录 Dex 后,在授权页面批准该客户端。
Dex 还提供了一条安装命令,可自动检测本机已安装的受支持客户端(需要 Node.js):
npx -y add-mcp "https://mcp.getdex.com/mcp" -y
claude mcp add --transport http dex https://mcp.getdex.com/mcp
然后在 Claude Code 中运行 /mcp 完成认证。
打开 Settings,进入 Connectors,选择 Add custom connector,名称填 Dex,URL 粘贴 https://mcp.getdex.com/mcp。点击 Add,并在提示时用你的 Dex 账号登录。
在项目的 .cursor/mcp.json(或全局的 ~/.cursor/mcp.json)中添加以下内容,然后重启 Cursor:
{
"mcpServers": {
"dex": {
"type": "http",
"url": "https://mcp.getdex.com/mcp"
}
}
}
在 .vscode/mcp.json 中添加同一个服务器:
{
"servers": {
"dex": {
"type": "http",
"url": "https://mcp.getdex.com/mcp"
}
}
}
在没有浏览器的环境中,可在 Settings > Dex API & MCP 中创建 key(以 dex_ 开头),并通过 Authorization 请求头发送,例如 Authorization: Bearer ${DEX_API_KEY}。
该服务器提供 57 个工具,名称都以 dex_ 开头:
dex_search_contacts(按姓名、邮箱、电话或关键词搜索)、dex_filter_contacts、dex_get_contact、dex_create_contact(单个或批量,例如 CSV 导入)、dex_update_contact、dex_merge_contacts、dex_archive_contacts,以及不可恢复的 dex_delete_contacts。dex_set_keep_in_touch、dex_complete_keep_in_touch、dex_get_priority_tiers 和 dex_set_contact_priority,其中多个工具单次最多可处理 500 个联系人。dex_create_note、dex_list_note_types、dex_list_notes、dex_create_reminder、dex_list_reminders 和 dex_list_upcoming_reminders_and_birthdays。dex_add_tags_to_contacts)、分组工具(如 dex_add_contacts_to_group)以及自定义字段工具(包括 dex_set_custom_field_values)。dex_list_calendar_events、dex_create_calendar_event、dex_update_calendar_event、dex_delete_calendar_event,以及实时读取已连接邮箱的 dex_search_emails。dex_research_contacts、dex_get_contact_research、dex_list_workspaces 和 dex_list_workspace_members。https://mcp.getdex.com/mcp。claude mcp remove dex,再用 --transport http 重新添加,并通过 claude mcp list 确认显示为 http。是的。它由 Dex(DanaHQ, Inc.)运营,地址为 `https://mcp.getdex.com/mcp`,并记录在 Dex 产品指南中。
不免费。它需要 Dex Professional 套餐,撰写本文时定价页标注为每月 20 美元。Premium 套餐不包含 MCP 访问,也没有单独的附加选项。
支持 MCP OAuth 的客户端会打开浏览器窗口,让你登录 Dex 并批准访问。在无浏览器环境中,可以生成 `dex_` API key,并以 `Authorization: Bearer` 请求头发送。
Dex 列出了 Claude Code、Claude Desktop、claude.ai、Cursor、VS Code(Copilot)、Gemini CLI、Zed、Codex、Goose、OpenCode,以及其他支持 Streamable HTTP 的 MCP 客户端。ChatGPT 用户可以改为安装 Dex ChatGPT App。
不能。`dex_search_emails` 只返回邮件元数据(发件人、参与者、主题、摘要、日期和链接),从不返回完整正文;不指定日期范围时,搜索大约覆盖最近六个月。
可以,部分工具具有破坏性:`dex_delete_contacts`、`dex_delete_note`、`dex_delete_reminder` 等操作不可恢复;删除你组织的日历事件会为所有参会者取消会议。批准写入操作前请仔细确认,若之后可能还需要联系人,优先使用 `dex_archive_contacts`。
Dex 的远程 MCP 服务器是一个托管的 Model Context Protocol 端点,地址是 https://mcp.getdex.com/mcp,AI 助手无需在本地安装或运行任何东西即可连接。
把端点 https://mcp.getdex.com/mcp 添加到任意支持 MCP 的客户端,比如 Claude Code、Cursor 或 VS Code。本页的接入代码块可以一步配置好每个客户端。
需要。Dex 使用 OAuth——第一次连接时,你的 MCP 客户端会打开浏览器窗口登录并授权,之后会复用这个凭证。
Dex 暴露的是 streamable-http 端点,这是远程 MCP 服务器普遍使用、主流客户端都支持的传输方式。
Hosted AdLoop: Google Ads, Reddit Ads, GA4 and Tag Manager in claude.ai, ChatGPT and more, with a preview before every change.
Write, schedule and publish LinkedIn posts in your own voice, reply to comments and read your analytics, all from your AI assistant. Remote MCP server with OAuth sign-in.
Ideate, create, and deliver with Adobe pro tools
Read-only, source-backed AI model pricing, history, comparisons and cost calculations.
Email for long-term client relationships: ARVX reads each person first and remembers every pair.
评论