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.
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 URLemail: Email addressfullName+ company information (companiesarray withnameordomain)
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, orcompanyId
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
- Fork the repository: https://github.com/lusha-oss/lusha-public-api-mcp/tree/master
- Create a feature branch
- Make your changes
- Add tests (when available)
- Run validation:
npm run validate - 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
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.