yelp-mcp-min
Provides tools for searching businesses, looking up by phone, matching by address, getting business details, and fetching reviews from the Yelp Fusion API.
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., "@yelp-mcp-min search for pizza places in Chicago"
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.
yelp-mcp-min
Minimal MCP server for the Yelp Fusion API v3, built with FastMCP 3.
Prerequisites
Python 3.11+
uv 0.11+
Docker (optional)
A Yelp Fusion API key — https://www.yelp.com/developers/v3/manage_app
Related MCP server: yelp-mcp-sdk
Installation
uv sync
cp .env.example .env
# Edit .env and set YELP_API_KEYRunning
# stdio transport (for use with Claude Desktop or an MCP client)
uv run python -m server.main
# Docker
docker build -t yelp-mcp-min .
docker run --env-file .env yelp-mcp-min
docker buildx build -t yelp-mcp-min .Environment variables
Variable | Required | Default | Description |
| Yes | — | Yelp Fusion API bearer token |
| No |
| API base URL |
| No |
| Request timeout in seconds |
| No |
| Max retry attempts on 429/5xx |
| No |
| Min back-off wait in seconds |
| No |
| Max back-off wait in seconds |
| No |
| structlog level |
| No |
| Emit JSON log lines (for Datadog etc) |
Tools
Tool | Yelp endpoint | Description |
|
| Full-text + geo search with pagination |
|
| Look up a business by E.164 phone number |
|
| Match structured name+address to Yelp listing |
|
| Full business profile by Yelp ID or alias |
|
| Customer reviews with pagination |
Resource
yelp://business/{id} — Returns the same payload as get_business as an MCP
resource (application/json). MCP clients that support resources can embed or
subscribe to this URI directly.
Project structure
yelp-mcp-min/
server/
main.py # FastMCP instance + wiring
core/
config.py # pydantic-settings (YELP_API_KEY, tunables)
logging.py # structlog setup (stderr only)
client.py # async httpx client, retry, error mapping
models.py # Pydantic output models
tools/
search.py # search_businesses
business.py # find_by_phone, match, get_business
reviews.py # get_business_reviews
resources/
business.py # yelp://business/{id}
tests/
conftest.py
test_client.py
test_tools.py
test_models.py
Dockerfile
pyproject.toml
.env.exampleRunning tests
uv run pytest -vAvailable Tools
5 toolsfind_business_by_phoneARead-onlyIdempotent
Look up Yelp businesses that match a phone number.
Use this when you have a phone number and need to identify which business it belongs to. Returns up to a handful of candidates ranked by relevance. An empty list means no Yelp listing was found for that number.
The phone must include the country code in E.164 format (+14155551234).
Inputs: params (required). Returns: result
get_businessARead-onlyIdempotent
Fetch the full Yelp profile for a specific business by its ID or alias.
Use this when you already have a Yelp business ID (from search results or a previous call) and need complete details: hours, all photos, full address, price tier, categories, and the Yelp URL.
Raises an error if the business ID does not exist on Yelp.
Inputs: params (required). Returns: Full business record returned by get_business and match_business.
get_business_reviewsARead-onlyIdempotent
Retrieve user reviews for a specific Yelp business.
Use this when the user wants to read what customers say about a business: sentiment, specific comments about food, service, or atmosphere. Returns up to 50 reviews per call with text excerpts, star ratings, and reviewer info.
The 'total' field in the response shows how many reviews exist in full; use 'offset' to paginate through them.
Raises an error if the business ID does not exist on Yelp.
Inputs: params (required). Returns: Wrapper returned by get_business_reviews.
match_businessARead-onlyIdempotent
Match a business by name and address to its canonical Yelp listing.
Use this when you have structured address data (from a CRM, spreadsheet, or user input) and need to verify or enrich it with Yelp data such as the Yelp ID, rating, hours, and URL.
Name + address1 + city + state + country are required. Adding zip_code and phone significantly improves match precision.
Returns ranked candidates; the first result is the best match. An empty list means no match was found at the chosen threshold.
Inputs: params (required). Returns: result
search_businessesARead-only
Search Yelp for businesses matching a term, location, or both.
Use this tool when the user wants to discover businesses — restaurants, services, shops, entertainment — in a given area. It supports free-text search, geo coordinates, category filters, price tiers, open-now filtering, and pagination.
Supply at least one of: location, or both latitude + longitude.
Returns a list of matching businesses with ratings, review counts, price tier, address, and a Yelp URL. The 'total' field indicates how many results exist in the full result set; use 'offset' to paginate.
Raises ValueError when neither location nor coordinates are provided.
Inputs: params (required). Returns: Wrapper returned by search_businesses.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool targets a distinct use case: phone lookup, ID-based details, reviews, name+address matching, and keyword/location search. No functional overlap exists.
All tool names follow the verb_noun pattern in snake_case, starting with 'get', 'find', 'match', or 'search' followed by 'business' or 'businesses'. Highly consistent.
Five tools is appropriate for a Yelp information server, covering the essential operations without being too sparse or overly granular.
The tool set covers the main read operations for Yelp business data: search, direct lookup by ID, phone, or name+address, and reviews. No critical gaps for typical usage.
Maintenance
Related MCP Connectors
An MCP server that exposes functionalities to use Zomato's services.
MCP server for the Seline Analytics API
MCP server for Nylas — read email, calendars, events and contacts, and send email or create events.
MCP server for Riveter's enrichment, scraping, and monitoring API
Related MCP Servers
AlicenseAqualityCmaintenanceEnables 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.128Apache 2.0- FlicenseAqualityDmaintenanceProvides Yelp Fusion API access through MCP tools and resources for searching businesses, getting reviews, and more.5-
- AlicenseCqualityCmaintenanceFastMCP server that exposes the YNAB API for budget management, enabling interaction with YNAB data through MCP tools.441MIT
- AlicenseAqualityDmaintenanceMCP server for Yelp integration, enabling AI agents to search for local businesses, read reviews, view photos, check hours, find deals, and discover trending spots.1254 npmMIT