ckalima/pipedrive-mcp-server

๐Ÿ‘ค Customer Data Platforms๐ŸŸข Verified Active
0 Views
0 Installs

๐Ÿ“‡ โ˜๏ธ - MCP server for Pipedrive CRM. 155 tools covering deals, persons, organizations, activities, products, projects, tasks, leads, notes, mail, and fields. stdio transport, API-key auth, delete tools gated behind an env flag. Published on npm as @ckalima/pipedrive-mcp-server. MIT.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "ckalima-pipedrive-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "ckalima-pipedrive-mcp-server"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

Pipedrive MCP Server

npm version CI tests license: MIT

An MCP (Model Context Protocol) server for Pipedrive CRM integration with Claude Code and Claude Desktop. Query, create, and update CRM data directly from your AI assistant.

Why this server

  • API v2-first. Every entity uses Pipedrive's v2 REST API where it exists; v1 is used only for the capabilities that have no v2 equivalent (notes, mail, users, and leads CRUD). See API Versioning.
  • Contract-tested against the real OpenAPI spec. Request params, request bodies, and response shapes are checked against the vendored Pipedrive OpenAPI v2 definition (docs/api/openapi-v2.yaml) in tests/contract/, so the v2 tools can't silently drift from the documented API.
  • Live-smoke verified. The tool surface is broadly exercised against a real Pipedrive account (scripts/smoke-coverage.ts), with only API-unseedable surfaces (e.g. mail threads, project templates) left to manual checks. Coverage includes plan-gated endpoints such as Growth+ deal installments (scripts/smoke-installments.ts). Key write smokes (e.g. the task is_done flag) assert the field value actually changed on the wire, not just a 200.
  • Server-enforced capability modes. PIPEDRIVE_MODE picks a safety tier โ€” read-only, safe-write (the default: reads + non-destructive writes), or full โ€” and out-of-mode tools are both hidden from tools/list and refused if called directly. Deletes, conversions, and other irreversible writes (๐Ÿ”’ in the tool table) require full, so the server is read-and-create only out of the box. Every tool also carries MCP annotations (readOnlyHint/destructiveHint/idempotentHint) so policy-aware clients can tell reads from writes from deletes. See Capability modes.
  • MIT licensed, published with npm build provenance.

Honest limitations. Transport is STDIO only today (a Streamable HTTP flag is planned), and auth is via a Pipedrive API key, which matches the local/self-hosted tier this server targets. There is no hosted OAuth offering yet.

Features

  • Full CRM Operations: Deals, persons, organizations, activities
  • Email Analysis: Access mail threads and messages for engagement analysis
  • Field Discovery: Map custom field hash codes to human-readable names
  • Pipeline Management: List pipelines, stages, and users
  • Pagination Support: Cursor-based pagination for large datasets
  • Error Handling: Clear, actionable error messages

Quick Start

Fastest setup: npx โ€ฆ init

Run the one-command guided installer and follow the prompts. It opens the Pipedrive API-token page, validates your key live against your account, and generates a working MCP config for your client (Claude Desktop, Claude Code, Cursor, Windsurf, or VS Code):

npx -y @ckalima/pipedrive-mcp-server init

It always prints a paste-ready block and can optionally write it into your client's config file after a timestamped backup. Committed/shared config files use ${PIPEDRIVE_API_KEY} indirection, never a raw key. Prefer to configure by hand? The manual steps below still work.

1. Get Your Pipedrive API Key

  1. Log into Pipedrive
  2. Go to Settings > Personal preferences > API
  3. Copy your API key (40 characters)

2. Configure Claude Code

Add to your .mcp.json file:

{
  "mcpServers": {
    "pipedrive": {
      "command": "npx",
      "args": ["-y", "@ckalima/pipedrive-mcp-server"],
      "env": {
        "PIPEDRIVE_API_KEY": "your-40-character-api-key"
      }
    }
  }
}

Package name: the supported package is the scoped @ckalima/pipedrive-mcp-server. If you arrived from an older snippet that referenced the unscoped pipedrive-mcp-server, update your config to the scoped name above โ€” the unscoped name is a different, unrelated package.

You can also start it directly to verify your setup:

npx -y @ckalima/pipedrive-mcp-server

Or set the environment variable:

export PIPEDRIVE_API_KEY="your-40-character-api-key"

Environment Variables

VariableRequiredDefaultDescription
PIPEDRIVE_API_KEYYes-Your 40-character Pipedrive API token.
PIPEDRIVE_MODENosafe-writeServer-enforced capability tier: read-only (reads only), safe-write (reads + non-destructive writes), or full (all tools, including destructive). Out-of-mode tools are hidden from tools/list and refused if called directly. Authoritative when set to a recognized value; a blank value is treated as unset (the default applies), an unrecognized value falls back to read-only. See Capability modes.
PIPEDRIVE_ENABLE_DESTRUCTIVENofalseLegacy flag, superseded by PIPEDRIVE_MODE. When PIPEDRIVE_MODE is unset, true is treated as full and anything else as safe-write. Still honored for back-compat; prefer PIPEDRIVE_MODE=full.
PIPEDRIVE_IMAGE_BASE_DIRNo(unset)Allowlisted directory the server may read product images from when file_path is passed to the image-upload tools. Filesystem reads are disabled unless this is set, and a file_path must resolve within it. Leave unset and pass base64_data if the caller cannot share the server's filesystem. See SECURITY.md.

To enable destructive tools, set PIPEDRIVE_MODE=full (or, for back-compat, PIPEDRIVE_ENABLE_DESTRUCTIVE=true) in the env block of your .mcp.json alongside PIPEDRIVE_API_KEY. Below full, every ๐Ÿ”’ tool returns a DESTRUCTIVE_DISABLED error instead of acting, and tools above the active tier return a MODE_RESTRICTED error.

Capability modes

PIPEDRIVE_MODE sets a server-enforced safety tier. The tier is enforced two ways: out-of-mode tools are filtered out of tools/list (so the agent never sees them) and the dispatcher refuses any out-of-mode call by name before its handler runs, so the tier is a real guarantee rather than a UI hint.

ModeWhat's availableToolsDestructive ops
read-onlyread verbs only (list/get/search)69no
safe-writereads + non-destructive writes123no
fullall tools155yes

Recommended for first-time setup and agent evaluation: read-only. Let the agent look before it can touch anything, then widen the tier as you build trust.

Backward compatibility. PIPEDRIVE_MODE is authoritative when set. When it is unset, the mode is derived from the legacy PIPEDRIVE_ENABLE_DESTRUCTIVE flag (true โ†’ full, otherwise safe-write), so existing installs keep their execution behavior on upgrade: every tool that ran before still runs, and every tool gated before is still gated. The one observable change at the unset default (safe-write) is that the 32 destructive tools โ€” already refused at execution unless enabled โ€” are now also hidden from tools/list rather than listed-then-refused (so the listed surface is 123, not 155). An unrecognized PIPEDRIVE_MODE value falls back to read-only.

3. Start Using

Once configured, Claude can access your Pipedrive data:

  • "Show me open deals worth more than $10,000"
  • "Create a deal called 'Acme Contract' with value $50,000"
  • "Find all contacts at TechCorp"
  • "List recent email threads in my inbox"
  • "What custom fields are defined for deals?"

Available Tools

155 tools. ๐Ÿ”’ destructive (require PIPEDRIVE_MODE=full, off by default) ยท โญ‘ requires a Growth+ plan. The active capability mode governs which tools are listed.

This section is generated by npm run gen:docs from the live tool registry. Do not edit by hand - CI fails on drift.

Deals

ToolDescription
pipedrive_list_dealsList deals from Pipedrive with optional filtering by owner, person, organization, pipeline, stage, or status. Returns paginated results.
pipedrive_get_dealGet detailed information about a specific deal by ID, including all standard and custom fields.
pipedrive_create_dealCreate a new deal in Pipedrive. Only title is required; all other fields are optional.
pipedrive_update_dealUpdate an existing deal in Pipedrive. Specify the deal ID and any fields to update.
pipedrive_search_dealsSearch for deals by text in title. Supports fuzzy matching by default.
pipedrive_delete_deal ๐Ÿ”’Delete a deal. The deal will be marked as deleted and permanently removed after 30 days.
pipedrive_list_deal_followersList all followers for a deal.
pipedrive_add_deal_followerAdd a follower to a deal.
pipedrive_delete_deal_follower ๐Ÿ”’Remove a follower from a deal.
pipedrive_get_deal_followers_changelogGet the followers changelog for a deal.
pipedrive_list_deal_productsList line-item products attached to a deal. Returns paginated results.
pipedrive_add_deal_productAttach a single product as a line item to a deal.
pipedrive_update_deal_productUpdate a line-item product attached to a deal. All body fields optional.
pipedrive_delete_deal_product ๐Ÿ”’Remove a line-item product from a deal.
pipedrive_bulk_add_deal_productsBulk-add up to 100 line-item products to a deal in one request.
pipedrive_list_deal_discountsList all additional discounts applied to a deal.
pipedrive_add_deal_discountAdd an additional discount to a deal.
pipedrive_update_deal_discountUpdate an additional discount on a deal. All fields except IDs are optional.
pipedrive_delete_deal_discount ๐Ÿ”’Delete an additional discount from a deal.
pipedrive_list_deal_installments โญ‘List installments across one or more deals. Requires deal_ids. Growth+ plan required.
pipedrive_add_deal_installment โญ‘Add an installment (payment schedule entry) to a deal. Growth+ plan required; the deal must have at least one one-time product and no recurring products.
pipedrive_update_deal_installment โญ‘Update an installment on a deal. Growth+ plan required; all body fields optional.
pipedrive_delete_deal_installment ๐Ÿ”’ โญ‘Delete an installment from a deal. Growth+ plan required.
pipedrive_list_archived_dealsList archived deals with the same filtering as the active deals list (owner, person, organization, pipeline, stage, status). Returns paginated results.
pipedrive_convert_deal_to_lead ๐Ÿ”’Convert a deal to a lead (async job). DESTRUCTIVE: a successful conversion marks the source deal as deleted. Returns a conversion_id; the conversion runs asynchronously, so you MUST poll pipedrive_get_deal_conversion_status with the conversion_id until a terminal status. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_get_deal_conversion_statusGet the status of a deal-to-lead conversion job. Status contract: 'completed' (terminal, carries lead_id), 'failed'/'rejected' (terminal, stop polling, no lead produced), 'not_started'/'running' (in-progress, re-poll). Only 'completed' carries lead_id, and conversion status is purged after a few days, so a 404 returned after a prior valid status means the status was purged (terminal stop-polling signal, not a transient error). Use a bounded poll budget (e.g. up to ~6 attempts with short backoff), not an unbounded loop.

Persons

ToolDescription
pipedrive_list_personsList persons (contacts) from Pipedrive with optional filtering by owner, organization, or first letter of name.
pipedrive_get_personGet detailed information about a specific person by ID.
pipedrive_create_personCreate a new person (contact) in Pipedrive. Only name is required.
pipedrive_update_personUpdate an existing person in Pipedrive.
pipedrive_search_personsSearch for persons by name, email, or phone number.
pipedrive_delete_person ๐Ÿ”’Delete a person. The person will be marked as deleted and permanently removed after 30 days.
pipedrive_list_person_followersList all followers for a person.
pipedrive_add_person_followerAdd a follower to a person.
pipedrive_delete_person_follower ๐Ÿ”’Remove a follower from a person.
pipedrive_get_person_followers_changelogGet the followers changelog for a person.
pipedrive_get_person_pictureGet the picture for a person (read-only; returns picture metadata and sized image URLs). Returns an error if the person has no picture.

Organizations

ToolDescription
pipedrive_list_organizationsList organizations from Pipedrive with optional filtering by owner or first letter of name.
pipedrive_get_organizationGet detailed information about a specific organization by ID.
pipedrive_create_organizationCreate a new organization in Pipedrive. Only name is required.
pipedrive_update_organizationUpdate an existing organization in Pipedrive.
pipedrive_search_organizationsSearch for organizations by name or address.
pipedrive_delete_organization ๐Ÿ”’Delete an organization. The organization will be marked as deleted and permanently removed after 30 days.
pipedrive_list_organization_followersList all followers for an organization.
pipedrive_add_organization_followerAdd a follower to an organization.
pipedrive_delete_organization_follower ๐Ÿ”’Remove a follower from an organization.
pipedrive_get_organization_followers_changelogGet the followers changelog for an organization.

Activities

ToolDescription
pipedrive_list_activitiesList activities from Pipedrive with optional filtering by owner, deal, person, organization, type, or completion status.
pipedrive_get_activityGet detailed information about a specific activity by ID.
pipedrive_create_activityCreate a new activity in Pipedrive. Subject and type are required.
pipedrive_update_activityUpdate an existing activity in Pipedrive. Use this to mark activities as done.
pipedrive_delete_activity ๐Ÿ”’Delete an activity.

Notes

ToolDescription
pipedrive_list_notesList notes from Pipedrive with optional filtering by deal, person, organization, or lead.
pipedrive_get_noteGet detailed information about a specific note by ID.
pipedrive_create_noteCreate a new note in Pipedrive. Content is required. Link to a deal, person, organization, or lead.
pipedrive_update_noteUpdate an existing note in Pipedrive.
pipedrive_delete_note ๐Ÿ”’Delete a note.

Leads

ToolDescription
pipedrive_list_leadsList active (non-archived) leads from Pipedrive with optional filtering by owner, person, or organization.
pipedrive_list_archived_leadsList archived leads from Pipedrive with optional filtering by owner, person, or organization.
pipedrive_get_leadGet detailed information about a specific lead by UUID.
pipedrive_create_leadCreate a new lead in Pipedrive. Title is required; link to at least one of person_id or organization_id.
pipedrive_update_leadUpdate an existing lead in Pipedrive.
pipedrive_search_leadsSearch for leads in Pipedrive by title or associated contacts.
pipedrive_delete_lead ๐Ÿ”’Delete a lead. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_convert_lead_to_deal ๐Ÿ”’Convert a lead into a deal (Pipedrive v2). DESTRUCTIVE: a successful conversion marks the source lead as deleted. The conversion runs asynchronously; this tool polls until it completes (typically under 5s) and returns the new deal ID. If it is still running after ~30s, it returns the conversion_id and status for manual follow-up. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_get_lead_conversion_statusGet the status of an async lead-to-deal conversion by conversion ID (Pipedrive v2 GET /leads/{id}/convert/status/{conversion_id}).

Projects

ToolDescription
pipedrive_list_projectsList projects from Pipedrive with optional filtering by board, phase, or status. Returns paginated results. (Requires the Projects add-on; Projects API is in public beta.)
pipedrive_get_projectGet detailed information about a specific project by ID. (Requires the Projects add-on; Projects API is in public beta.)
pipedrive_create_projectCreate a new project in Pipedrive. Requires title, board_id, and phase_id. (Requires the Projects add-on; Projects API is in public beta.)
pipedrive_update_projectUpdate an existing project in Pipedrive. (Requires the Projects add-on; Projects API is in public beta.)
pipedrive_delete_project ๐Ÿ”’Delete a project. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true). (Requires the Projects add-on; Projects API is in public beta.)
pipedrive_search_projectsSearch for projects in Pipedrive by title. (Requires the Projects add-on; Projects API is in public beta.)
pipedrive_archive_projectArchive a project by setting its status to archived. (Requires the Projects add-on; Projects API is in public beta.)
pipedrive_list_project_tasksList tasks for a project you already have the ID for โ€” pass only id (the project ID). For broader task queries use pipedrive_list_tasks. (Projects add-on; Projects API in public beta.)
pipedrive_list_project_templatesList all project templates available in Pipedrive. Returns paginated results.
pipedrive_get_project_templateGet detailed information about a specific project template by ID.
pipedrive_list_archived_projectsList archived projects from Pipedrive with optional filtering by filter, phase, or status. (Projects add-on; Projects API in public beta.)
pipedrive_get_project_permitted_usersGet the list of user IDs that have permission to access a project. Returns an array of integer user IDs. (Projects add-on; Projects API in public beta.)
pipedrive_get_project_changelogGet the changelog for a project, showing what changed, when, and by whom. Returns paginated entries with actor_user_id, new_values, and old_values. (Projects add-on; Projects API in public beta.)

Products

ToolDescription
pipedrive_list_productsList products from Pipedrive with optional filtering by owner, IDs, or filter.
pipedrive_get_productGet detailed information about a specific product by ID.
pipedrive_search_productsSearch for products by name, code, or custom fields.
pipedrive_create_productCreate a new product in Pipedrive. Only name is required.
pipedrive_update_productUpdate an existing product in Pipedrive.
pipedrive_delete_product ๐Ÿ”’Delete a product. The product will be marked as deleted and permanently removed after 30 days.
pipedrive_list_product_variationsList all variations for a product.
pipedrive_add_product_variationAdd a variation to a product.
pipedrive_update_product_variationUpdate an existing product variation.
pipedrive_delete_product_variation ๐Ÿ”’Delete a product variation.
pipedrive_list_product_followersList all followers for a product.
pipedrive_add_product_followerAdd a follower to a product.
pipedrive_delete_product_follower ๐Ÿ”’Remove a follower from a product.
pipedrive_get_product_followers_changelogGet the followers changelog for a product.
pipedrive_get_product_imageGet the image of a product (returns a single image with a public URL valid for 7 days).
pipedrive_delete_product_image ๐Ÿ”’Delete the image of a product.
pipedrive_upload_product_imageUpload an image for a product. Provide the image via EITHER file_path OR base64_data (exactly one required). Supports png, jpeg, gif, and webp. Note: file_path is read by the SERVER process via the filesystem and is disabled by default; the operator must set PIPEDRIVE_IMAGE_BASE_DIR and the path must resolve within it; otherwise use base64_data, which is transport-safe.
pipedrive_update_product_imageUpdate (replace) the image of a product. Provide the image via EITHER file_path OR base64_data (exactly one required). Supports png, jpeg, gif, and webp. Note: file_path is read by the SERVER process via the filesystem and is disabled by default; the operator must set PIPEDRIVE_IMAGE_BASE_DIR and the path must resolve within it; otherwise use base64_data, which is transport-safe.

Tasks

ToolDescription
pipedrive_list_tasksGeneral task query across all projects, with optional project_id, assignee_id, done/milestone, and parent filters. Use for anything beyond a single project's full task list. (Projects add-on; Projects API in public beta.)
pipedrive_get_taskGet detailed information about a specific task by ID. (Projects add-on; Projects API in public beta.)
pipedrive_create_taskCreate a new task in a project. title and project_id are required. Use boolean is_done/is_milestone (same field names as the GET response); a milestone task must have a due_date. (Projects add-on; Projects API in public beta.)
pipedrive_update_taskUpdate an existing task. Only id is required; all other fields are optional. Use boolean is_done/is_milestone (same field names as the GET response); a milestone task must have a due_date. (Projects add-on; Projects API in public beta.)
pipedrive_delete_task ๐Ÿ”’Delete a task. If the task has subtasks, those will also be deleted. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true). (Projects add-on; Projects API in public beta.)

Boards & Phases

ToolDescription
pipedrive_list_boardsList all project boards. Returns the complete list (no pagination โ€” the boards endpoint returns all records at once). (Projects add-on; Projects API in public beta.)
pipedrive_get_boardGet detailed information about a specific project board by ID. (Projects add-on; Projects API in public beta.)
pipedrive_create_boardCreate a new project board. name is required. (Projects add-on; Projects API in public beta.)
pipedrive_update_boardUpdate an existing project board. Only id is required; all other fields are optional. (Projects add-on; Projects API in public beta.)
pipedrive_delete_board ๐Ÿ”’Delete a project board. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true). (Projects add-on; Projects API in public beta.)
pipedrive_list_phasesList all phases for a project board. board_id is required. Returns the complete list (no pagination โ€” the phases endpoint returns all records for a board at once). (Projects add-on; Projects API in public beta.)
pipedrive_get_phaseGet detailed information about a specific project phase by ID. (Projects add-on; Projects API in public beta.)
pipedrive_create_phaseCreate a new project phase. name and board_id are required. (Projects add-on; Projects API in public beta.)
pipedrive_update_phaseUpdate an existing project phase. Only id is required; all other fields are optional. Set board_id to move this phase to a different board. (Projects add-on; Projects API in public beta.)
pipedrive_delete_phase ๐Ÿ”’Delete a project phase. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true). (Projects add-on; Projects API in public beta.)

Mail

ToolDescription
pipedrive_get_person_emailsGet email messages linked to a person (company-wide, all users' emails). Returns metadata for emails from any user's mailbox that are linked to this person. Note: To get full message body, use pipedrive_get_mail_message, but only for emails in YOUR mailbox.
pipedrive_get_deal_emailsGet email messages linked to a deal (company-wide, all users' emails). Returns metadata for emails from any user's mailbox that are linked to this deal. Note: To get full message body, use pipedrive_get_mail_message, but only for emails in YOUR mailbox.
pipedrive_list_mail_threadsList mail threads from YOUR mailbox only (authenticated user). Other users' threads are not accessible. Use folder parameter to filter by inbox, drafts, sent, or archive.
pipedrive_get_mail_threadGet a mail thread with messages. Access depends on visibility settings - threads visible within deals/persons you can access should work. Returns 404 if the thread isn't accessible to you.
pipedrive_get_mail_messageGet full email message with body. Access depends on visibility settings - messages linked to deals/persons you can access should work, even if sent by other users.

Fields

ToolDescription
pipedrive_list_organization_fieldsList all organization field definitions, including custom fields. Use this to map 40-character field keys to human-readable names.
pipedrive_list_deal_fieldsList all deal field definitions, including custom fields. Essential for understanding deal data structure.
pipedrive_list_person_fieldsList all person field definitions, including custom fields. Use to understand contact data structure.
pipedrive_list_product_fieldsList all product field definitions, including custom fields.
pipedrive_list_project_fieldsList all project field definitions, including custom fields. (Projects add-on; Projects API in public beta.)
pipedrive_get_fieldGet details of a specific field by its key. Useful for looking up what a 40-character hash field key means.
pipedrive_create_deal_fieldCreate a deal custom field. field_name and field_type are required. For enum/set types, options is required. The response data.field_code is the 40-char hash you must keep to update or delete the field later.
pipedrive_update_deal_fieldUpdate a deal custom field by field_code. field_type and field_code cannot be changed.
pipedrive_delete_deal_field ๐Ÿ”’Delete a deal custom field by field_code. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_update_deal_field_optionsBulk-update option labels of a deal enum/set field. Atomic: the whole request fails if any option ID does not exist.
pipedrive_delete_deal_field_options ๐Ÿ”’Bulk-delete options of a deal enum/set field. Atomic: fails if any ID does not exist. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_create_person_fieldCreate a person custom field. field_name and field_type are required. For enum/set types, options is required. The response data.field_code is the 40-char hash to keep for later updates.
pipedrive_update_person_fieldUpdate a person custom field by field_code. field_type and field_code cannot be changed.
pipedrive_delete_person_field ๐Ÿ”’Delete a person custom field by field_code. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_update_person_field_optionsBulk-update option labels of a person enum/set field. Atomic: the whole request fails if any option ID does not exist.
pipedrive_delete_person_field_options ๐Ÿ”’Bulk-delete options of a person enum/set field. Atomic: fails if any ID does not exist. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_create_organization_fieldCreate an organization custom field. field_name and field_type are required. For enum/set types, options is required. The response data.field_code is the 40-char hash to keep for later updates.
pipedrive_update_organization_fieldUpdate an organization custom field by field_code. field_type and field_code cannot be changed.
pipedrive_delete_organization_field ๐Ÿ”’Delete an organization custom field by field_code. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_update_organization_field_optionsBulk-update option labels of an organization enum/set field. Atomic: the whole request fails if any option ID does not exist.
pipedrive_delete_organization_field_options ๐Ÿ”’Bulk-delete options of an organization enum/set field. Atomic: fails if any ID does not exist. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_create_product_fieldCreate a product custom field. field_name and field_type are required. For enum/set types, options is required. Product fields use a simpler model: no description, important_fields, or required_fields. The response data.field_code is the 40-char hash to keep for later updates.
pipedrive_update_product_fieldUpdate a product custom field by field_code. Only field_name and ui_visibility can be changed (product fields have no description/important_fields/required_fields).
pipedrive_delete_product_field ๐Ÿ”’Delete a product custom field by field_code. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_update_product_field_optionsBulk-update option labels of a product enum/set field. Atomic: the whole request fails if any option ID does not exist.
pipedrive_delete_product_field_options ๐Ÿ”’Bulk-delete options of a product enum/set field. Atomic: fails if any ID does not exist. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).

Pipelines & Stages

ToolDescription
pipedrive_list_pipelinesList sales pipelines in Pipedrive with cursor pagination. Pipelines contain stages that deals move through.
pipedrive_list_stagesList stages with cursor pagination, optionally filtered by pipeline. Stages represent steps in the sales process.
pipedrive_get_stageGet details of a specific stage by ID.
pipedrive_create_pipelineCreate a new sales pipeline. Only name is required. Set is_deal_probability_enabled to turn on weighted deal probability for the pipeline.
pipedrive_update_pipelineUpdate an existing pipeline. Provide the pipeline id and any fields to change.
pipedrive_delete_pipeline ๐Ÿ”’Delete a pipeline. Marks the pipeline as deleted. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).
pipedrive_create_stageCreate a new stage in a pipeline. name and pipeline_id are required. Use is_deal_rot_enabled and days_to_rotten to configure deal rotting.
pipedrive_update_stageUpdate an existing stage. Provide the stage id and any fields to change. Set pipeline_id to move the stage to another pipeline.
pipedrive_delete_stage ๐Ÿ”’Delete a stage. Marks the stage as deleted. Requires PIPEDRIVE_MODE=full (back-compat: PIPEDRIVE_ENABLE_DESTRUCTIVE=true).

Users

ToolDescription
pipedrive_list_usersList all users in the Pipedrive account. Useful for finding owner IDs when creating or filtering records.
pipedrive_get_userGet details of a specific user by ID.
pipedrive_get_current_userGet details of the current user (API key owner). Useful for verifying connection and getting your user ID.

Example Workflows

Analyze Deal Pipeline

"Show me all open deals in the Sales pipeline, sorted by value"
"Get details for deal 12345 including custom fields"
"Move deal 12345 to the Proposal stage"

Customer Research

"Find contacts at Acme Corp"
"Get emails for person 456 to analyze their engagement"
"What custom fields do we have for persons?"

Activity Management

"List my overdue activities"
"Create a follow-up call with John Smith for tomorrow at 2pm"
"Mark activity 789 as done"

Field Discovery

"List all custom fields for deals"
"What does field '8a4d7f...' mean?" (40-char hash)

Development

Local Setup

git clone https://github.com/ckalima/pipedrive-mcp-server.git
cd pipedrive-mcp-server
npm install
cp .env.example .env
# Edit .env with your API key

Build & Run

npm run build
npm run start

Development Mode

npm run dev

Test with MCP Inspector

npx @modelcontextprotocol/inspector node dist/index.js

API Versioning

This server uses both Pipedrive API versions, routing each call to the correct one automatically:

  • v2 (/api/v2): Deals, Persons, Organizations, Activities, Products, Projects, Tasks, Boards & Phases, Fields, Pipelines & Stages, and Leads search
  • v1 (/v1): Mail, Notes, Users, and Leads CRUD

Pipedrive is sunsetting v1. Selected v1 endpoints that have v2 equivalents reach end-of-life on 2025-12-31, with full v1 sunset expected around 2026-07-31; the v1 surfaces above (Mail, Notes, Users, Leads CRUD) have no v2 replacement yet. See docs/v1-only-capabilities.md for details.

Error Handling

Errors are returned with actionable suggestions:

{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "API key is invalid or expired",
    "suggestion": "Verify your API key at Pipedrive Settings > Personal preferences > API"
  }
}

Common error codes:

  • MISSING_API_KEY - Set PIPEDRIVE_API_KEY environment variable
  • INVALID_API_KEY - Check your API key in Pipedrive settings
  • NOT_FOUND - The requested resource doesn't exist
  • RATE_LIMITED - Wait 60 seconds before retrying
  • VALIDATION_ERROR - Check your request parameters

Security

See SECURITY.md for the threat model (data flows, credential handling, prompt-injection honesty, the AI/agent attack-surface catalog, operator best practices, and known limitations) and how to report a vulnerability privately. In short: STDIO-only with no network listener, the API token is read from the environment and never logged, destructive operations are gated off by default, and CRM tool output is structurally labeled as untrusted (an advisory mitigation, not a guarantee, see the residual-risk note).

For least-privilege deployment, mint the token from a dedicated, restricted Pipedrive user, keep destructive ops disabled unless needed, and isolate the agent's context so a prompt injection in CRM data has no exfiltration channel. See Operator best practices.

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT - see LICENSE

Links

Related MCP Servers

Aleksey-Panf/b2b-enrichment-mcp

๐Ÿ โ˜๏ธ - B2B lead enrichment server integrating Hunter.io and Apollo APIs. 9 tools for email discovery, domain search, company data, and contact verification.

๐Ÿ‘ค Customer Data Platforms0 views
antv/mcp-server-chart

๐ŸŽ–๏ธ ๐Ÿ“‡ โ˜๏ธ - A Model Context Protocol server for generating visual charts using AntV.

๐Ÿ‘ค Customer Data Platforms0 views
azmartone67/dchub-mcp-server

๐Ÿ“‡ โ˜๏ธ - Data-center, power & gas intelligence MCP server. 33 tools covering 21,000+ data-center facilities (170+ countries), 232 US power markets scored by the DC Hub Power Index (DCPI), 2,000+ tracked M&A deals, ISO grid telemetry (PJM, ERCOT, CAISO, MISO, SPP, NYISO), fiber routes, and energy pricing. Free to cite (CC-BY-4.0).

๐Ÿ‘ค Customer Data Platforms0 views
embeddedlayers/mcp-analytics

๐Ÿ โ˜๏ธ - Statistical analysis, forecasting, and ML for business data (Shopify, Stripe, WooCommerce, eBay, GA4, Search Console). Upload a CSV or connect live data sources โ€” ask a question in Claude or Cursor, get an interactive HTML report.

๐Ÿ‘ค Customer Data Platforms0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Active

Recent health check succeeded.

Last checked: 7/28/2026, 9:14:40 PM

Unclaimed listing (imported or pending owner verification). Claim it โ†’
โ˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.