About mcp-enrichment
mcp-enrichment is an MCP server for enriching company and contact records, aimed at workflows that need entity details and contact validation. It uses Clearbit, Hunter.io, and Twilio, and can return mock data when API keys are absent.
Key features
- 01Enriches company industry, size, and technology data
- 02Looks up contacts by email or LinkedIn URL
- 03Checks email deliverability
- 04Validates phone numbers and line details
- 05Finds email addresses from names and domains
- 06Returns mock data without API keys
Use cases
- 01Fill in company records from a domain
- 02Verify a prospective contact's email
- 03Check phone validity and line type
- 04Test workflows without provider credentials
MCP support
The MCP server offers tools for company and contact enrichment, email and phone verification, and email discovery, along with a provider-status resource. Tools can use mock data when their corresponding API keys are missing.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @opafex/mcp-enrichmentCLEARBIT_API_KEYSecretClearbit API key for company and contact enrichmentHUNTER_API_KEYSecretHunter.io API key for email discovery and verificationAPOLLO_API_KEYSecretApollo.io API key for contact and company dataTWILIO_ACCOUNT_SIDSecretTwilio Account SID for phone validationTWILIO_AUTH_TOKENSecretTwilio Auth Token for phone validationENRICHMENT_CACHE_TTLCache TTL in seconds for enrichment results (default: 86400)Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
6Saved tool list · updated 5d ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain | string | No | Company website domain (e.g. "stripe.com") |
| companyName | string | No | Company name (used if domain not provided) |
Details
From the project README@opafex/mcp-enrichment
MCP server for multi-source entity enrichment — company data, contact lookup, email verification, phone validation, and email discovery.
Uses Clearbit, Hunter.io, and Twilio APIs. Works in mock mode with no API keys configured.
Installation
# Clone and build from source
git clone https://github.com/opafex/opafex-mcps.git
cd opafex-mcps
npm install && npm run build
Requires Node.js 20+.
Quick Start
Add to Claude Code / Claude Desktop
Create or edit .mcp.json in your project root:
{
"mcpServers": {
"enrichment": {
"command": "node",
"args": ["/path/to/opafex-mcps/packages/enrichment/dist/index.js"],
"env": {
"CLEARBIT_API_KEY": "sk-...",
"HUNTER_API_KEY": "...",
"TWILIO_ACCOUNT_SID": "...",
"TWILIO_AUTH_TOKEN": "..."
}
}
}
}
Omit the env block to run in mock mode.
Tools
enrich_company
Enrich company data from a domain name or company name. Returns industry, employee count, funding, tech stack, social profiles, and more.
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | One of domain or companyName | Company website domain (e.g. "stripe.com") |
companyName | string | One of domain or companyName | Company name |
Provider: Clearbit
Example response
{
"success": true,
"company": {
"name": "Company for stripe.com",
"domain": "stripe.com",
"description": "A leading technology company specializing in innovative solutions.",
"industry": "Technology",
"sector": "Software",
"employees": 150,
"employeesRange": "101-250",
"founded": 2015,
"location": { "city": "London", "country": "United Kingdom" },
"socialProfiles": { "linkedin": "https://linkedin.com/company/example" },
"techStack": ["React", "Node.js", "PostgreSQL", "AWS"],
"type": "private"
},
"provider": "mock",
"cached": false,
"timestamp": "2026-03-15T00:00:00.000Z"
}
enrich_contact
Enrich contact/person data from an email address or LinkedIn URL.
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | One of email or linkedinUrl | Email address |
linkedinUrl | string | One of email or linkedinUrl | LinkedIn profile URL |
firstName | string | No | First name (optional hint) |
lastName | string | No | Last name (optional hint) |
company | string | No | Company name (optional hint) |
domain | string | No | Company domain (optional hint) |
Provider: Clearbit
verify_email
Verify an email address for deliverability. Returns validity, deliverability score, disposable/free provider detection, role-based detection, and SMTP validation.
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Email address to verify |
Provider: Hunter.io
Example response
{
"success": true,
"email": "[email protected]",
"valid": true,
"deliverable": true,
"disposable": false,
"freeProvider": false,
"role": false,
"score": 95,
"provider": "mock",
"cached": false
}
verify_phone
Validate and look up a phone number. Returns validity, formatted number, line type (mobile/landline/voip), carrier info, and location.
| Parameter | Type | Required | Description |
|---|---|---|---|
phone | string | Yes | Phone number (any format, E.164 preferred) |
countryCode | string | No | Country dialing code without + (e.g. "1" for US, "44" for UK). Defaults to "44" (UK). |
Provider: Twilio
find_email
Find the email address for a specific person at a company.
| Parameter | Type | Required | Description |
|---|---|---|---|
firstName | string | Yes | Person's first name |
lastName | string | Yes | Person's last name |
domain | string | Yes | Company domain (e.g. "stripe.com") |
Provider: Hunter.io
Example response
{
"success": true,
"email": "[email protected]",
"score": 85,
"sources": ["LinkedIn", "Company Website"],
"provider": "mock",
"cached": false
}
server_info (built-in)
Returns server metadata: name, version, registered tools, and resources. Added automatically by @opafex/mcp-shared.
Resources
| Resource | Description |
|---|---|
enrichment://status | Provider configuration status (which APIs are active, mock mode) |
Mock Mode
When no API keys are configured, all tools return realistic mock data. This is great for development and testing — you can build against the MCP without any API accounts.
Mock mode activates automatically:
- Globally when none of
CLEARBIT_API_KEY,HUNTER_API_KEY, orTWILIO_ACCOUNT_SIDare set - Per-tool when the specific provider key is missing (e.g. if you only set
CLEARBIT_API_KEY, company/contact tools use real data while email/phone tools fall back to mock)
Check enrichment://status resource or the server_info tool to see which providers are active.
Environment Variables
| Variable | Type | Default | Description |
|---|---|---|---|
CLEARBIT_API_KEY | string | — | Clearbit API key for enrich_company, enrich_contact |
HUNTER_API_KEY | string | — | Hunter.io API key for verify_email, find_email |
TWILIO_ACCOUNT_SID | string | — | Twilio Account SID for verify_phone |
TWILIO_AUTH_TOKEN | string | — | Twilio Auth Token for verify_phone |
APOLLO_API_KEY | string | — | Apollo.io API key (reserved for future use) |
ENRICHMENT_CACHE_TTL | number (seconds) | 86400 (24h) | How long to cache enrichment results |
Development
npm run build # Compile TypeScript
npm run dev # Run with tsx (no build needed)
npm test # Run tests
npm start # Run compiled server
Library Usage
The enrichment service can be used programmatically (not just as an MCP server):
import { EnrichmentService } from '@opafex/mcp-enrichment/service';
import type { CacheProvider } from '@opafex/mcp-enrichment/service';
const service = new EnrichmentService({
clearbitApiKey: 'sk-...',
hunterApiKey: '...',
});
const result = await service.enrichCompany({ domain: 'stripe.com' });
Custom Cache Provider
The default in-memory cache works out of the box. For Redis, SQLite, or any custom store, implement the CacheProvider interface:
import { EnrichmentService } from '@opafex/mcp-enrichment/service';
import type { CacheProvider } from '@opafex/mcp-enrichment/service';
const redisCache: CacheProvider = {
async get(key) { /* ... */ },
async set(key, data, ttlMs) { /* ... */ },
async delete(key) { /* ... */ },
async clear() { /* ... */ },
};
const service = new EnrichmentService({
clearbitApiKey: '...',
cache: redisCache,
});
Contributing
Found a bug or have a feature request? Open an issue.
Pull requests welcome — see the main repo for development setup.
License
MIT — see LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.