Miinta Pipedrive
FreeNot checkedRead-only MCP server for Pipedrive that provides a digest-ready sales queue with overdue follow-ups, due today activities, and deals missing next action.
About
Read-only MCP server for Pipedrive that provides a digest-ready sales queue with overdue follow-ups, due today activities, and deals missing next action.
README
Read-only MCP (Model Context Protocol) server for Pipedrive that provides a digest-ready sales queue with:
- Overdue follow-up activities (from a Pipedrive filter)
- Due today follow-up activities (from a Pipedrive filter)
- Deals missing next action (from a Pipedrive filter)
Features
- Single Tool:
miinta.sales_queue.get- Returns a comprehensive sales digest - Pipedrive API v2: Uses modern Pipedrive API for activities, deals, persons, organizations, and stages
- Data Enrichment:
- Stage names for deals
- Contact information (email) for persons
- Direct deal URLs with configurable company domain
- Days overdue calculation for activities
- Deal metadata (undone activities count, last mail times)
- Smart Features:
- Cursor-based pagination support
- Bulk fetching for persons/organizations (avoids N+1 queries)
- Caching for improved performance (configurable TTL)
- Configurable timezone support (default: Europe/Madrid)
- Standard MCP stdio transport for streaming communication
- Bearer authentication for Pipedrive API
- Flexible: Filter IDs provided per request (not hardcoded in environment)
Quick Start
git clone https://github.com/alvarolloret/pipedrive-mcp.git && cd pipedrive-mcpmake all- Add MCP with one command (pick one):
claude mcp add pipedrive -- docker run -i --rm --env-file /Users/alvarodemuller/miinta/pipedrive-mcp/.env pipedrive-mcporcodex mcp add pipedrive -- docker run -i --rm --env-file /Users/alvarodemuller/miinta/pipedrive-mcp/.env pipedrive-mcp
Configuration
Pipedrive API Token
Get your API token from Pipedrive:
- Go to your Pipedrive account settings
- Navigate to Personal preferences → API
- Copy your API token
Create a .env file based on .env.example:
# Required: Pipedrive API Token (Bearer token)
PIPEDRIVE_API_TOKEN=your_pipedrive_api_token_here
# Optional: Pipedrive API Base URL (default: https://api.pipedrive.com/v2)
PIPEDRIVE_API_BASE=https://api.pipedrive.com/v2
# Optional: Pipedrive Company Domain for deal URLs (default: app.pipedrive.com)
# Example: yourcompany.pipedrive.com
PIPEDRIVE_COMPANY_DOMAIN=yourcompany.pipedrive.com
# Optional: MCP Authentication Token (required if not localhost)
MCP_AUTH_TOKEN=your_mcp_auth_token_here
# Optional: Default timezone (default: Europe/Madrid)
DEFAULT_TIMEZONE=Europe/Madrid
# Optional: Cache TTL in seconds (default: 3600)
CACHE_TTL_SECONDS=3600
# Optional: Maximum items per section (default: 50)
MAX_ITEMS_PER_SECTION=50
# Optional: Transport mode - stdio, http, or sse (default: stdio)
TRANSPORT_MODE=stdio
# Optional: HTTP Server Port (default: 3000, only used if TRANSPORT_MODE is http or sse)
HTTP_PORT=3000
Required Pipedrive Filters
You need to create three saved filters in your Pipedrive account:
- Overdue Activities Filter: Filter for activities with
done=falseanddue_date < today - Today's Activities Filter: Filter for activities with
done=falseanddue_date = today - Deals Missing Next Action Filter: Filter for open deals without a next activity scheduled
Get the filter IDs from the Pipedrive UI or API. These will be provided when calling the tool (not in environment variables).
MCP Tool
The server exposes one tool: miinta.sales_queue.get
Input Schema (JSON Schema):
{
"type": "object",
"additionalProperties": false,
"properties": {
"filters": {
"type": "object",
"additionalProperties": false,
"properties": {
"overdue_activities_filter_id": { "type": "integer" },
"today_activities_filter_id": { "type": "integer" },
"missing_next_action_deals_filter_id": { "type": "integer" }
},
"required": [
"overdue_activities_filter_id",
"today_activities_filter_id",
"missing_next_action_deals_filter_id"
]
},
"limits": {
"type": "object",
"additionalProperties": false,
"properties": {
"overdue": { "type": "integer", "minimum": 1, "maximum": 200, "default": 25 },
"today": { "type": "integer", "minimum": 1, "maximum": 200, "default": 25 },
"missing": { "type": "integer", "minimum": 1, "maximum": 200, "default": 25 }
}
},
"timezone": { "type": "string", "default": "Europe/Madrid" },
"now": {
"type": "string",
"description": "Optional ISO datetime override for deterministic testing"
},
"include_people_orgs": { "type": "boolean", "default": true }
},
"required": ["filters"]
}
Example Request:
{
"filters": {
"overdue_activities_filter_id": 111,
"today_activities_filter_id": 222,
"missing_next_action_deals_filter_id": 333
},
"limits": {
"overdue": 25,
"today": 25,
"missing": 25
},
"timezone": "Europe/Madrid",
"include_people_orgs": true
}
Example Response:
{
"generated_at": "2026-02-16T07:45:00+01:00",
"timezone": "Europe/Madrid",
"sections": {
"overdue": [
{
"activity_id": 123,
"activity_subject": "Follow-up email",
"activity_type": "email",
"due_date": "2026-02-14",
"days_overdue": 2,
"deal": {
"deal_id": 456,
"title": "Escola X — Pilot",
"stage_id": 3,
"stage_name": "Conversation open neutral",
"url": "https://yourcompany.pipedrive.com/deal/456"
},
"person": {
"id": 10,
"name": "Maria Rius",
"email": "[email protected]"
},
"org": {
"id": 20,
"name": "Escola X"
}
}
],
"due_today": [],
"missing_next_action": [
{
"deal_id": 789,
"title": "Universitat Y — Training",
"stage_id": 2,
"stage_name": "Contact",
"owner_id": 1,
"undone_activities_count": 0,
"next_activity_id": null,
"last_outgoing_mail_time": "2026-02-10T09:12:00Z",
"last_incoming_mail_time": null,
"url": "https://yourcompany.pipedrive.com/deal/789",
"person": {
"id": 11,
"name": "Joan Garcia"
},
"org": {
"id": 21,
"name": "Universitat Y"
}
}
]
},
"stats": {
"overdue_count": 1,
"due_today_count": 0,
"missing_next_action_count": 1
},
"source": {
"filter_ids": {
"overdue_activities_filter_id": 111,
"today_activities_filter_id": 222,
"missing_next_action_deals_filter_id": 333
}
}
}
Architecture
- Pipedrive Client (
pipedrive-client.ts): Handles all Pipedrive API v2 interactions- Activities filtering with
done=false, sorting - Deals filtering with
status=open,include_fields - Cursor-based pagination
- Bulk fetching for persons/organizations
- Activities filtering with
- Cache (
cache.ts): In-memory caching with TTL support - Sales Queue Service (
sales-queue.ts): Business logic for aggregating and enriching data- Stage name resolution
- Days overdue calculation
- Person/org enrichment with bulk fetching
- Deal URL generation with company domain
- MCP Server (
index.ts): MCP protocol implementation with stdio transport
API Version
This server uses Pipedrive API v2 endpoints:
/v2/activities- withfilter_id,done=false,sort_by=due_date/v2/deals- withfilter_id,status=open,include_fields/v2/persons- with bulkidsparameter/v2/organizations- with bulkidsparameter/v2/stages- cached for stage name resolution
Error Handling
The server implements two layers of error handling as per MCP spec:
- Protocol errors (JSON-RPC) for invalid args/unknown tool
- Tool execution errors: returns
isError: truewith readable error messages for:- Pipedrive auth failures
- Rate limit / transient upstream errors
- Invalid filter_id / permission issues
- Missing required parameters
Development
# Build TypeScript only
make build
# Full rebuild (clean + Docker image)
make all
# Clean compiled output
make clean
Acceptance Criteria
The server is considered "production-ready" when it:
- ✅ Accepts three filter IDs via tool call parameters
- ✅ Returns correct items from each filter
- ✅ Calculates correct
days_overduein specified timezone - ✅ Resolves correct
stage_namevalues from cached stage map - ✅ Includes person/org names when available
- ✅ Generates valid deal links using
PIPEDRIVE_COMPANY_DOMAIN - ✅ Handles pagination via
cursoruntil requested limits are filled - ✅ Includes deal fields:
undone_activities_count,last_incoming_mail_time,last_outgoing_mail_time - ✅ Uses bulk fetching for persons/orgs to avoid N+1 queries
- ✅ Returns output in exact spec format with
sections,stats,source
License
ISC
Install Miinta Pipedrive in Claude Desktop, Claude Code & Cursor
unyly install miinta-pipedrive-mcpInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add miinta-pipedrive-mcp -- npx -y pipedrive-mcpFAQ
Is Miinta Pipedrive MCP free?
Yes, Miinta Pipedrive MCP is free — one-click install via Unyly at no cost.
Does Miinta Pipedrive need an API key?
No, Miinta Pipedrive runs without API keys or environment variables.
Is Miinta Pipedrive hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Miinta Pipedrive in Claude Desktop, Claude Code or Cursor?
Open Miinta Pipedrive on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Miinta Pipedrive with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
