Pipedrive Mcp

io.github.mmedum由 GitHub 帳號 mmedum 發布v1.3.1更新於 Nov 6, 2026

Pipedrive CRM as MCP tools: find deals, people and companies, and move deals through a pipeline.

已驗證STDIO僅桌面效率與工作流商業與電商

概覽

AI 產生的概覽

非官方的 Pipedrive CRM 伺服器,讓助理在單一工作區內搜尋、讀取、編輯商機、聯絡人、公司、活動與備註,並推動商機流程。

可以做什麼
  • 跨商機、聯絡人、公司、產品、檔案與潛在客戶做全文搜尋,把名稱換成 id,並查看權杖對應的帳號與工作區
  • 讀取單筆記錄,依條件分頁列出商機、聯絡人、公司、活動與備註,自訂欄位以工作區名稱為準
  • 透過具保護機制的 manage 工具建立、編輯與刪除商機、聯絡人、公司、活動與備註
  • 推動商機流程:切換階段、標記成交或流失、重新開啟、封存、取消封存,以及完成或重開活動
  • 列出銷售流程與階段,並在 Pipedrive 中欄位變動後重新整理自訂欄位快取
  • 以資源範本提供記錄,供直接掛載記錄而非呼叫工具的用戶端使用
適用情境
適合在 Pipedrive 中工作、希望助理協助查詢記錄、維護商機、聯絡人與活動,並推動商機在流程中前進,而不必離開聊天用戶端的人。
執行需求
本機 Go 執行檔(以 go install 或發行壓縮檔安裝),由用戶端以 stdio 子程序啟動;需要一個 Pipedrive 工作區子網域與 API 權杖,可用 login 指令存入作業系統鑰匙圈,或以 PIPEDRIVE_API_TOKEN 與 PIPEDRIVE_COMPANY_DOMAIN 提供;需要連線至 Pipedrive 的網路。
安裝前請注意
伺服器持有可讀寫真實 CRM 的 Pipedrive API 權杖;寫入會修改或刪除真實記錄,刪除在 30 天後永久生效且無法復原。可用 dry_run 或 PIPEDRIVE_DRY_RUN 先演練,並以 overwrite 與 expect_version 控制覆寫。此為非官方專案,與 Pipedrive 無關聯,每次呼叫由用戶端確認。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Pipedrive Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

pipedrive-mcp

[CI] [Latest release] [Go Reference] [License: Apache 2.0]

Pipedrive CRM as MCP tools. Find deals, people and companies, write to them, and move deals through a pipeline.

A single Go binary that speaks Model Context Protocol over stdio, from the current protocol revision back to 2024-11-05. It runs as a subprocess of your client, on your own machine, against one Pipedrive workspace, with your own API token. There is no server to host and no shared deployment.

It is for a person who works in Pipedrive and wants an assistant to do that work with them: turn a name into a record, read deals, people, organizations, activities and notes with their custom fields under the names the workspace gives them, edit any of them, and move a deal through its pipeline: won, lost, reopened, archived or into another stage.

Unofficial. Not affiliated with or endorsed by Pipedrive.

Goals and non-goals

Goals:

  • Nothing is overwritten that you did not mean to replace. A write to an existing record reads it first, and refuses to replace a field that holds a value unless the call names that field. Pipedrive has no undo.
  • A refusal says how to proceed. It names what it protects and the argument that would permit the write.
  • Results speak the workspace's language. Custom fields come back under their names and dropdowns as their labels, and are written the same way.
  • Your workspace stays yours. Every call runs with your token, only to your workspace's Pipedrive address, with no telemetry. Logs never carry a payload or the token.

Non-goals:

  • More than one workspace per server. It resolves one at startup.
  • Clearing a field. Pipedrive v2 rejects a null and stores an empty string as a value, so a field can be changed but not emptied.
  • Merging records. A merge destroys one record's values across a record nobody read, and no refusal could name what it would lose.
  • Products, leads, files, projects and goals. search finds some of them, and no tool reads or writes them.
  • Fetching every page for you. Each list call returns one page and the cursor for the next.
  • Asking you before a call. Your client approves each call; the server asks nothing.

What makes this one different

It stays on Pipedrive v2, except where v2 has nothing. Notes and the whoami lookup run on API v1, because v2 exposes no /notes and no /users. Pipedrive has deprecated a list of v1 endpoints, and notes and /users/me are not on it. If v1 answers one of them with a 410, the [gone] error says the endpoint has no v2 equivalent, rather than blaming your request. Any other answer is classified by its status.

Its tool surface follows the shipped Google Workspace MCP servers. Reads stay discrete, every mutation goes through one manage_ tool with an action, and writes explain their refusals. Those are the servers a model has most likely already seen, so this one needs less explaining.

It is checked against a real workspace. Beside the unit tests, a suite in internal/integration drives the server against a live Pipedrive workspace: reads, resources, guard refusals, rehearsals, and a reversible write on each resource that has one. Writing to a live CRM is a separate opt-in, and the suite has run against one workspace, so a custom-field or permission setup unlike it is untested.

Tools

Start with search. It turns a name into the numeric id every other tool needs. list_deals filters; it does not match names.

ToolWhat it does
searchFree text across deals, people, organizations, products, files and leads — the way to turn a name into an id
whoamiWhich account the token acts as, the workspace it points at, and the account's timezone
get_dealOne deal: value, currency, status, stage, the people and company on it, and custom fields under their workspace names, dropdowns as labels
list_dealsDeals by status, pipeline, stage, owner, person, organization or update window, cursor-paginated. Archived deals live in their own collection — pass archived
manage_dealCreate or edit a deal, move it between stages, close it, archive it, or delete it — create, update, move_stage, mark_won, mark_lost, reopen, archive, unarchive, delete. Custom fields by name, dropdowns by label
get_personOne contact: names, every email and phone with its label, the company they belong to, and custom fields
list_personsPeople by owner, linked organization or update window, cursor-paginated
manage_personCreate, edit or delete a contact — create, update, delete. Name it with name or with first_name/last_name, never both. Custom fields by name, dropdowns by label
get_organizationOne company: the address Pipedrive parsed, how many people hang off it, and custom fields
list_organizationsCompanies by owner or update window, cursor-paginated
manage_organizationCreate, edit or delete a company — create, update, delete. Custom fields by name, dropdowns by label
get_activityOne call, email, meeting or task, with its location, participants and conference details
list_activitiesActivities by status, owner, deal, person, organization, lead or update window; notes stripped unless asked for
manage_activityCreate or edit an activity, tick it off, or delete it — create, update, complete, reopen, delete
get_noteOne note: its HTML, who wrote it, and which record it hangs off
list_notesNotes by the record they hang off, author, date range or update window
manage_noteCreate, edit or remove a note — create, update, delete
list_pipelinesThe pipelines the token can see, in one call with no paging
list_stagesThe stages of a pipeline, with the deal probability Pipedrive gives each
refresh_field_cacheRe-read custom-field names and dropdown labels after somebody adds, renames or extends one in the Pipedrive UI

Guarded writes

Every manage_ tool reads its target before it writes, and refuses what the write would destroy that you cannot see. Each refusal names the fields it is protecting and the argument that would permit the write.

  • dry_run reports what the write would find and change, and sends nothing.
  • overwrite names the fields an update may replace, such as ["title", "value"], exactly as the refusal lists them. Naming fewer than it listed is still refused over the rest. Filling an empty field destroys nothing and needs no permission.
  • expect_version carries the update_time from the read that informed the write, and refuses if the record moved since. Pipedrive has no compare-and-set, so it catches a concurrent edit, not a determined race.

The named transitions — mark_won, mark_lost, move_stage, reopen, archive, unarchive and complete — take no overwrite, because the field they change is the field you named. reopen undoes mark_won and mark_lost on a deal, and complete on an activity. It does not clear a deal's lost_reason: Pipedrive accepts that field only on a lost deal, so the last loss's text stays until the deal is lost again.

A delete is soft. Pipedrive removes a deleted deal, person, organization or activity for good after 30 days, and nothing here puts one back. A deleted note keeps its text, and nothing here restores it either.

A guarded write that stops returns [refused], a class of its own, so a model can tell it from a validation failure and from an upstream error.

Resources

Resource templates mirror the get_ tools for clients that attach records rather than calling tools:

pipedrive://deals/{id}          pipedrive://organizations/{id}pipedrive://persons/{id}        pipedrive://activities/{id}pipedrive://notes/{id}

They share the tools' code, so the two cannot describe a record differently. A URI carries no options, so include_attendees and include_notes still need the tool.

What is not here

Each of these is a decision or an API limit, not an oversight.

  • Resources not modeled at all: webhooks, mail and mail threads, subscriptions and recurring revenue, saved filters, currencies, deal-to-lead conversion, followers, deal participants as a managed relation, and custom field definitions. Custom field values are readable and writable; the definitions are not.
  • Two things the API cannot do, which no retry fixes. Activity type cannot be filtered server-side, so ask for the rows and filter on their type. Activities are not indexed by search, so reach them through list_activities.
  • Pipedrive's search index keeps deleted records, with nothing saying so. search checks organization and person hits against Pipedrive and drops the deleted ones, at one extra call per type a page holds. Deals are not checked, because Pipedrive drops deleted deals itself, and a check against /deals would drop archived ones. Products, files and leads are returned unchecked. Because the drop happens after Pipedrive has paged, a page can come back short, or empty with next_cursor still set: an empty page is not the end.
  • The v1 tools sit outside the compatibility promise. get_note, list_notes, manage_note and whoami leave in a minor release if v1 stops answering them; see CHANGELOG.md.

Install

bash
go install github.com/mmedum/pipedrive-mcp/cmd/pipedrive-mcp@latest

That puts the binary in Go's bin directory, which is often not on your PATH. If the next command says command not found, use the full path or add the directory once:

bash
"$(go env GOPATH)/bin/pipedrive-mcp" --version    # check it landedexport PATH="$(go env GOPATH)/bin:$PATH"          # or add it to your shell profile

Or take a signed archive from the latest release, for Linux, macOS or Windows on amd64 or arm64, and put the binary on your PATH. Verify it first:

bash
# One keyless signature over the checksum file, tied to the release# workflow on a tag. Until it passes, the checksums are only what the# release says.cosign verify-blob checksums.txt \  --bundle checksums.txt.bundle \  --certificate-identity-regexp '^https://github\.com/mmedum/pipedrive-mcp/\.github/workflows/release\.yml@refs/tags/' \  --certificate-oidc-issuer 'https://token.actions.githubusercontent.com'
# checksums.txt covers every archive and SBOM, and you downloaded one.# On macOS, use shasum -a 256 -c.sha256sum -c checksums.txt --ignore-missing
# The archive carries build provenance.gh attestation verify pipedrive-mcp_X.Y.Z_linux_amd64.tar.gz --owner mmedum

Set up Pipedrive

The server keeps your API token in the OS keyring: libsecret on Linux, Keychain on macOS, Credential Manager on Windows. Store it once:

sh
pipedrive-mcp login# Pipedrive workspace subdomain (e.g. acme for acme.pipedrive.com): your-subdomain# Pipedrive API token for "your-subdomain": ········# login: token stored in OS keyring (service=pipedrive-mcp, account=your-subdomain)# login: default domain recorded in ~/.config/pipedrive-mcp/config.json

Pass --domain your-subdomain, or set PIPEDRIVE_COMPANY_DOMAIN, to skip the domain prompt. login checks the token with Pipedrive before it stores anything, and records the domain in a non-secret file so your client config needs neither. Run pipedrive-mcp status to check the setup, and pipedrive-mcp logout to remove it.

PIPEDRIVE_API_TOKEN and PIPEDRIVE_COMPANY_DOMAIN in the environment win over the keyring and the recorded domain, as the gh and aws CLIs order theirs.

Connect a client

After pipedrive-mcp login, a client needs only the command.

Claude Code:

bash
claude mcp add pipedrive /absolute/path/to/pipedrive-mcp

Claude Desktop, in claude_desktop_config.json:

json
{  "mcpServers": {    "pipedrive": {      "command": "/usr/local/bin/pipedrive-mcp"    }  }}

To pin one workspace when you have several stored, add PIPEDRIVE_COMPANY_DOMAIN under env.

Each release also carries pipedrive-mcp_<version>.mcpb, a Claude Desktop bundle. Opening it installs the server and asks for the company domain, an API token and whether to run as a dry run. It is listed in checksums.txt, so the release signature covers it.

Configuration

Every setting is an environment variable; docs/configuration.md lists them with their defaults and validation. PIPEDRIVE_DRY_RUN=true turns every write into a rehearsal.

Safety

  • Every write guards itself at the call. A tool that cannot act says why in its refusal, so the destructive actions are registered and guarded rather than left out.
  • PIPEDRIVE_DRY_RUN is a floor, not a default. Every write tool honors it. A per-call dry_run can turn a rehearsal on, and nothing a model sends can turn one off, so a server started with it cannot write.
  • Stdout carries only MCP JSON-RPC frames. A stray print would corrupt the stream, so the process's streams are named in main and nowhere else.
  • A mistyped subcommand exits non-zero rather than starting the server.

Getting help

Run pipedrive-mcp status. It shows the workspace it resolved, where the domain and the token came from, and whether Pipedrive accepts the token, which covers most first-run problems. docs/troubleshooting.md lists each error the server returns or exits with, what causes it and what to do, then rotating and revoking the token.

The server keeps no record of tool calls, and the MCP transport does not carry your prompt. To see why a model called a tool, read your client's transcript; to see what changed, read Pipedrive's own history.

If that does not explain it, open an issue. Never paste an API token, a company domain or record contents into one; describe the shape instead.

Versioning

Tool names, their arguments and the shape of their output are stable within a major version. A change that needs you to do something, such as a renamed tool or a different command in your client config, is marked Breaking in CHANGELOG.md, which the release notes are made from. Only the latest release receives fixes (SECURITY.md).

Documentation

Contributing

Questions and bugs go in issues; pull requests are welcome. CONTRIBUTING.md covers building, the gates and the pull request flow, and make check is what has to pass.

Security

SECURITY.md says how to report a vulnerability. Please do not open a public issue for one.

Code of conduct

CODE_OF_CONDUCT.md, the Contributor Covenant 3.0.

License

Apache License 2.0.

來源:README.md,提交 c140f35

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:該軟體包類型無法在沙箱中執行。

版本歷史

11
  1. v1.3.1最新Nov 6, 2026
  2. v1.3.0Oct 25, 2026
  3. v1.2.0Oct 25, 2026
  4. v1.1.3Oct 10, 2026
  5. v1.1.2Oct 1, 2026
  6. v1.1.1Oct 1, 2026
  7. v1.1.0Sep 27, 2026
  8. v1.0.0Sep 25, 2026
  9. v0.6.0Sep 21, 2026
  10. v0.5.0Sep 19, 2026
  11. v0.4.0Sep 18, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分