Lusha MCP Server

Lusha MCP Server

Enables AI agents to perform comprehensive person and company lookups by integrating directly with the Lusha API for business contact enrichment. It provides tools for bulk contact identification via LinkedIn URLs, emails, or names, alongside detailed company information retrieval.

Category
Visit Server

README

Lusha MCP Server

A Model Context Protocol (MCP) server for integrating with the Lusha API. This server provides comprehensive person and company lookup capabilities with enterprise-grade error handling, logging, and configuration management.

<p align="center"> <a href="https://www.lusha.com" target="_blank"> <img src="https://cdn.prod.website-files.com/655b8092803c160e897db87b/66def0a54a183485662cbe89_Lusha.svg" alt="Lusha Logo" width="150"/> </a> </p>

<p align="center"> <strong>Unlock Lusha's contact enrichment power directly within your AI agents.</strong> </p> <p align="center"> This Model Context Protocol (MCP) server provides a seamless bridge to the Lusha API, enabling tools like Claude Desktop, Cursor, or other MCP-compatible clients to perform business contact and company lookups effortlessly. </p>


Installation

For Claude Desktop

Add this server to your Claude Desktop configuration:

{
  "mcpServers": {
    "lusha": {
      "command": "npx",
      "args": ["@lusha-org/mcp@latest"],
      "env": {
        "LUSHA_API_KEY": "your_lusha_api_key_here"
      }
    }
  }
}

Configuration

Environment Variables

Variable Description Default Required
LUSHA_API_KEY Your Lusha API key -
DISABLE_SSL Disable SSL certificate verification (useful for development with self-signed certificates) false

Example Configuration

# Required
LUSHA_API_KEY=your_actual_api_key_here

# Optional - Customize as needed
LOG_LEVEL=INFO
LUSHA_TIMEOUT=45000

# Development only - Skip SSL verification if needed
# DISABLE_SSL=true

Usage

Starting the Server

# Production
npm start

# Development with auto-reload
npm run dev

# Development with debug logging
npm run dev:debug

Available MCP Tools

1. Person Bulk Lookup (personBulkLookup)

Find multiple people using various search criteria in a single request.

Parameters:

  • contacts: Array of contact objects (max 100)
  • metadata (optional): Additional processing options

Contact Object Requirements: Each contact must have one of:

  • linkedinUrl: LinkedIn profile URL
  • email: Email address
  • fullName + company information (companies array with name or domain)

Example:

{
  "contacts": [
    {
      "contactId": "contact_1",
      "fullName": "John Doe",
      "companies": [{"name": "Lusha", "isCurrent": true}]
    },
    {
      "contactId": "contact_2",
      "linkedinUrl": "https://linkedin.com/in/janedoe"
    },
    {
      "contactId": "contact_3",
      "email": "jane.smith@company.com"
    }
  ],
  "metadata": {
    "revealEmails": true,
    "revealPhones": false
  }
}

2. Company Bulk Lookup (companyBulkLookup)

Retrieve detailed information about multiple companies in a single request.

Parameters:

  • companies: Array of company objects (max 100)
  • metadata (optional): Additional processing options

Company Object Requirements: Each company must have:

  • id: Unique identifier for the company in the request
  • At least one of: name, domain, fqdn, or companyId

Example:

{
  "companies": [
    {
      "id": "company_1",
      "domain": "lusha.com"
    },
    {
      "id": "company_2",
      "name": "Meta Platforms"
    },
    {
      "id": "company_3",
      "fqdn": "www.google.com"
    }
  ]
}

Response Format

All responses follow the MCP standard structure:

Success Response

{
  "success": true,
  "data": {
    "contacts": { /* contact data by contactId */ },
    "companies": { /* company data by companyId */ },
    "requestId": "req_1234567890_abc123",
    "timestamp": "2024-01-01T12:00:00.000Z"
  },
  "metadata": {
    "toolName": "personBulkLookup",
    "timestamp": "2024-01-01T12:00:00.000Z",
    "version": "1.0.0"
  }
}

Error Response

{
  "success": false,
  "error": {
    "message": "Invalid email format",
    "status": 400,
    "code": "VALIDATION_ERROR",
    "category": "validation",
    "severity": "medium",
    "requestId": "req_1234567890_abc123",
    "timestamp": "2024-01-01T12:00:00.000Z"
  },
  "metadata": {
    "toolName": "personBulkLookup",
    "timestamp": "2024-01-01T12:00:00.000Z",
    "version": "1.0.0"
  }
}

Error Handling

The server implements comprehensive error handling with:

Error Categories

  • validation: Input validation errors
  • configuration: Configuration-related errors
  • api_client_error: 4xx HTTP errors from Lusha API
  • api_server_error: 5xx HTTP errors from Lusha API
  • rate_limit: Rate limiting errors
  • unknown: Unclassified errors

Error Severity Levels

  • low: Minor issues that don't affect functionality
  • medium: Issues that may affect some functionality
  • high: Significant issues that affect core functionality
  • critical: Critical issues that prevent operation

Logging

Log Levels

  • DEBUG: Detailed debugging information
  • INFO: General information about operations
  • WARN: Warning messages for potential issues
  • ERROR: Error messages for failed operations
  • FATAL: Critical errors that may cause the server to stop

Log Format

The enhanced logging system provides rich contextual information:

Development (Human-Readable):

[2025-05-26T11:37:40.962Z] INFO: Loading configuration from environment variables
[2025-05-26T11:37:40.962Z] INFO [environment=development, baseUrl=https://api.lusha.com, timeout=30000]: Configuration loaded successfully
[2025-05-26T11:37:40.962Z] INFO [serverName=lusha-mcp-server, serverVersion=1.0.0, environment=development]: Server starting up
[2025-05-26T11:37:40.963Z] INFO: Initializing MCP server transport...
[2025-05-26T11:37:40.964Z] INFO [serverName=lusha-mcp-server, serverVersion=1.0.0, availableTools=personBulkLookup,companyBulkLookup]: MCP server started successfully

Production (Structured JSON):

{
  "timestamp": "2024-01-01T12:00:00.000Z",
  "level": 1,
  "message": "Starting person bulk lookup request",
  "context": {
    "requestId": "req_1234567890_abc123",
    "toolName": "personBulkLookup",
    "operation": "bulk_person_lookup"
  },
  "metadata": {
    "inputParams": {
      "contactCount": 3
    }
  }
}

Development

Project Structure

src/
├── config/           # Configuration management
│   ├── index.ts     # Environment-based configuration with validation
│   └── tools.ts     # Tool definitions and registration
├── tools/            # MCP tool implementations
│   ├── personBulkLookup.ts  # Person lookup implementation
│   └── companyLookup.ts     # Company lookup implementation
├── utils/            # Utility functions
│   ├── api.ts       # API client with interceptors
│   ├── error.ts     # Comprehensive error handling system
│   ├── logger.ts    # Advanced structured logging
│   └── mcp.ts       # MCP protocol adapters
├── types.ts         # Type definitions
├── schemas.ts       # Zod schemas for validation
└── index.ts         # Main MCP server

├── env.example      # Environment configuration template
└── README.md        # Comprehensive documentation

Contributing

  1. Fork the repository: https://github.com/lusha-oss/lusha-public-api-mcp/tree/master
  2. Create a feature branch
  3. Make your changes
  4. Add tests (when available)
  5. Run validation: npm run validate
  6. Submit a pull request

Changelog

Version 1.0.0 - Initial Release

  • Basic MCP server implementation
  • Simple person lookup functionality
  • Basic error handling
  • TypeScript implementation
  • Zod schema validation

Support

For issues and questions:

  • Check the troubleshooting section
  • Review the logs for error details
  • Check the Changelog for recent changes
  • Open an issue on GitHub
  • Contact the development team

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured