Skip to main content
Glama
yelp-mcp-sdk

yelp-mcp-sdk

by miqui

yelp-mcp-sdk

Yelp Fusion MCP server built on the official MCP Python SDK. Functionally identical to yelp-mcp-min (FastMCP), but uses the low-level Server class directly — no framework abstractions.

Prerequisites

Related MCP server: Yelp Fusion MCP Server

Installation

uv sync
cp .env.example .env
# Edit .env and set YELP_API_KEY

Running

# stdio transport (for use with Claude Desktop or an MCP client)
uv run python -m server.main

# Docker
docker build -t yelp-mcp-sdk .
docker buildx build -t yelp-mcp-sdk .
docker run --env-file .env yelp-mcp-sdk

Environment variables

Variable

Required

Default

Description

YELP_API_KEY

Yes

—

Yelp Fusion API bearer token

YELP_BASE_URL

No

https://api.yelp.com/v3

API base URL

HTTP_TIMEOUT

No

10.0

Request timeout in seconds

HTTP_MAX_RETRIES

No

3

Max retry attempts on 429/5xx

HTTP_RETRY_WAIT_MIN

No

1.0

Min back-off wait in seconds

HTTP_RETRY_WAIT_MAX

No

10.0

Max back-off wait in seconds

LOG_LEVEL

No

INFO

structlog level

JSON_LOGS

No

false

Emit JSON log lines

Tools

Tool

Yelp endpoint

Description

search_businesses

GET /v3/businesses/search

Full-text + geo search with pagination

find_business_by_phone

GET /v3/businesses/search/phone

Look up a business by E.164 phone number

match_business

GET /v3/businesses/matches

Match structured name+address to Yelp listing

get_business

GET /v3/businesses/{id}

Full business profile by Yelp ID or alias

get_business_reviews

GET /v3/businesses/{id}/reviews

Customer reviews with pagination

Resource

yelp://business/{id} — Full Yelp business profile as application/json. Declared via list_resource_templates; fetched via read_resource.

Project structure

yelp-mcp-sdk/
  server/
    main.py              # Server("yelp-mcp", lifespan=...) + stdio run
    core/
      config.py          # pydantic-settings
      logging.py         # structlog → stderr
      client.py          # async httpx + tenacity retry
      models.py          # Pydantic output models
    handlers/
      params.py          # Pydantic input models (also generate inputSchema)
      tools.py           # list_tools() + call_tool() dispatcher
      resources.py       # list_resource_templates() + read_resource()
  tests/
    conftest.py
    test_client.py
    test_models.py
    test_handlers.py
  Dockerfile
  pyproject.toml
  .env.example

Running tests

uv run pytest -v

Comparison with yelp-mcp-min (FastMCP)

Aspect

yelp-mcp-min (FastMCP)

yelp-mcp-sdk (official SDK)

Tool registration

@mcp.tool() decorator

list_tools + call_tool dispatcher

Input schema

Auto-generated from func sig

model.model_json_schema() explicit

Output type

Return Pydantic model directly

list[TextContent] with JSON string

Resources

@mcp.resource("uri://...") decorator

list_resource_templates + read_resource pair

Dependency inject

None (captured via closure)

lifespan context → request_context

Transport

mcp.run()

asyncio.run() + stdio_server()

Server LOC

~350

~450

Available Tools

5 tools
find_business_by_phoneA
Read-onlyIdempotent

Look up Yelp businesses that match a phone number. Use when you have a phone number and need to identify the business. Phone must be in E.164 format (+14155551234). Returns up to a handful of candidates; empty list means not found.

Inputs: phone (required).

get_businessA
Read-onlyIdempotent

Fetch the full Yelp profile for a specific business by its ID or alias. Use when you already have a Yelp business ID and need complete details: hours, all photos, full address, price tier, categories, and URL. Raises an error if the business ID does not exist on Yelp.

Inputs: business_id (required), locale.

get_business_reviewsA
Read-onlyIdempotent

Retrieve user reviews for a specific Yelp business. Use when the user wants to read customer opinions: ratings, comments, and reviewer info. Returns up to 50 reviews per call. Use offset to paginate; total field shows how many reviews exist.

Inputs: business_id (required), locale, sort_by, limit, +1 more.

match_businessA
Read-onlyIdempotent

Match a business by name and address to its canonical Yelp listing. Use when you have structured address data and need to verify or enrich it with Yelp data such as ID, rating, hours, and URL. name + address1 + city + state + country are required. Adding zip_code and phone significantly improves match precision.

Inputs: name (required), address1 (required), city (required), state (required), +4 more.

search_businessesA
Read-only

Search Yelp for businesses matching a term, location, or both. Use when the user wants to discover restaurants, services, or shops. Supports free-text search, geo coordinates, category filters, price tiers, open-now filtering, and pagination via limit/offset. Supply at least one of: location, or both latitude + longitude.

Inputs: term, location, latitude, longitude, +7 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.3/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: phone lookup, get full business details, get reviews, match by name/address, and general search. No overlapping functionality, making selection unambiguous.

    Naming Consistency5/5

    All tools follow a consistent snake_case verb_noun pattern (e.g., find_business_by_phone, get_business, search_businesses), with clear modifiers where needed. No mixing of conventions.

    Tool Count5/5

    Five tools is well-scoped for a Yelp API wrapper: covering search, matching, detailed lookup, reviews, and phone lookup. It's neither overly sparse nor bloated.

    Completeness5/5

    The tool set covers the core Yelp use cases—discovery, matching, detailed info, and reviews. There are no obvious gaps for read-only access, as mutations are not part of Yelp's public API.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Enables conversational interactions with Yelp's business data through an MCP server, allowing natural language queries about local businesses, multi-turn conversations, and direct business inquiries powered by Yelp Fusion AI.
      1
      28
      Apache 2.0
    • F
      license
      Not graded
      quality
      D
      maintenance
      Provides access to Yelp's business database for searching local businesses, retrieving detailed ratings and reviews, and performing market research through business counts. It enables users to look up businesses by location, category, or phone number using the Yelp Fusion API.
      1
      -
    • F
      license
      A
      quality
      D
      maintenance
      Minimal MCP server for the Yelp Fusion API v3, enabling business search, phone lookup, match, details, and reviews via FastMCP.
      5
      -