npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

crmbridge-mcp

v1.0.0

Published

Sales pipeline and CRM intelligence MCP server — HubSpot, Pipedrive, Salesforce

Readme

npm version License: MIT TypeScript Node.js MCP Tests

Sales pipeline and CRM intelligence for AI agents. Connect Claude, Cursor, or any MCP-compatible agent to HubSpot, Pipedrive, and Salesforce — read-only, no webhooks, no setup beyond an access token.


Overview

CRMBridge MCP gives AI agents direct read access to your CRM data:

graph LR
    A[AI Agent<br/>Claude / Cursor] -->|MCP Tools| B[CRMBridge MCP]
    B --> C[HubSpot ✅]
    B --> D[Pipedrive ✅]
    B --> E[Salesforce ✅]

    style A fill:#1e293b,stroke:#3b82f6,color:#fff
    style B fill:#1e3a5f,stroke:#3b82f6,color:#fff
    style C fill:#1e293b,stroke:#22c55e,color:#fff
    style D fill:#1e293b,stroke:#22c55e,color:#fff
    style E fill:#1e293b,stroke:#22c55e,color:#fff

Use cases: Ask your AI agent to summarize your pipeline, find stale deals, identify top customers by lifecycle stage, or search contacts by company — all without leaving your coding environment.


Quick Start

npx (no install required)

npx crmbridge-mcp

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "crmbridge": {
      "command": "npx",
      "args": ["-y", "crmbridge-mcp"],
      "env": {
        "HUBSPOT_ACCESS_TOKEN": "your-hubspot-private-app-token"
      }
    }
  }
}

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Getting a HubSpot Token

  1. Go to HubSpot Settings → Integrations → Private Apps
  2. Create a new private app
  3. Grant scopes: crm.objects.contacts.read, crm.objects.deals.read, crm.pipelines.read
  4. Copy the access token

Tools

Phase 1 — Core CRM Access (Free, HubSpot)

| Tool | Description | |:-----|:-----------| | list_contacts | Paginated contacts with lifecycle stage, owner, and date filters | | list_deals | Deals by stage, pipeline, amount range, and close date | | get_pipeline | Pipeline overview with stages, positions, and weighted values | | search_contacts | Full-text search by name, email, company, or phone |

Phase 2 — Extended Access (Free)

| Tool | Description | |:-----|:-----------| | activity_feed | Recent CRM activities — emails, calls, meetings, notes | | deal_stage_history | Stage progression with timestamps and duration | | contact_timeline | Chronological touchpoint history per contact |

Phase 3 — Pro Features (requires PRO_LICENSE)

| Tool | Description | |:-----|:-----------| | pipeline_forecast | Weighted forecast with conservative / realistic / optimistic scenarios | | deal_scoring | Deal health score 0-100 with specific risk factors | | churn_signals | At-risk customer detection with confidence scores | | cohort_analysis | Monthly cohorts with retention and LTV metrics | | crm_hygiene | Data quality report — duplicates, stale deals, missing fields | | cross_crm_sync | Diff contacts and deals across two CRMs (dry-run, never writes) |


Provider Support

| Provider | Status | Auth | Notes | |:---------|:-------|:-----|:------| | HubSpot | ✅ | HUBSPOT_ACCESS_TOKEN | Private app token or OAuth2 | | Pipedrive | ✅ | PIPEDRIVE_API_TOKEN + PIPEDRIVE_COMPANY_DOMAIN | API key in query string | | Salesforce | ✅ | SALESFORCE_ACCESS_TOKEN + SALESFORCE_INSTANCE_URL | OAuth2 Bearer token |


Example Usage

List contacts by lifecycle stage

List all HubSpot contacts with lifecycle_stage = "customer"

Search for a contact

Search HubSpot for contacts at Acme Corp

Pipeline overview

Show me the full HubSpot sales pipeline with all stages

Find large deals

List HubSpot deals with amount over $10,000 in the Contract Sent stage

Environment Variables

| Variable | Required | Description | |:---------|:---------|:-----------| | HUBSPOT_ACCESS_TOKEN | For HubSpot | Private app token from HubSpot Settings | | PIPEDRIVE_API_TOKEN | For Pipedrive | API token from Pipedrive Personal preferences | | PIPEDRIVE_COMPANY_DOMAIN | For Pipedrive | Your Pipedrive subdomain (e.g. mycompany) | | SALESFORCE_ACCESS_TOKEN | For Salesforce | OAuth2 access token | | SALESFORCE_INSTANCE_URL | For Salesforce | Your Salesforce instance URL (e.g. https://myorg.my.salesforce.com) | | PRO_LICENSE | For Pro tools | License key from craftpipe.dev (format: CPK-...) |


Architecture

CRMBridge uses a provider-based adapter pattern — each CRM has an adapter implementing the shared CrmProvider interface. All operations are read-only; CRMBridge never writes to your CRM.

src/
  index.ts              — McpServer with 13 tools + Zod schemas
  types.ts              — Shared types (Contact, Deal, Pipeline, ...)
  adapters/
    types.ts            — CrmProvider interface + query types
    hubspot.ts          — HubSpot v3 API adapter
    pipedrive.ts        — Pipedrive v1 API adapter
    salesforce.ts       — Salesforce REST API v59.0 adapter (SOQL)
  tools/
    list_contacts.ts    — Contacts with filters + audit log
    list_deals.ts       — Deals with filters + audit log
    get_pipeline.ts     — Pipeline stages + audit log
    search_contacts.ts  — Full-text search + audit log
    activity_feed.ts    — CRM activities with filters
    deal_stage_history.ts — Stage changes, duration, skipped stages
    contact_timeline.ts — Chronological contact events
  lib/
    providers.ts        — Cached provider factory (hubspot/pipedrive/salesforce)
    fetch-retry.ts      — Retry on 429/5xx with exponential backoff
    audit.ts            — SQLite audit log at ~/.crmbridge/audit.db
  premium/
    gate.ts             — requirePro() license gate
    pipeline_forecast.ts — 3-scenario weighted forecast
    deal_scoring.ts     — 0-100 deal health scoring
    churn_signals.ts    — At-risk customer detection
    cohort_analysis.ts  — Monthly cohort retention + LTV
    crm_hygiene.ts      — Data quality issue detection
    cross_crm_sync.ts   — Dry-run cross-CRM diff

Audit log: All tool calls are logged to ~/.crmbridge/audit.db (SQLite, 90-day retention). Sensitive values (tokens, keys) are automatically redacted.


Development

git clone https://github.com/craftpipe/crmbridge-mcp
cd crmbridge-mcp
npm install
npm test          # vitest run — 245 tests
npm run build     # tsc → dist/
npm run typecheck # tsc --noEmit

License

MIT — see LICENSE