@bingeljell/lead-gen-mcp
Provides search capabilities for discovering companies using the Brave Search API.
Provides automatic fallback search for company discovery using DuckDuckGo.
Optionally uses OpenAI's LLM to improve the accuracy of company data extraction.
Provides search capabilities for company discovery via a self-hosted SearXNG instance.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@bingeljell/lead-gen-mcpFind 10 MSPs in Austin, Texas and save their contact emails."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@bingeljell/lead-gen-mcp
MCP server for AI-assisted B2B lead generation. Discover, extract, score, and export company leads — from any MCP-compatible agent (Claude Desktop, Cursor, Windsurf, Codex, etc.).
Context
This started as a lead pipeline inside Alfred — a personal AI agent built for outbound sales work
Extracted into a standalone MCP server so anyone selling to small and mid-sized businesses can use it with their agent of choice
Works across agents — not Claude-specific
Still under active development. See docs/release_notes.md for what's in each release
Related MCP server: DataLayer MCP
Tools
Tool | What it does |
| Search for companies matching a query and rank them by ICP fit. No browser required. |
| Deep-extract a single company's name, emails, industry, and size from a URL via headless browser. |
| Full pipeline: search → rank → extract → filter → save to CSV. |
Requirements
Node.js ≥ 20
A search provider — SearXNG (self-hosted), Brave API key, or nothing (falls back to DuckDuckGo automatically)
An LLM key (Anthropic or OpenAI) — optional but improves extraction quality
Setup
Option A — Use via npx (no clone needed)
The server runs on demand. Just configure your agent to call it with npx:
"command": "npx",
"args": ["-y", "@bingeljell/lead-gen-mcp"]Option B — Clone and build locally
git clone https://github.com/bingeljell/lead-gen-mcp
cd lead-gen-mcp
npm install
npx playwright install chromium # one-time ~130MB browser download
npm run buildPoint your agent at the built file:
"command": "node",
"args": ["/absolute/path/to/lead-gen-mcp/dist/server.js"]Agent configuration
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"lead-gen": {
"command": "npx",
"args": ["-y", "@bingeljell/lead-gen-mcp"],
"env": {
"SEARXNG_BASE_URL": "http://localhost:8888",
"ANTHROPIC_API_KEY": "sk-ant-...",
"LEAD_GEN_OUTPUT_DIR": "/Users/you/leads"
}
}
}
}Restart Claude Desktop. The three tools appear automatically.
Cursor / Windsurf
Same config format — add to your MCP settings JSON and restart the editor.
OpenAI Agents SDK (Codex)
from agents import Agent
from agents.mcp import MCPServerStdio
lead_gen = MCPServerStdio(
command="npx",
args=["-y", "@bingeljell/lead-gen-mcp"],
env={
"SEARXNG_BASE_URL": "http://localhost:8888",
"ANTHROPIC_API_KEY": "sk-ant-...",
"LEAD_GEN_OUTPUT_DIR": "./leads"
}
)
agent = Agent(name="LeadResearcher", mcp_servers=[lead_gen])Claude Code (CLI)
claude mcp add lead-gen \
-e SEARXNG_BASE_URL=http://localhost:8888 \
-e ANTHROPIC_API_KEY=sk-ant-... \
-e LEAD_GEN_OUTPUT_DIR=/Users/you/leads \
npx -y @bingeljell/lead-gen-mcpEnvironment variables
# Search — set at least one (falls back to DuckDuckGo if none set)
SEARXNG_BASE_URL=http://localhost:8888 # self-hosted SearXNG
BRAVE_SEARCH_API_KEY= # https://api.search.brave.com
# LLM — optional, improves extraction accuracy
ANTHROPIC_API_KEY=
OPENAI_API_KEY=
# Output directory for CSVs
LEAD_GEN_OUTPUT_DIR=./leadsCopy .env.example for a template.
ICP profiles
The profile parameter tunes candidate ranking for different buyer types:
Profile | Target |
| Any business |
| Managed service providers (IT/cybersecurity) |
| Systems integrators / Microsoft partners |
| Event planning / wedding businesses |
Example prompts
"Find 10 MSPs in Austin, Texas and save their contact emails."
"Search for small systems integrators in the UK, vertical msp_uk, max 5 leads."
"Discover event planning companies in Chicago — profile: event_planner."
License
MIT
Available Tools
3 toolslead_discoverB
Search for company candidates matching a query and rank them by ICP fit. Returns scored URLs ready for extraction — no browser required.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| country | No | us | |
| profile | No | generic | |
| vertical | No | Optional — skip domains already saved to this vertical's CSV | |
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior. It highlights 'no browser required' and 'scored URLs', but lacks details on ranking methodology, side effects, or authentication needs. Transparency is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) but omits important parameter information. While succinct, it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 5 parameters, no output schema, and no annotations, the description is incomplete. It does not clarify how ICP fit ranking works, how options like country/profile affect results, or what the response format is. The tool's behavior is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (20% — only vertical has a description). The description does not explain parameters like query, country, profile, or maxResults. It adds minimal value beyond the schema, failing to compensate for the lack of parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for company candidates matching a query and rank them by ICP fit.' It specifies the action (search), resource (company candidates), and key differentiators (ranking, scored URLs, no browser required). This distinguishes it from siblings like lead_extract and lead_generate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for discovering leads before extraction ('Returns scored URLs ready for extraction') but does not explicitly state when to use this tool over siblings or when not to use it. The 'no browser required' hint is useful but insufficient for clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lead_extractA
Deep-extract company info (name, emails, industry, size) from a single URL using a headless browser and optional LLM parsing.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| deep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions using a headless browser and optional LLM parsing, which adds behavioral context. However, it does not disclose whether the tool is read-only, rate limits, or error handling, so transparency is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no fluff. It is front-loaded with key information and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers the main purpose and inputs. However, it lacks information about output format, error conditions, and prerequisites (e.g., URL must be accessible). No output schema exists, so some return details would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implicitly covers 'url' by stating 'from a single URL' and hints at 'deep' by mentioning 'optional LLM parsing'. However, it does not explicitly link parameters or explain the boolean semantics of 'deep' (e.g., what happens when true vs false).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'deep-extract' and the resource 'company info from a single URL', listing specific fields (name, emails, industry, size). It distinguishes itself from sibling tools like lead_discover and lead_generate by focusing on a single URL extraction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this tool when you have a specific URL to extract company info. However, there is no explicit guidance on when not to use it or alternatives, though the description implies it is the correct tool for URL-based extraction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lead_generateC
Full pipeline: search → rank → extract → filter → save to CSV. Returns a list of discovered leads with emails.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| country | No | us | |
| filters | No | ||
| profile | No | generic | |
| maxLeads | No | ||
| vertical | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It outlines steps but lacks details on side effects (e.g., CSV file overwriting, error handling, rate limits) and does not clarify the save-to-CSV behavior or what happens on empty results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but at the cost of essential detail for a tool with six parameters and no schema descriptions. It front-loads 'Full pipeline' but is insufficiently informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, 0% schema coverage, no output schema, no annotations), the description fails to provide essential context about parameter meaning, output format, or operational details, making it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It does not explain any of the six parameters (query, vertical, country, filters, profile, maxLeads), leaving agents without necessary context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a full pipeline that performs search, rank, extract, filter, and save to CSV, returning discovered leads with emails. This distinguishes it from siblings lead_discover and lead_extract by being the complete process.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus the sibling tools. The description does not mention prerequisites, alternatives, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.1- First observed
lead_discover - First observed
lead_extract - First observed
lead_generate
TDQS
Scored across 3 tools
Tools have distinct purposes: discovery, extraction, and full pipeline. The generate tool subsumes the other two but is a convenience layer, not a source of confusion. Minor overlap exists but descriptions clearly differentiate them.
All tool names follow a consistent lead_verb pattern (discover, extract, generate). The naming is predictable and aligns with tool function.
Three tools is on the lower end but appropriate for a focused lead generation server. Each tool earns its place, covering search, extraction, and pipeline integration.
The tool set covers the core lead generation workflow—search, extract, and output. Missing features like batch extraction or lead management are minor gaps for this scope.
Maintenance
Related MCP Connectors
Find high-intent Reddit conversations and manage lead workflows from MCP-compatible AI agents.
Search companies, enrich contacts, and reveal emails and phones from your AI agent.
Hosted MCP for verified B2B lead campaigns with success-only billing.
Give AI agents the LinkedIn tools to find, qualify, engage, and follow up with prospects.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceSales Intelligence · B2B Lead Extraction An MCP (Model Context Protocol) server that gives AI agents structured B2B lead intelligence extracted directly from company websites. Point it at any URL and get back a clean JSON object — company summary, buying signals, inferred needs, and personalised icebreaker lines — ready to drop into your outreach pipeline. Built for agent pipelines. Works with Cl1MIT
- AlicenseAqualityDmaintenanceGive your AI agent access to 60M+ companies and 300M+ verified contacts. Enrich leads, find work emails, discover tech stacks, and identify buying intent — directly from Claude, Cursor, Windsurf, or any MCP-compatible AI agent.117 npmMIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to discover and qualify B2B leads from Leadbay's knowledge base, with tools for lead research, enrichment, and outreach logging.MIT
- AlicenseAqualityDmaintenanceLead generation MCP server for AI agents. Find emails, verify contacts, enrich profiles, and search prospects using Hunter.io, Apollo.io, and Abstract API.85 npmMIT