Skip to main content
Glama
mcp-server-apollo

mcp-server-apollo

by borgels

mcp-server-apollo

MCP (Model Context Protocol) server for the Apollo.io B2B discovery and enrichment API: company search, people search, contact enrichment (emails/phones), organization firmographics, and API usage stats.

The server wraps Apollo's REST API with one account-level API key kept server-side. It is read-only by design: no sequences, no emailer, no CRM writes, no account management.

Tools

Tool

Risk

Apollo endpoint

apollo_search_capabilities

read

— (local discovery)

apollo_companies_search

read + 1 credit/page

POST /mixed_companies/search

apollo_people_search

read (free, master key)

POST /mixed_people/api_search

apollo_person_enrich

read + credits

POST /people/match

apollo_people_bulk_enrich

read + credits

POST /people/bulk_match (chunked ×10)

apollo_org_enrich

read + 1 credit

GET /organizations/enrich

apollo_webhook_result

read (free)

GET /webhook_result/{request_id}

apollo_credit_usage

read (free, master key)

POST /usage_stats/api_usage_stats

Notes that save you a support ticket:

  • People search returns no contact data. Apollo's current mixed_people/api_search endpoint deliberately obfuscates last names and omits emails/phones. Feed the returned person id into apollo_person_enrich to get contact data (that is what costs credits).

  • Phone reveals are asynchronous. reveal_phone_number=true requires a public HTTPS webhookUrl; Apollo POSTs the numbers there minutes later. The synchronous response carries a request_id — poll apollo_webhook_result with it if the callback is missed (results kept 30 days). Non-https:// webhook URLs are rejected by both the MCP tools and the gateway export.

  • Master API key. apollo_people_search and apollo_credit_usage require a master Apollo API key (Apollo returns 403 API_INACCESSIBLE otherwise).

  • No credit-balance API. Apollo only exposes per-endpoint rate-limit usage; the remaining credit balance lives in the Apollo UI (Settings → Billing).

  • Field projection. Every data tool accepts fields[] dot-paths to shrink responses; company search applies a slim default projection (pass ["*"] for full records).

Related MCP server: Apollo.io MCP Server

Usage

npm install
npm run build

# stdio transport (Claude Desktop, local MCP clients)
APOLLO_API_KEY=... node dist/transports/stdio.js

# streamable HTTP transport on :3000/mcp
APOLLO_API_KEY=... MCP_HTTP_TOKEN=... node dist/transports/http.js

Configuration (see .env.example): APOLLO_API_KEY (required), APOLLO_TIMEOUT_MS, APOLLO_AUDIT_LOG (JSONL audit trail; hashed targets, never raw arguments or secrets), and for HTTP: MCP_HTTP_HOST, PORT, MCP_HTTP_TOKEN (static bearer, compared in constant time), MCP_ALLOWED_ORIGINS, MCP_MAX_BODY_BYTES.

There is also an embeddable gateway export (mcp-server-apollo/gateway) that exposes the same tools as plain functions with JSON-schema definitions.

Security

  • The API key is read only from the server environment, sent only in the x-api-key header over HTTPS, and redacted from error messages and logs.

  • Tool calls pass a policy allowlist; anything unlisted is denied.

  • All tools are annotated read-only/non-destructive; credit-consuming tools state their cost in the description so agents confirm spend with the user.

  • HTTP transport binds to loopback by default, validates Origin, caps body size, and supports a static bearer token for upstream auth proxies.

  • Rate limits: HTTP 429 is retried with jittered backoff honouring retry-after; bulk enrichment runs at low bounded concurrency because Apollo limits bulk_match hard (documented 20/min).

Development

npm run typecheck
npm test
npm run smoke:live   # needs a real APOLLO_API_KEY; uses ~1 credit

License

Apache-2.0

Available Tools

8 tools
apollo_credit_usageGet API Usage / Rate Limits (Apollo)A
Read-onlyIdempotent

Report per-endpoint Apollo API usage against the minute/hour/day rate limits, plus the most recent rate-limit headers observed. Use before large batches to check headroom, and to answer "how much have we used?". Requires a master API key; consumes no credits. Note: Apollo exposes no API for the remaining credit balance — that is only visible in the Apollo UI (Settings > Billing and credits).

Inputs: no named parameters.

apollo_org_enrichEnrich Organization (Apollo)A
Read-onlyIdempotent

Fetch full firmographics for one company via Apollo: industry, keywords, employee count, revenue, funding events, technology stack (current_technologies / technology_names), department headcounts, and headcount growth rates. Provide at least one of domain, name, website, or linkedinUrl. Consumes 1 credit when a record is enriched. For Danish companies prefer the Lassox MCP (authoritative CVR registry data); use this for non-DK companies or Apollo-specific fields like technology stack.

Inputs: name, domain, fields, website, +1 more.

apollo_people_bulk_enrichBulk Enrich People (Apollo)A
Read-onlyIdempotent

Enrich up to 100 people via Apollo in one call. Chunks into bulk_match calls of 10, fans out with bounded concurrency, retries HTTP 429, and isolates per-item failures. Returns { total, succeeded, failed, creditsConsumed, requestIds, results[] } with results in input order. CONSUMES CREDITS per enriched record and reveal flags apply to EVERY person — confirm total credit cost with the user first. Apollo rate-limits bulk_match hard (documented 20/min). revealPhoneNumber requires webhookUrl. Emits MCP progress notifications when the client sends a progressToken.

Inputs: details (required), fields, webhookUrl, concurrency, +2 more.

apollo_person_enrichEnrich Person (Apollo)A
Read-onlyIdempotent

Match one person via Apollo and return their full profile (employment history, employer, departments, seniority). CONSUMES CREDITS when a record is enriched; setting revealPersonalEmails or revealPhoneNumber costs extra per your Apollo plan (typically ~1 credit per email, ~8 per mobile) — confirm with the user first. Phone numbers are NOT in the synchronous response: Apollo delivers them asynchronously to webhookUrl (required for phone reveals); poll apollo_webhook_result with the returned request_id if the callback is missed. Personal emails are not revealed for people in GDPR regions; you are the data controller for retrieved personal data.

Inputs: id, name, email, domain, +9 more.

apollo_search_capabilitiesSearch Apollo CapabilitiesA
Read-onlyIdempotent

Search the Apollo MCP server capabilities and examples. Use this first when deciding which Apollo tool to call.

Inputs: limit, query.

apollo_webhook_resultPoll Webhook Result (Apollo)A
Read-onlyIdempotent

Fetch the result of an asynchronous Apollo enrichment (phone-number reveal or waterfall) by request_id, in case the webhook callback was missed. Free (no credits); results are kept for 30 days. A 404 with retry_after_seconds means the result is not ready yet — wait before retrying.

Inputs: requestId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 8 tools

    Disambiguation5/5

    Each tool targets a distinct domain action (company search/Enrich, people search/enrich, credit usage, webhook results) with no overlapping purposes. Clear separation between sync and async operations, and between company and people workflows.

    Naming Consistency5/5

    All tool names follow the consistent pattern 'apollo_<action>_<target>', using snake_case throughout. Examples: apollo_companies_search, apollo_org_enrich, apollo_people_search.

    Tool Count5/5

    8 tools is an ideal scope for an Apollo API wrapper, covering search, enrichment, usage monitoring, and async handling without being overwhelming or sparse.

    Completeness4/5

    The set covers core CRUD-like operations (search, enrich, bulk enrich, usage check, async retrieval) but lacks direct update/delete endpoints, which are likely not exposed by Apollo's API. A minor gap but functional for typical use cases.

    Related MCP Connectors

    • Apollo.io MCP — company and people data via api.apollo.io, the caller's OWN Apollo account (fleet…

    • Official ZoomInfo MCP server. Search and enrich companies, contacts, and buyer intent signals.

      https://mcp.zoominfo.com/mcp
    • Your agent needs B2B contacts and the pipeline objects around them — find the company, find the person, get the email, then write it back where your team works. **What you can ask for** • "Find heads of engineering at Series-B SaaS companies in the Nordics, with emails." • "Enrich these companies with headcount, industry and funding." • "What roles is this company hiring for right now?" • "Create an account and a contact, then log this opportunity." • "Search our sequences for messages sent to this domain." **How to use it** Point any MCP client at https://mcp.aisa.one/apollo/mcp and sign in with OAuth — there is no key to create or paste. 54 tools: people and organisation search and enrichment, job postings, accounts, contacts, opportunities and their stages, custom fields, labels, notes, users, email accounts, sequence messages and phone-call search — reads and writes. **Why this rather than the source** The full object model, not just a search endpoint, so an agent can finish the job rather than hand you a CSV. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the person here, then ask the same agent what their company's traffic looks like or what they rank for — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/sales/mcp adds Similarweb and creator discovery around it.

    • Remote MCP server to enrich company profiles with structured B2B data and confidence scores.

    Related MCP Servers

    • A
      license
      B
      quality
      B
      maintenance
      MCP server for Apollo.io B2B database enabling people and company search, enrichment, and insights through conversational interfaces.
      9
      7,221 npm
      19
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server for the Apollo.io API, giving AI coding assistants direct access to Apollo.io's sales intelligence platform for prospecting, enrichment, CRM operations, and outreach.
      50
      6
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      MCP server for Apollo.io B2B sales intelligence API. Enables searching and enriching people and organizations via natural language.
      7
      22 npm
      4
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for the Apollo.io API that lets LLMs search and enrich people and company data.
      78 npm
      MIT