Mcp Enrichment

io.github.OpafexPublished by GitHub account Opafexv0.1.1Updated Oct 26, 2026

Multi-source entity enrichment: company data, contacts, email verification, and phone validation

VerifiedSTDIODesktop onlyData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Local MCP server that enriches companies and contacts and verifies emails and phone numbers via Clearbit, Hunter.io and Twilio, with a mock mode.

What you can do
  • Look up company details from a domain or company name, including industry, headcount, funding, tech stack and social profiles
  • Look up a person from an email or LinkedIn URL, returning name, title, seniority, department and company info
  • Verify an email address for deliverability, disposable or free providers, role accounts and SMTP checks
  • Find a likely work email for a named person at a company domain, with a confidence score
  • Validate and look up a phone number, returning line type, carrier and location
  • Report server metadata and which providers are active
When to use it
Useful when an assistant needs to research companies or people, qualify leads, or clean up contact lists by checking whether emails and phone numbers are real. It is also handy for prototyping enrichment flows without any paid API accounts, since it returns mock data when keys are absent.
Requirements
Runs locally as an npm package via npx or a built server, requiring Node.js 20 or newer. Real data needs API keys set as environment variables: CLEARBIT_API_KEY for company and contact tools, HUNTER_API_KEY for email tools, and TWILIO_ACCOUNT_SID plus TWILIO_AUTH_TOKEN for phone lookup. Without keys it runs in mock mode. Optional ENRICHMENT_CACHE_TTL sets cache lifetime.
Before you install
The tools send company domains, email addresses, LinkedIn URLs, names and phone numbers to Clearbit, Hunter.io and Twilio, so personal data leaves the machine. Results are cached in memory for 24 hours by default. Without keys, tools silently return realistic-looking mock data, so check the provider field or the status resource before trusting output. APOLLO_API_KEY is accepted but reserved for future use.

Installation

In SourceWeft

  1. Open Mcp Enrichment in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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

bash
# Clone and build from sourcegit clone https://github.com/opafex/opafex-mcps.gitcd opafex-mcpsnpm 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:

json
{  "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.

ParameterTypeRequiredDescription
domainstringOne of domain or companyNameCompany website domain (e.g. "stripe.com")
companyNamestringOne of domain or companyNameCompany name

Provider: Clearbit

Example response
json
{  "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.

ParameterTypeRequiredDescription
emailstringOne of email or linkedinUrlEmail address
linkedinUrlstringOne of email or linkedinUrlLinkedIn profile URL
firstNamestringNoFirst name (optional hint)
lastNamestringNoLast name (optional hint)
companystringNoCompany name (optional hint)
domainstringNoCompany 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.

ParameterTypeRequiredDescription
emailstringYesEmail address to verify

Provider: Hunter.io

Example response
json
{  "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.

ParameterTypeRequiredDescription
phonestringYesPhone number (any format, E.164 preferred)
countryCodestringNoCountry 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.

ParameterTypeRequiredDescription
firstNamestringYesPerson's first name
lastNamestringYesPerson's last name
domainstringYesCompany domain (e.g. "stripe.com")

Provider: Hunter.io

Example response
json
{  "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

ResourceDescription
enrichment://statusProvider 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, or TWILIO_ACCOUNT_SID are 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

VariableTypeDefaultDescription
CLEARBIT_API_KEYstring—Clearbit API key for enrich_company, enrich_contact
HUNTER_API_KEYstring—Hunter.io API key for verify_email, find_email
TWILIO_ACCOUNT_SIDstring—Twilio Account SID for verify_phone
TWILIO_AUTH_TOKENstring—Twilio Auth Token for verify_phone
APOLLO_API_KEYstring—Apollo.io API key (reserved for future use)
ENRICHMENT_CACHE_TTLnumber (seconds)86400 (24h)How long to cache enrichment results

Development

bash
npm run build    # Compile TypeScriptnpm run dev      # Run with tsx (no build needed)npm test         # Run testsnpm start        # Run compiled server

Library Usage

The enrichment service can be used programmatically (not just as an MCP server):

typescript
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:

typescript
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.

Source: packages/enrichment/README.md at commit f85607b

Tools

6

enrich_company

Enrich company data from a domain name or company name. Returns industry, employee count, funding, tech stack, social profiles, and more. Uses Clearbit API (falls back to mock data if no API key configured).

ParametersdomaincompanyName

enrich_contact

Enrich contact/person data from an email address or LinkedIn URL. Returns name, title, seniority, department, social profiles, and company info. Uses Clearbit API.

ParametersemaildomaincompanylastNamefirstNamelinkedinUrl

verify_email

Verify an email address for deliverability. Returns validity, deliverability score, disposable/free provider detection, role-based detection, MX records check, and SMTP validation. Uses Hunter.io API.

Parametersemailrequired

verify_phone

Validate and look up a phone number. Returns validity, formatted number, line type (mobile/landline/voip), carrier info, and location. Uses Twilio Lookup API.

ParametersphonerequiredcountryCode

find_email

Find the email address for a specific person at a company. Provide their first name, last name, and the company domain. Returns the most likely email and a confidence score. Uses Hunter.io API.

ParametersdomainrequiredlastNamerequiredfirstNamerequired

server_info

Returns server metadata: name, version, registered tools, and registered resources. Useful for introspection and health checks.

Takes no parameters.

Version history

1
  1. v0.1.1LatestOct 25, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts