io.github.Raffaele86/local-leads-mcp

السجل الرسمي الأمن

Find local businesses with no website via OpenStreetMap, then verify them. No API keys needed.

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

PYPI package local-leads-mcp
Claude Code
claude mcp add local-leads-mcp -e 'BRAVE_API_KEY=<your brave_api_key>' -e 'GOOGLE_CSE_API_KEY=<your google_cse_api_key>' -e 'GOOGLE_CSE_CX=<GOOGLE_CSE_CX>' -e 'PAGESPEED_API_KEY=<your pagespeed_api_key>' -- uvx local-leads-mcp==0.1.1
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "local-leads-mcp": {
            "command": "uvx",
            "args": [
                "local-leads-mcp==0.1.1"
            ],
            "env": {
                "BRAVE_API_KEY": "<your brave_api_key>",
                "GOOGLE_CSE_API_KEY": "<your google_cse_api_key>",
                "GOOGLE_CSE_CX": "<GOOGLE_CSE_CX>",
                "PAGESPEED_API_KEY": "<your pagespeed_api_key>"
            }
        }
    }
}

متغيرات البيئة

  • BRAVE_API_KEY سري Brave Search API key (enables confirm_no_website)
  • GOOGLE_CSE_API_KEY سري Google Programmable Search API key (alternative to Brave)
  • GOOGLE_CSE_CX Google Programmable Search engine id (used with GOOGLE_CSE_API_KEY)
  • PAGESPEED_API_KEY سري Google PageSpeed Insights API key (adds Lighthouse scores to score_website)

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. local-leads-mcp
  2. Why this and not a maps scraper?
  3. Quickstart (60 seconds)
  4. Tools
  5. Ethics & fair use
  6. See also
  7. License

local-leads-mcp

Find local businesses that need a website — and prove it — from your AI agent.

One MCP server that discovers local businesses via OpenStreetMap and then verifies them with the checks that separate a real lead list from a pile of false positives. Built for freelancers and agencies that use Claude, Cursor or any MCP client for prospecting.

No API keys required for the core workflow: discovery, website verification, email deliverability check and weak-site scoring all run on free, open infrastructure (Overpass, Nominatim, DNS-over-HTTPS, plain HTTP).

Why this and not a maps scraper?

The hard part of local prospecting isn't getting a list of businesses — it's not embarrassing yourself. Lead lists built from raw map data are full of traps this server checks for explicitly:

  • "No website" that isn't. OSM data can be stale; a missing website tag proves nothing. verify_website checks apex and www and redirects (an apex domain that doesn't resolve while the site lives happily on www. is a classic false "no website"), and confirm_no_website uses a web search as the final word.
  • A Facebook page is not a website. Social profiles, booking aggregators (Fresha, TheFork, Treatwell…), directory listings and free subdomains (*.wixsite.com, *.business.site…) are classified as not_own_site, not as "has a website".
  • Emails that bounce. check_mx predicts deliverability before you ever write to a lead (no MX = guaranteed bounce; PEC-only domains are flagged).
  • "The site is bad" needs evidence. score_website returns citable issues (no HTTPS, no mobile viewport, missing title/meta/H1, no sitemap…), not vibes — optionally with Lighthouse scores via the PageSpeed API.

Every verdict ships with the raw checks that produced it, so your agent can show its work.

Quickstart (60 seconds)

{
  "mcpServers": {
    "local-leads": {
      "command": "uvx",
      "args": ["local-leads-mcp"]
    }
  }
}

That's it — no credentials. Then ask your agent things like:

Find 20 restaurants in Turin with no website, verify each one, and give me a CSV of the confirmed ones with a phone number.

Optional environment variables
VariableEnables
BRAVE_API_KEYconfirm_no_website via Brave Search API
GOOGLE_CSE_API_KEY + GOOGLE_CSE_CXconfirm_no_website via Google Programmable Search
PAGESPEED_API_KEYLighthouse scores inside score_website

Tools

Discovery (OpenStreetMap — no key)
  • find_businesses(area, category, website_filter, phone_prefix, require_phone, limit) — businesses in a city/district, filtered by website presence. ~35 friendly categories plus any raw OSM key=value tag.
  • list_categories() — the category → OSM tag map.
Verification (no key)
  • verify_website(domain_or_url) — verdicts: live_own_site, not_own_site, domain_exists_no_site, no_website_found; includes per-URL evidence.
  • check_mx(domain) — email deliverability pre-check via DNS-over-HTTPS.
Qualification (no key; PageSpeed optional)
  • score_website(url) — 0–100 weak-site score with named issues + CMS/tech detection (WordPress, Wix, Shopify, …).
Confirmation (needs a search key)
  • confirm_no_website(business_name, city) — the final word on "really no website?", classifying search results into own-site candidates vs listings/socials.
Export
  • export_leads(leads_json, format) — CSV, JSON or Markdown table.

Ethics & fair use

  • Data sources are public: OpenStreetMap (© OSM contributors, ODbL), public DNS, and the businesses' own public pages.
  • OSM requests are rate-limited locally (min 1 s between calls) and carry a descriptive User-Agent, per the Nominatim and Overpass usage policies. For heavy workloads, run your own Overpass instance.
  • This server discovers and verifies — it does not scrape personal emails and it does not send anything. How you contact a business is on you: follow your local rules (GDPR and friends).

See also

seo-stack-mcp — the same idea for SEO data: Google Search Console, GA4, Bing Webmaster and Microsoft Clarity in one MCP server. Prospect with local-leads, then monitor the sites you build with seo-stack.

License

MIT.


Built by Raffaele Nocera — web consulting for local businesses. If this tool helps you win a client, I'd love to hear about it.

الأسئلة الشائعة

ما هو io.github.Raffaele86/local-leads-mcp؟

Find local businesses with no website via OpenStreetMap, then verify them. No API keys needed.

كيف أثبّت io.github.Raffaele86/local-leads-mcp؟

يعمل على جهازك. في Claude Code: claude mcp add local-leads-mcp -e 'BRAVE_API_KEY=<your brave_api_key>' -e 'GOOGLE_CSE_API_KEY=<your google_cse_api_key>' -e 'GOOGLE_CSE_CX=<GOOGLE_CSE_CX>' -e 'PAGESPEED_API_KEY=<your pagespeed_api_key>' -- uvx local-leads-mcp==0.1.1. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج io.github.Raffaele86/local-leads-mcp إلى مفتاح API؟

نعم. يتطلب BRAVE_API_KEY, GOOGLE_CSE_API_KEY, PAGESPEED_API_KEY، وتضبطها في إعداداته.

هل io.github.Raffaele86/local-leads-mcp مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص MIT.

من يصون io.github.Raffaele86/local-leads-mcp؟

ينشره Raffaele86. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.