FastMCP server for Apollo

io.github.adelaidasofia由 GitHub 帳號 adelaidasofia 發布v0.1.0更新於 Oct 24, 2026

FastMCP server for Apollo.io — 22 tools: sequences, campaign health, mailbox warmup, enrichment,…

發布方自己的服務:Fastio

概覽

AI 產生的概覽

讓助理管理 Apollo.io 外寄銷售:活動健康摘要、序列、信箱暖機、資料充實、CRM 聯絡人、任務與額度。

可以做什麼
這是一個本機 FastMCP 伺服器,包裝 Apollo.io REST API,提供 27 個工具。可查看活動健康與各信箱暖機狀態,列出與編輯序列,檢索郵件與分析資料,充實人員與組織資訊,管理 CRM 聯絡人、任務與標籤,並查詢剩餘額度。也能撰寫範本與序列、新增步驟、調整信箱每日寄送上限,並可對破壞性寫入留下稽核記錄。
適用情境
適合讓助理在不開啟 Apollo 介面的情況下執行或監控外寄銷售作業:每日健康摘要、序列加入與撰寫、送達率檢查,以及聯絡人資料充實。鎖定大規模外寄團隊,而非單次人員查詢。
執行需求
以 stdio 本機程序執行,可透過 Claude Code 外掛市集安裝,或以 requirements.txt 進行 Python 安裝。需要環境變數 APOLLO_API_KEY,且必須是主金鑰。選用變數:APOLLO_MCP_CONFIG、APOLLO_MCP_TIMEOUT、APOLLO_AUDIT_LOG_PATH。需要連線至 apollo.io 的網路。
安裝前請注意
APOLLO_API_KEY 是具廣泛帳戶權限的主金鑰,請勿放入共用檔案。多個工具會寫入或刪除:範本與序列撰寫、步驟建立、信箱上限調整、序列啟用,以及移除聯絡人——後者會刪除聯絡人記錄並連帶清除所有序列加入。充實工具會消耗 Apollo 額度。只有設定 APOLLO_AUDIT_LOG_PATH 時,破壞性寫入才可回復。此外掛預設會向第三方主機送出匿名安裝訊號,除非設定 MYCELIUM_NO_PING=1。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

Apollo.io MCP Server

[License] [GitHub stars] [Last commit] [Open issues] [PyPI version] [PyPI downloads] [Built by Mycelium AI]

FastMCP server exposing the full operational surface of the Apollo.io REST API to Claude Code. 27 tools covering sequences, campaign health, mailbox warmup, people/org enrichment, CRM contacts, tasks, labels, credit tracking, AND programmatic template/sequence/mailbox-cap editing with audit logging.

Most existing Apollo MCPs only expose people search and enrichment. This one is built for teams running outbound at scale — daily health digests, sequence management, mailbox deliverability monitoring, programmatic contact enrollment, and end-to-end sequence authoring without touching the Apollo UI.

Quick reference

apollo_campaign_health                — daily digest (start here)apollo_messages_search days_back=1    — raw send/open/reply/bounce logapollo_mailbox_warmup                 — per-mailbox deliverability stateapollo_sequences_list                 — all sequences + labels + statsapollo_sequence_add_contacts ...      — enroll contacts into a sequenceapollo_template_update ...            — update template body + subject (with audit log)apollo_sequence_create ...            — author a new sequence end-to-endapollo_step_create ...                — add a step + template to a sequenceapollo_mailbox_update_cap ...         — change daily send capapollo_credits_remaining              — monthly credit budget checkapollo_health                         — self-check (also probes master key)

Tool inventory (27)

Campaign health

  • apollo_campaign_health(days_back=1) — digest across all sequences + mailboxes
  • apollo_mailbox_warmup() — per-mailbox warmup status and daily limits
  • apollo_sequence_get(sequence_id) — one-sequence deep-dive

Sequences

  • apollo_sequences_list() — list all sequences with stats
  • apollo_sequence_add_contacts(sequence_id, contact_ids, send_email_from_email_account_id?)
  • apollo_sequence_remove_contacts(sequence_id, contact_ids)
  • apollo_sequence_set_active(sequence_id, active) — activate or pause

Messages / analytics

  • apollo_messages_search(days_back, sequence_ids?, stats?, per_page, max_pages)

People / orgs

  • apollo_people_search(...) — free (no credit burn)
  • apollo_person_enrich(...) — 1 credit per revealed email
  • apollo_bulk_person_enrich(people, reveal_personal_emails?) — up to 10/call
  • apollo_org_search(...)
  • apollo_org_enrich(domain)
  • apollo_org_job_postings(organization_id)

CRM

  • apollo_contacts_search(...)
  • apollo_contact_create(...)
  • apollo_contact_update(contact_id, fields)
  • apollo_contact_stages()

Tasks / labels / credits

  • apollo_task_create(...)
  • apollo_labels_list()
  • apollo_label_create(name)
  • apollo_credits_remaining()

Template + sequence authoring (destructive writes)

  • apollo_template_get(template_id) — fetch current template state
  • apollo_template_update(template_id, subject?, body_text?, body_html?, audit_label?) — update template subject + body. Snapshots current state to APOLLO_AUDIT_LOG_PATH (if set) BEFORE the write so any breakage is reversible from the diff
  • apollo_sequence_create(name, label?, permissions?, active?) — create a new sequence (paused by default)
  • apollo_step_create(sequence_id, position, wait_days, subject, body_text, body_html?, step_type?, include_signature?) — create a step + touch + template in one call
  • apollo_mailbox_update_cap(mailbox_id, daily_send_limit, audit_label?) — change daily send cap on a mailbox. Audits before/after.

Diagnostics

  • apollo_health() — probes API key validity + master-key hint

Configuration

Copy config.example.yaml to config.yaml and fill in your values:

bash
cp config.example.yaml config.yaml

config.yaml is gitignored. Key fields:

FieldDefaultDescription
daily_send_target50Used in health digest vs-target display
monthly_credit_pool4000Alerts when credit_alert_pct consumed
sequence_labels{}Map sequence IDs to human-readable names
mailbox_labels{}Map email addresses to display names

Env vars:

VarRequiredDescription
APOLLO_API_KEYYesMust be a MASTER key
APOLLO_MCP_CONFIGNoOverride config.yaml path
APOLLO_MCP_TIMEOUTNoHTTP timeout in seconds (default 30)
APOLLO_AUDIT_LOG_PATHNoPath to a markdown file where destructive writes (template_update, sequence_create, step_create, mailbox_update_cap) append before/after diffs. Required for reversibility on the destructive-write tools.

Install

Open Claude Code, paste:

/plugin marketplace add adelaidasofia/apollo-mcp/plugin install apollo-mcp@apollo-mcp

Then set APOLLO_API_KEY (must be a master key) in your environment and restart Claude Code.

Legacy install
bash
pip3 install -r requirements.txtpython3 -c "import server; print('OK')"

Add to your .mcp.json:

json
{  "mcpServers": {    "apollo": {      "command": "python3",      "args": ["/path/to/apollo-mcp/server.py"],      "env": {        "APOLLO_API_KEY": "your-master-key-here"      }    }  }}

Restart Claude Code after editing .mcp.json.

Known gotchas

  1. MASTER key required for /emailer_campaigns, /emailer_messages/search, /email_accounts, /usage_stats/*. Standard keys return 403. apollo_health probes for this automatically.

  2. Rate limit ~60 req/min. Built-in jittered exponential backoff handles 429s transparently.

  3. Pagination hard-capped at 50 pages × 100/page = 5,000 records per call. Slice by date for deeper queries.

  4. Credit burn — apollo_person_enrich(reveal_personal_emails=True) and the bulk variant each burn 1 credit.

  5. 5-minute in-memory cache for sequences_list, email_accounts, labels, contact_stages. Force-refresh by restarting Claude Code.

  6. Cloudflare 1010 on default Python UAs. apollo.io returns HTTP 403 with body error code: 1010 when it sees python-urllib/* or python-httpx/* user-agents. The server spoofs apollo-mcp/1.0 (curl/8.0.0) to bypass. If you build any adjacent scripts hitting apollo.io, add the same User-Agent header or you'll debug a phantom 403 that looks like a missing master key.

  7. No working sequence-scoped unenroll endpoint. POST /emailer_campaigns/{id}/remove_contact_ids returns 404. The no-ID variant POST /emailer_campaigns/remove_contact_ids returns 200 but is a silent no-op regardless of payload. The only reliable unenroll path is DELETE /contacts/{id}, which cascades all campaign enrollments. Destructive: the contact record is marked deleted: true. apollo_sequence_remove_contacts wraps this.

  8. GET /emailer_campaigns creates an empty sequence. Use POST /emailer_campaigns/search to list sequences. The server does this correctly — just be careful if you hit the API directly.

  9. Sequence activation uses PUT, not a sub-resource. The correct endpoint to activate or pause a sequence is PUT /emailer_campaigns/{id} with body {"emailer_campaign": {"active": true/false}}. Sub-resource paths like /check_contacts return 404.

Scripts

  • scripts/daily_digest.py — standalone script that pulls yesterday's stats and prepends them to a markdown dashboard. Run via cron or manually.
  • scripts/bootstrap_sequences.py — create sequences programmatically from code. Useful for version-controlling email copy. Includes the undocumented POST /emailer_touches/{id}/approve endpoint needed to move steps out of draft state.

Related MCPs

Same author, same architecture pattern (FastMCP, draft+confirm on writes where applicable, vault auto-export, MIT):

Telemetry

This plugin sends a single anonymous install signal to myceliumai.co the first time it loads in a Claude Code session on a given machine.

What is sent:

  • Plugin name (e.g. slack-mcp)
  • Plugin version (e.g. 0.1.0)

What is NOT sent:

  • No user identifiers, names, emails, tokens, or API keys
  • No file paths, message content, or anything from your work
  • No IP address is stored after dedup processing

Why: Helps the maintainer know which plugins people actually install, so attention goes to the ones that get used.

Opt out: Set the environment variable MYCELIUM_NO_PING=1 before launching Claude Code. The hook will skip the network call entirely. Already-pinged installs leave a sentinel at ~/.mycelium/onboarded-<plugin> — delete it if you want to reset state.

License

MIT


Built by Mycelium AI. Full install or team version at diazroa.com.

來源:README.md,提交 f7e0fdb

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

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

  • 近 30 天內可連通25 分

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

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

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

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

其他 Fast 整合