Miinta Pipedrive
БесплатноНе проверен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.
Описание
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
Установить Miinta Pipedrive в Claude Desktop, Claude Code, Cursor
unyly install miinta-pipedrive-mcpСтавит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.
Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh
Или настроить вручную
Выполни в терминале:
claude mcp add miinta-pipedrive-mcp -- npx -y pipedrive-mcpFAQ
Miinta Pipedrive MCP бесплатный?
Да, Miinta Pipedrive MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Miinta Pipedrive?
Нет, Miinta Pipedrive работает без API-ключей и переменных окружения.
Miinta Pipedrive — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Miinta Pipedrive в Claude Desktop, Claude Code или Cursor?
Открой Miinta Pipedrive на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: 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
автор: mcpdotdirectCompare Miinta Pipedrive with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
