Skip to main content
Glama

ProspectMCP

Servidor MCP + API REST para prospectar negocios de Google Maps / Google Business:

  • 🔍 Búsqueda de negocios por texto libre ("pizzerías en Palermo, Buenos Aires").

  • 🌐 Filtro con/sin página web — ideal para encontrar negocios a los que venderles una web.

  • Extracción de reviews — hasta 5 con la API oficial de Google, o todas (paginadas) si configurás SerpAPI.

  • 📱 Detección de redes sociales — si el negocio tiene web, se detectan sus links a Facebook, Instagram, X, LinkedIn, TikTok, YouTube y WhatsApp.

  • 🤖 Generador de prompt para Claude Code — arma un prompt listo para que Claude Code construya la landing page del negocio basada en sus datos reales, sus mejores reviews y sus redes.

Arquitectura

src/
├── providers/
│   ├── googlePlaces.ts   # Google Places API (New): búsqueda, ficha, reviews (máx. 5)
│   └── serpapi.ts        # SerpAPI (opcional): todas las reviews, paginadas
├── services/
│   ├── prospectService.ts # Lógica central: búsqueda + filtros, reviews, perfiles
│   ├── socialLinks.ts     # Detección de redes sociales en la web del negocio
│   └── promptBuilder.ts   # Prompt de landing page para Claude Code
├── mcp/server.ts          # Servidor MCP (stdio) para Claude
└── api/server.ts          # API REST con API keys (base para comercializar)

Por qué APIs y no scraping directo: Google bloquea agresivamente el scraping de Maps (captchas, bans de IP) y viola sus términos de servicio. Este proyecto usa la Places API (New) oficial y, para el histórico completo de reviews, SerpAPI — un servicio de pago que resuelve ese problema de forma estable. El diseño con providers permite enchufar otras fuentes más adelante.

Related MCP server: Google Maps Reviews Scraper MCP Server

Configuración

  1. Cloná el repo e instalá dependencias:

    npm install
    npm run build
  2. Copiá .env.example a .env y completá:

    Variable

    Requerida

    Descripción

    GOOGLE_PLACES_API_KEY

    API key de Google Cloud con Places API (New) habilitada

    SERPAPI_KEY

    opcional

    Para extraer todas las reviews (sin ella: máx. 5)

    API_KEYS

    opcional

    Keys válidas para la API REST, separadas por coma

    PORT

    opcional

    Puerto de la API REST (default 3000)

    DEFAULT_LANGUAGE / DEFAULT_REGION

    opcional

    Defaults es / AR

Hostearlo como conector remoto (Render)

El servidor MCP tiene dos transportes:

  • stdio (dist/mcp/server.js) — para correrlo localmente en tu máquina.

  • Streamable HTTP (dist/mcp/httpServer.js) — para hostearlo y que cualquiera lo use con un link.

Para deployar en Render:

  1. Pusheá el repo a GitHub y en Render elegí New → Blueprint apuntando al repo (detecta render.yaml solo).

  2. Cargá GOOGLE_PLACES_API_KEY (y opcionalmente SERPAPI_KEY y MCP_AUTH_TOKENS) en el dashboard.

  3. Tu conector queda en https://<tu-app>.onrender.com/mcp.

Con esa URL, cualquier persona lo agrega:

  • Claude web/desktop: Configuración → Conectores → Agregar conector personalizado → pegar la URL.

  • Claude Code: claude mcp add --transport http prospectmcp https://<tu-app>.onrender.com/mcp

Seguridad/costos: cada búsqueda consume TU cuota de Google Places y SerpAPI. Si el conector va a ser público, definí MCP_AUTH_TOKENS (tokens separados por coma) y repartí un token por cliente; los clientes lo mandan como header Authorization: Bearer <token>. Ojo: el plan free de Render duerme el servicio tras 15 min de inactividad (el primer request tarda ~30-60s en despertar); para uso comercial conviene el plan Starter.

Uso como servidor MCP local (Claude Code / Claude Desktop)

Agregalo a Claude Code:

claude mcp add prospectmcp \
  --env GOOGLE_PLACES_API_KEY=TU_KEY \
  --env SERPAPI_KEY=TU_KEY_OPCIONAL \
  -- node /ruta/a/ProspectMCP/dist/mcp/server.js

O en claude_desktop_config.json / .mcp.json:

{
  "mcpServers": {
    "prospectmcp": {
      "command": "node",
      "args": ["/ruta/a/ProspectMCP/dist/mcp/server.js"],
      "env": {
        "GOOGLE_PLACES_API_KEY": "TU_KEY",
        "SERPAPI_KEY": "TU_KEY_OPCIONAL"
      }
    }
  }
}

Herramientas MCP disponibles

Herramienta

Qué hace

search_businesses

Busca negocios con filtro with_website / without_website / any y rating mínimo

get_business

Ficha completa de un negocio por place_id

get_reviews

Extrae reviews (todas con SerpAPI; hasta 5 sin ella)

get_business_profile

Ficha + reviews + redes sociales en una sola llamada

generate_website_prompt

Prompt listo para Claude Code que arma la landing del negocio

Ejemplo de flujo en Claude:

"Buscá gimnasios en Rosario que no tengan página web y rating mayor a 4. Del más prometedor, traeme todas las reviews y generame el prompt para armarle la página."

Uso como API REST

npm run start:api

Endpoint

Descripción

GET /health

Estado del servicio

GET /search?query=...&website_filter=without_website&min_rating=4

Búsqueda con filtros

GET /business/:placeId

Ficha del negocio

GET /business/:placeId/reviews?max_reviews=200

Reviews

GET /business/:placeId/profile

Ficha + reviews + redes

POST /business/:placeId/website-prompt

Genera el prompt para Claude Code (body: { "language": "es", "style_notes": "..." })

Con API_KEYS configurado, todas las rutas (salvo /health) exigen el header X-API-Key.

curl -H "X-API-Key: mi-key" \
  "http://localhost:3000/search?query=peluquerías%20en%20Córdoba&website_filter=without_website"

Roadmap (comercialización)

  • Panel web del proyecto: búsquedas guardadas, listas de prospectos, exportación CSV.

  • Botón "Generar prompt para Claude Code" por negocio dentro del panel (el endpoint ya existe).

  • Planes y facturación por API key (rate limiting + cuotas).

  • Más providers de reviews y enriquecimiento (email finder, etc.).

Licencia

MIT

Available Tools

5 tools
generate_website_promptGenerar prompt de página web para Claude CodeA

Genera un prompt listo para pegar en Claude Code que construye una landing page profesional para el negocio, basada en sus datos reales, sus mejores reviews y sus redes sociales. Pensado para venderle la página al negocio.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoIdioma del contenido de la página (default: es)
place_idYesPlace ID de Google del negocio
max_reviewsNoCantidad de reviews a analizar (default 100)
style_notesNoIndicaciones de estilo: colores, tono, secciones extra, etc.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions using 'datos reales' and 'mejores reviews' but does not explain whether the tool fetches external data, has side effects, or requires authentication. The description is insufficient for an agent to understand the tool's operational behavior.

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 two sentences with no wasted words. Every sentence adds value: the first states the core function, the second clarifies the intended use case. It is front-loaded and efficient.

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?

For a tool with 4 parameters and no output schema, the description provides enough context to understand the purpose but does not explain the return format (a prompt string) or how the tool integrates with the data sources. It is minimally adequate but leaves gaps in a complete mental model.

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 coverage is 100% and all parameters have descriptions in the schema. The tool description does not add additional meaning beyond the schema, except for implying that 'max_reviews' relates to 'mejores reviews'. Baseline 3 is appropriate since the schema already documents the parameters adequately.

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 (Genera), the resource (prompt para Claude Code que construye una landing page), and the target (venderle al negocio). It is distinct from sibling tools, which are search and retrieval tools, not generation tools.

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 description explicitly says the tool is 'Pensado para venderle la página al negocio', implying when to use it. However, it does not explicitly contrast with siblings or state when not to use it. The context is clear enough for an agent to differentiate from data retrieval tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_businessDetalle de un negocioB

Obtiene la ficha completa de un negocio por su place_id: datos de contacto, web, rating, categorías y ubicación.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoCódigo de idioma, ej. 'es'
place_idYesPlace ID de Google del negocio

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It indicates a read operation (get) but does not mention mutability, permissions, error behavior, or side effects. For a simple retrieval, more could be said about invariants.

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?

Single sentence that efficiently conveys the tool's function and the data returned. No unnecessary words, front-loaded with the main action.

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?

For a simple get-by-ID tool with no output schema, the description covers the main purpose and returned data. However, it lacks information on what happens when a place_id is invalid or not found, and whether the output is a single object. Adequate but not fully complete.

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 coverage is 100% with descriptions for both parameters. The description adds context that place_id is the key identifier and implies language is optional. However, it does not explain the language parameter beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'gets', resource 'complete profile of a business', and identifier 'place_id'. It lists specific data fields (contact, website, rating, categories, location). However, it does not differentiate from the sibling 'get_business_profile', which might be similar.

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 guidance on when to use this tool versus alternatives like search_businesses or get_business_profile. The description only explains what it does, not when it's appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_business_profilePerfil completo de un negocioA

Devuelve el perfil completo de un negocio: ficha, reviews y redes sociales detectadas en su sitio web (Facebook, Instagram, etc.). Es el insumo ideal antes de generar el prompt de la página web.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoCódigo de idioma, ej. 'es'
place_idYesPlace ID de Google del negocio
max_reviewsNoCantidad máxima de reviews a incluir (default 100)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It clearly states what the tool returns: profile, reviews, and social networks. It implies a read operation without side effects. Though it does not detail rate limits or authorization, the behavior is straightforward and well-described.

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 consists of two concise sentences. The first sentence states the core functionality, and the second adds a usage hint. Every word is valuable, with no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description provides essential context about the return content (ficha, reviews, social networks). While it lacks detailed structure, the level of detail is sufficient for an agent to understand the tool's output. The sibling tools complement, but this description is self-contained enough.

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 coverage is 100% with all three parameters (language, place_id, max_reviews) having descriptions. The tool description does not add extra meaning beyond the schema, except noting that social networks are detected from the website. Since parameter descriptions are already clear, a baseline score of 3 is appropriate.

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 returns the full business profile including listing, reviews, and social networks detected from the website. The verb 'Devuelve' (returns) and the specific components distinguish it from sibling tools like get_business (likely returns only listing) and get_reviews (only reviews). The phrase 'insumo ideal antes de generar el prompt de la página web' provides purpose context.

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 description explicitly mentions this tool is ideal before generating a webpage prompt, indicating a primary use case. However, it does not provide guidance on when not to use it or mention alternative tools. The sibling list includes get_business and get_reviews, but no comparative usage notes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reviewsExtraer reviews de un negocioA

Extrae las reviews de un negocio por su place_id. Con SERPAPI_KEY configurada trae el listado completo paginado; sin ella devuelve hasta 5 reviews (límite de la API oficial de Google). El campo 'complete' indica si el listado es completo.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoCódigo de idioma, ej. 'es'
place_idYesPlace ID de Google del negocio
max_reviewsNoCantidad máxima de reviews a traer (default 100, máx 500)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description discloses the key behavioral distinction: full paginated list with SERPAPI_KEY vs up to 5 reviews without. Mentions the 'complete' field in output. Could add more about read-only nature, but sufficient.

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?

Two sentences, no wasted words. Action and key distinction front-loaded. Efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters and no output schema, the description covers the main behavior and output indicator ('complete'). Could mention language filtering, but not critical. Adequate for the tool's complexity.

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 coverage is 100% with descriptions for all parameters. The description adds the default value for max_reviews (100) not in schema, but otherwise adds little beyond schema. Baseline 3 is appropriate.

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 extracts reviews by place_id, with a specific verb 'Extrae' and resource 'reviews de un negocio'. It distinguishes from siblings as none of them deal with reviews.

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 description explains when to use (to get reviews) and provides context about two modes based on SERPAPI_KEY configuration. It lacks explicit when-not-to-use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_businessesBuscar negocios en Google MapsA

Busca negocios en Google Maps por texto libre (ej. 'peluquerías en Rosario'). Permite filtrar por negocios CON o SIN página web (ideal para prospectar clientes a los que venderles una web) y por rating mínimo. Devuelve nombre, dirección, teléfono, web, rating y place_id de cada negocio.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesBúsqueda en lenguaje natural, ej. 'pizzerías en Palermo, Buenos Aires'
regionNoCódigo de región, ej. 'AR'
languageNoCódigo de idioma, ej. 'es'
min_ratingNoRating mínimo en Google (1 a 5)
max_resultsNoCantidad máxima de resultados (default 20, máx 60)
website_filterNoFiltrar por presencia de página web (default: any)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description explains it returns specific fields (name, address, phone, web, rating, place_id) and mentions default and max results. No destructive behavior implied, but doesn't explicitly state read-only nature.

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?

Two sentences, no filler. First sentence introduces main action with an example, second sentence summarizes filters and output. Every part is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the main purpose, filters, and return data. Missing details on pagination or error handling, but given the complexity (6 params, no output schema), it is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds value beyond schema by providing example queries and explaining the purpose of the website_filter parameter. Schema already has 100% coverage, so baseline is 3; the description justifies +1.

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 searches businesses on Google Maps using free text, and explicitly differentiates from siblings like get_business or get_reviews by focusing on search and filtering.

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?

Provides an explicit use case ('ideal para prospectar clientes') but does not mention when to avoid using this tool or alternatives beyond the implied sibling distinction.

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. Dates show when Glama detected each change.

  1. 5 tool updatesv0.1.0
    • First observedgenerate_website_prompt
    • First observedget_business
    • First observedget_business_profile
    • First observedget_reviews
    • First observedsearch_businesses

TDQS

A4/5.0
Disambiguation5/5

Each tool has a distinct function: search, get details, reviews, profile, and prompt generation. No overlap in purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, e.g., search_businesses, get_business, get_reviews.

Tool Count5/5

5 tools is ideal for the domain, covering the core workflow without being excessive or insufficient.

Completeness4/5

The tool set covers the essential workflow for lead generation, though a tool to save or manage prospects could be a minor addition.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A server that integrates with Claude Desktop to enable real-time web research capabilities, allowing users to search Google, extract webpage content, and capture screenshots directly from conversations.
    3
    1,567
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    This server enables users to programmatically scrape and access Google Maps reviews through a Multi-Agent Conversation Protocol interface to the Apify API.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive B2B intelligence server providing over 48 tools for lead generation, company research, and sales automation via the Model Context Protocol. It enables AI-powered prospect discovery, enrichment, and competitive analysis through seamless integrations with Make.com, Claude Desktop, and Apify.
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A free MCP server that runs a full B2B outbound pipeline inside a Claude conversation, enabling lead scraping, Google Sheets integration, and Instantly campaign creation.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/snowydevd/ProspectMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server