mcp-crm 1.1.1

Enterprise CRM MCP Server — unified access to Salesforce, HubSpot, Zoho CRM, and Pipedrive with contacts, companies, deals, activities, and pipeline management
Documentation

CRM MCP Server

Crates.io License ADK-Rust Enterprise Registry Ready

Unified CRM MCP server with 28 tools across 4 backends — Salesforce, HubSpot, Zoho CRM, and Pipedrive. Unified contacts, companies, deals, activities, pipelines, and notes with associations, search, and lifecycle management. Single Rust binary with feature-flagged backends and enterprise governance.

Architecture

Key Principles

  • Unified schema — agents see consistent types (Contact, Company, Deal, Activity, Pipeline, Note) regardless of backend
  • Feature-flagged backends — compile only what you need (--features salesforce,hubspot)
  • Full CRM lifecycle — search contacts, manage deals through pipeline stages, log activities, attach notes
  • No credential exposure — tokens stay in env vars, never reach LLM context
  • Single binary — no Node.js, no Python, no runtime dependencies

Comparison

Feature Generic REST Zapier mcp-crm
Multi-backend (4 CRMs) Partial
Unified schema
Pipeline stage management
Contact search
Activity logging Partial
Risk classification
Agent-native (MCP)
Single binary

Tools (28)

Contacts (6)

Tool Purpose Risk Class
list_contacts List contacts with optional limit Read-only
get_contact Get a contact by ID Read-only
create_contact Create a new contact Internal write
update_contact Update an existing contact Internal write
search_contacts Search by name, email, or query Read-only
delete_contact Delete a contact by ID External write

Companies (5)

Tool Purpose Risk Class
list_companies List companies/accounts Read-only
get_company Get a company by ID Read-only
create_company Create a new company Internal write
update_company Update an existing company Internal write
search_companies Search companies by name or domain Read-only

Deals (7)

Tool Purpose Risk Class
list_deals List deals/opportunities Read-only
get_deal Get a deal with stage, value, probability Read-only
create_deal Create a new deal Internal write
update_deal Update deal (stage, value, close date) Internal write
move_deal_stage Move a deal to a different pipeline stage Internal write
search_deals Search deals by name, stage, or value Read-only
delete_deal Delete a deal by ID External write

Activities (3)

Tool Purpose Risk Class
list_activities List activities for a contact or deal Read-only
create_activity Log a call, email, meeting, task, or note Internal write
update_activity Update an activity (mark done, change subject) Internal write

Pipelines (2)

Tool Purpose Risk Class
list_pipelines List sales pipelines and their stages Read-only
get_pipeline_summary Get deal counts and values per stage Read-only

Notes (2)

Tool Purpose Risk Class
list_notes List notes for a contact, company, or deal Read-only
create_note Add a note to a record Internal write

Associations (3)

Tool Purpose Risk Class
associate_contact_company Link a contact to a company Internal write
associate_deal_contact Link a deal to a contact Internal write
list_deal_contacts List contacts associated with a deal Read-only

Backends

Backend Protocol Auth Default Feature
Salesforce REST v59.0 + SOQL OAuth2
HubSpot CRM API v3 Private App Token
Zoho CRM REST API v2 OAuth2
Pipedrive REST API v1 API Token

Backend Capabilities

Capability Salesforce HubSpot Zoho CRM Pipedrive
Contacts CRUD
Contact search ✅ (SOQL) ✅ (native) ✅ (criteria) ✅ (term)
Contact delete
Companies CRUD
Company search ✅ (SOQL) ✅ (native) ✅ (criteria) ✅ (term)
Deals CRUD
Deal search ✅ (SOQL) ✅ (native) ✅ (criteria) ✅ (term)
Deal delete
Pipeline stages ✅ (with counts)
Activities ✅ (Task) ✅ (Engagement) ✅ (Task) ✅ (Activity)
Activity update
Notes
Associations ✅ (ContactRole) ✅ (v3 assoc) ✅ (lookup) ✅ (participants)

API Mapping

Entity Salesforce HubSpot Zoho CRM Pipedrive
Contact Contact contacts Contacts persons
Company Account companies Accounts organizations
Deal Opportunity deals Deals deals
Activity Task tasks/engagements Tasks activities
Note Note notes Notes notes
Pipeline OpportunityStage pipelines settings/pipeline pipelines + stages

Installation

cargo install mcp-crm --features all-backends

Or build from source:

git clone https://github.com/zavora-ai/mcp-crm
cd mcp-crm
cargo build --release --features all-backends

Feature flags

# Default: HubSpot + Pipedrive (lightest, token-based auth)
cargo install mcp-crm

# All backends
cargo install mcp-crm --features all-backends

# Specific backends
cargo install mcp-crm --no-default-features --features salesforce
cargo install mcp-crm --no-default-features --features "hubspot,zoho-crm"

Configuration

Salesforce

export SALESFORCE_INSTANCE_URL="https://yourorg.my.salesforce.com"
export SALESFORCE_TOKEN="00D..."

HubSpot

export HUBSPOT_TOKEN="pat-na1-xxxxxxxx"

Zoho CRM

export ZOHO_CRM_TOKEN="1000.xxxxxxxx"

Pipedrive

export PIPEDRIVE_TOKEN="xxxxxxxxxxxxxxxx"

Client Configuration

Claude Desktop

{
  "mcpServers": {
    "crm": {
      "command": "mcp-crm",
      "args": [],
      "env": {
        "HUBSPOT_TOKEN": "pat-na1-xxxx"
      }
    }
  }
}

Kiro

Add to .kiro/settings/mcp.json:

{
  "mcpServers": {
    "crm": {
      "command": "mcp-crm",
      "args": [],
      "env": {
        "PIPEDRIVE_TOKEN": "xxxx"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "crm": {
      "command": "mcp-crm",
      "args": [],
      "env": {
        "SALESFORCE_INSTANCE_URL": "https://yourorg.my.salesforce.com",
        "SALESFORCE_TOKEN": "00D..."
      }
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "crm": {
      "command": "mcp-crm",
      "args": [],
      "env": {
        "ZOHO_CRM_TOKEN": "1000.xxxx"
      }
    }
  }
}

Usage Examples

Contact management

"List my top 10 contacts"
→ list_contacts(limit: 10)

"Search for contacts at Acme Corp"
→ search_contacts(query: "Acme")

"Create a contact for Sarah Chen at Acme, email sarah@acme.com"
→ create_contact(first_name: "Sarah", last_name: "Chen", email: "sarah@acme.com")

"Link Sarah to the Acme company"
→ associate_contact_company(contact_id: "sarah-id", company_id: "acme-id")

"Delete the test contact"
→ delete_contact(id: "test-id")

Deal pipeline

"Show me all open deals"
→ list_deals(limit: 50)

"Search for deals related to enterprise"
→ search_deals(query: "enterprise")

"Create a $50k deal for the Acme enterprise contract"
→ create_deal(name: "Acme Enterprise", amount: 50000, stage: "Negotiation")

"Link Sarah to the Acme deal"
→ associate_deal_contact(deal_id: "deal-123", contact_id: "sarah-id")

"Who's involved in the Acme deal?"
→ list_deal_contacts(id: "deal-123")

"Move the Acme deal to Closed Won"
→ move_deal_stage(id: "deal-123", stage: "closedwon")

"What does our pipeline look like?"
→ get_pipeline_summary()

Companies

"Search for companies in fintech"
→ search_companies(query: "fintech")

Activity logging

"Log a call with Sarah about the proposal"
→ create_activity(activity_type: "call", subject: "Proposal discussion", contact_id: "sarah-id")

"Mark that task as done"
→ update_activity(id: "activity-id", done: true)

"Show all activities for the Acme deal"
→ list_activities(deal_id: "deal-123")

Notes

"Add a note to the Acme deal: 'Budget approved by CFO'"
→ create_note(content: "Budget approved by CFO", deal_id: "deal-123")

Documentation

Document Description
Architecture System diagram
mcp-server.toml ADK-Rust Enterprise registry manifest
CHANGELOG.md Version history
LICENSE Apache-2.0 license

Registry Compliance

This server implements the ADK MCP SDK contract:

  • HealthCheck — verifies backend connectivity on startup
  • mcp-server.toml — manifest with 28 tools, risk classes, and credential bindings
  • Manifest validation — startup fails fast on invalid manifest (SDK 0.1.3+)
  • Structured tracingRUST_LOG env-filter for observability

Contributors

James Karanja Maina

License

Apache-2.0 — see LICENSE for details.


Part of the ADK-Rust Enterprise MCP server ecosystem.

Built with ❤️ by Zavora AI