Apollo MCP Server
# Apollo MCP Server
A Model Context Protocol (MCP) server for [Apollo.io](https://apollo.io) - the leading sales intelligence and engagement platform. This server provides 34+ tools for automating sales outreach, prospecting, and pipeline management.
## Features
- **People Search & Enrichment** - Find and enrich contact data from Apollo's 275M+ contact database
- **Organization Search & Enrichment** - Search companies by industry, size, location, and more
- **Email Sequences** - Create and manage automated outreach campaigns with A/B testing
- **Contact Management** - Organize contacts into lists and manage pipeline stages
- **Workflow Automation** - Build event-driven automations for your sales process
- **Tasks & Activities** - Create and track sales activities
- **Deals Pipeline** - Manage opportunities through your sales pipeline
- **Analytics** - Track sequence performance and email deliverability
## Installation
### Prerequisites
- Python 3.10+
- An [Apollo.io](https://apollo.io) account with API access
- [uv](https://github.com/astral-sh/uv) (recommended) or pip
### Install with uv
```bash
# Clone the repository
git clone https://github.com/BlockchainRev/apollo-mcp-server.git
cd apollo-mcp-server
# Install dependencies
uv pip install -e .
```
### Install with pip
```bash
pip install -e .
```
## Configuration
### Get Your Apollo API Key
1. Log in to [Apollo.io](https://app.apollo.io)
2. Go to **Settings** > **Integrations** > **API**
3. Generate or copy your API key
### Set Environment Variable
```bash
export APOLLO_API_KEY="your-api-key-here"
```
Or add to your shell profile (`~/.bashrc`, `~/.zshrc`, etc.):
```bash
echo 'export APOLLO_API_KEY="your-api-key-here"' >> ~/.zshrc
```
## Usage
### With Claude Code
Add to your Claude Code MCP configuration (`~/.claude.json`):
```json
{
"mcpServers": {
"apollo": {
"command": "uv",
"args": ["run", "--directory", "/path/to/apollo-mcp-server", "python", "-m", "apollo_mcp.server"],
"env": {
"APOLLO_API_KEY": "your-api-key-here"
}
}
}
}
```
### Standalone
```bash
# Run the server
python -m apollo_mcp.server
```
## Available Tools
### People & Contacts (6 tools)
| Tool | Description |
|------|-------------|
| `people_search` | Search Apollo's 275M+ contact database with filters |
| `people_enrich` | Enrich a person's profile by email, name, or LinkedIn |
| `contacts_search` | Search contacts in your Apollo CRM |
### Organizations (3 tools)
| Tool | Description |
|------|-------------|
| `organization_search` | Search companies by industry, size, location |
| `organization_enrich` | Get comprehensive company data by domain |
| `organization_job_postings` | Get current job postings for a company |
### Email Sequences (5 tools)
| Tool | Description |
|------|-------------|
| `sequences_list` | List all email sequences |
| `sequence_get` | Get sequence details and stats |
| `sequence_create` | Create multi-step outreach sequences |
| `sequence_add_contacts` | Add contacts to a sequence |
| `sequence_activate` | Activate or pause a sequence |
### Contact Lists (3 tools)
| Tool | Description |
|------|-------------|
| `lists_get` | Get all saved lists |
| `list_create` | Create a new contact list |
| `list_add_contacts` | Add contacts to a list |
### Workflows (7 tools)
| Tool | Description |
|------|-------------|
| `workflows_list` | List all workflow automations |
| `workflow_get` | Get workflow details |
| `workflow_create` | Create event-driven automations |
| `workflow_update` | Update workflow configuration |
| `workflow_activate` | Activate or deactivate workflows |
| `workflow_delete` | Delete a workflow |
| `workflow_templates_list` | Browse workflow templates |
| `workflow_create_from_template` | Create from a template |
### Email (2 tools)
| Tool | Description |
|------|-------------|
| `email_preview` | Preview emails with variable substitution |
| `email_send` | Send one-off emails |
### Tasks (2 tools)
| Tool | Description |
|------|-------------|
| `tasks_list` | List all tasks |
| `task_create` | Create tasks for contacts |
### Deals (2 tools)
| Tool | Description |
|------|-------------|
| `deals_list` | List pipeline opportunities |
| `deal_create` | Create new deals |
### Analytics (2 tools)
| Tool | Description |
|------|-------------|
| `analytics_sequences` | Get sequence performance metrics |
| `analytics_email_accounts` | Get email deliverability stats |
### Utility (4 tools)
| Tool | Description |
|------|-------------|
| `get_available_fields` | List email personalization variables |
| `get_email_schedules` | Get sending schedule options |
| `get_contact_stages` | Get contact pipeline stages |
| `get_account_stages` | Get account pipeline stages |
## Examples
### Search for Decision Makers
```python
# Find VPs of Sales at tech companies in California
people_search(
person_titles=["VP Sales", "Vice President of Sales"],
organization_locations=["California, US"],
organization_num_employees_ranges=["51,200", "201,500"]
)
```
### Create an Outreach Sequence
```python
sequence_create(
name="New Lead Outreach",
steps=[
{
"type": "auto_email",
"wait_time": 0,
"wait_mode": "minute",
"emailer_touches": [{
"type": "new_thread",
"subject": "Quick question about {{company}}",
"body_html": "<p>Hi {{first_name}},</p><p>I noticed {{company}} is growing...</p>"
}]
},
{
"type": "auto_email",
"wait_time": 3,
"wait_mode": "day",
"emailer_touches": [{
"type": "reply",
"subject": "Re: Quick question about {{company}}",
"body_html": "<p>Following up on my last email...</p>"
}]
}
]
)
```
### Create a Workflow Automation
```python
workflow_create(
name="New Contact Nurture",
trigger_type="event",
trigger_events=["contact_saved_or_created"],
actions=[
{"type": "add_to_sequence", "config": {"sequence_id": "abc123"}}
]
)
```
## Email Personalization Variables
Use these variables in email templates:
| Variable | Description |
|----------|-------------|
| `{{first_name}}` | Contact's first name |
| `{{last_name}}` | Contact's last name |
| `{{company}}` | Company name |
| `{{title}}` | Job title |
| `{{email}}` | Email address |
| `{{city}}` | City |
| `{{state}}` | State/region |
| `{{country}}` | Country |
## API Endpoints
The server uses two Apollo API endpoints:
- **Public API** (`api.apollo.io/v1/`): People search, enrichment
- **App API** (`app.apollo.io/api/v1/`): Sequences, workflows, lists, etc.
All requests use the `X-Api-Key` header for authentication.
## Development
### Project Structure
```
apollo-mcp-server/
├── apollo_mcp/
│ ├── __init__.py # Package initialization
│ ├── server.py # Main MCP server
│ ├── client.py # HTTP client for Apollo API
│ ├── utils/
│ │ ├── __init__.py
│ │ ├── config.py # Configuration and settings
│ │ └── formatting.py # Output formatting utilities
│ └── tools/
│ ├── __init__.py # Tool registration
│ ├── people.py # People/contact tools
│ ├── organizations.py # Organization tools
│ ├── sequences.py # Email sequence tools
│ ├── lists.py # List management tools
│ ├── workflows.py # Workflow automation tools
│ ├── email.py # Email tools
│ ├── tasks.py # Task management tools
│ ├── deals.py # Deal/opportunity tools
│ ├── analytics.py # Analytics tools
│ └── utility.py # Helper tools
├── examples/
│ └── basic_usage.py # Usage examples
├── pyproject.toml # Project configuration
├── requirements.txt # Dependencies
└── README.md
```
### Running Tests
```bash
# Install dev dependencies
uv pip install -e ".[dev]"
# Run tests
pytest
```
## Contributing
Contributions are welcome! Please:
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Submit a pull request
## License
MIT License - see [LICENSE](LICENSE) for details.
## Acknowledgments
- [Apollo.io](https://apollo.io) for the sales intelligence platform
- [Anthropic](https://anthropic.com) for the Model Context Protocol
- [FastMCP](https://github.com/jlowin/fastmcp) for the MCP Python framework
TDQS
Scored across 34 tools
Most tools have distinct purposes, but there is some overlap between 'contacts_search' and 'people_search' (both search contacts, though one targets the user's database and the other Apollo's global database), and between 'sequence_activate' and 'workflow_activate' (both activate/deactivate automation). Descriptions help clarify, but agents might occasionally confuse these pairs.
Tool names follow a consistent snake_case pattern with clear verb_noun structures (e.g., 'analytics_email_accounts', 'contacts_search', 'deal_create'). The naming is predictable across all 34 tools, making it easy for agents to understand and navigate the set.
With 34 tools, the count is borderline high for a CRM/outreach server, as it may feel heavy and complex for agents to manage. While it covers many aspects (analytics, contacts, deals, emails, sequences, tasks, workflows), some consolidation or scoping might improve usability without sacrificing functionality.
The tool set provides comprehensive coverage for Apollo's domain, including CRUD operations for contacts, deals, lists, sequences, tasks, and workflows, plus enrichment, search, analytics, and email capabilities. There are no obvious gaps; agents can perform end-to-end workflows from prospecting to automation.