Skip to main content
Glama
Bingeljell

@bingeljell/lead-gen-mcp

by Bingeljell

@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

lead_discover

Search for companies matching a query and rank them by ICP fit. No browser required.

lead_extract

Deep-extract a single company's name, emails, industry, and size from a URL via headless browser.

lead_generate

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 build

Point 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-mcp

Environment 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=./leads

Copy .env.example for a template.


ICP profiles

The profile parameter tunes candidate ranking for different buyer types:

Profile

Target

generic

Any business

msp

Managed service providers (IT/cybersecurity)

si

Systems integrators / Microsoft partners

event_planner

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 tools
lead_discoverB

Search for company candidates matching a query and rank them by ICP fit. Returns scored URLs ready for extraction — no browser required.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
countryNous
profileNogeneric
verticalNoOptional — skip domains already saved to this vertical's CSV
maxResultsNo

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
deepNo

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
countryNous
filtersNo
profileNogeneric
maxLeadsNo
verticalYes

TDQS

C2.5/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 3 tool updatesv0.1.1
    • First observedlead_discover
    • First observedlead_extract
    • First observedlead_generate

TDQS

B3.3/5.0

Scored across 3 tools

Disambiguation4/5

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.

Naming Consistency5/5

All tool names follow a consistent lead_verb pattern (discover, extract, generate). The naming is predictable and aligns with tool function.

Tool Count4/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Sales 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 Cl
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Give 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.
    11
    7 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP 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
  • A
    license
    A
    quality
    D
    maintenance
    Lead generation MCP server for AI agents. Find emails, verify contacts, enrich profiles, and search prospects using Hunter.io, Apollo.io, and Abstract API.
    8
    5 npm
    MIT