@hasdata/yelp-mcp 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +17 -11
  2. package/index.mjs +1 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -9,12 +9,12 @@ It reads public Yelp pages that a signed-out visitor can see, on any of the 41 r
9
9
  **1,000 free credits every month, no card required**, which is 100 Yelp calls at the 10-credit rate.
10
10
 
11
11
  ```
12
- https://mcp.hasdata.com/api/mcp?apis=yelp
12
+ https://mcp.hasdata.com/mcp?apis=yelp
13
13
  ```
14
14
 
15
15
  [![Glama score](https://glama.ai/mcp/servers/HasData/yelp-mcp/badges/score.svg)](https://glama.ai/mcp/servers/HasData/yelp-mcp)
16
16
  [![tool contract](https://github.com/HasData/yelp-mcp/actions/workflows/contract.yml/badge.svg)](https://github.com/HasData/yelp-mcp/actions/workflows/contract.yml)
17
- [![MCP](https://img.shields.io/badge/MCP-remote%20%7C%20streamable%20HTTP-6366f1?style=flat-square)](https://mcp.hasdata.com/api/mcp?apis=yelp)
17
+ [![MCP](https://img.shields.io/badge/MCP-remote%20%7C%20streamable%20HTTP-6366f1?style=flat-square)](https://mcp.hasdata.com/mcp?apis=yelp)
18
18
  [![Tools](https://img.shields.io/badge/tools-3-10b981?style=flat-square)](#tools)
19
19
  [![npm](https://img.shields.io/npm/v/@hasdata/yelp-mcp?style=flat-square&logo=npm&label=npm&color=cb3837)](https://www.npmjs.com/package/@hasdata/yelp-mcp)
20
20
  [![PyPI](https://img.shields.io/pypi/v/hasdata-yelp-mcp?style=flat-square&logo=pypi&logoColor=white&label=PyPI&color=3775a9)](https://pypi.org/project/hasdata-yelp-mcp/)
@@ -46,7 +46,7 @@ The server URL is the same for every client. We run it hands-on in Claude Code a
46
46
 
47
47
  | Field | Value |
48
48
  | :--- | :--- |
49
- | URL | `https://mcp.hasdata.com/api/mcp?apis=yelp` |
49
+ | URL | `https://mcp.hasdata.com/mcp?apis=yelp` |
50
50
  | Transport | HTTP, streamable |
51
51
  | Auth header | `x-api-key: HASDATA_API_KEY` |
52
52
 
@@ -56,7 +56,7 @@ Clients with OAuth support can add the same URL as a connector and sign in witho
56
56
  <summary><b>Claude Code</b></summary>
57
57
 
58
58
  ```bash
59
- claude mcp add --transport http yelp "https://mcp.hasdata.com/api/mcp?apis=yelp" \
59
+ claude mcp add --transport http yelp "https://mcp.hasdata.com/mcp?apis=yelp" \
60
60
  --header "x-api-key: HASDATA_API_KEY"
61
61
  ```
62
62
 
@@ -65,7 +65,7 @@ claude mcp add --transport http yelp "https://mcp.hasdata.com/api/mcp?apis=yelp"
65
65
  <details>
66
66
  <summary><b>Claude Desktop</b></summary>
67
67
 
68
- Settings, then Connectors, then Add custom connector, then paste `https://mcp.hasdata.com/api/mcp?apis=yelp` and sign in.
68
+ Settings, then Connectors, then Add custom connector, then paste `https://mcp.hasdata.com/mcp?apis=yelp` and sign in.
69
69
 
70
70
  For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The `@hasdata/yelp-mcp` package is that launcher, and it reads the key from the environment. Add this to `claude_desktop_config.json`:
71
71
 
@@ -106,7 +106,7 @@ For Python instead of Node, swap the launcher for the PyPI package, which `uvx`
106
106
  {
107
107
  "mcpServers": {
108
108
  "yelp": {
109
- "url": "https://mcp.hasdata.com/api/mcp?apis=yelp",
109
+ "url": "https://mcp.hasdata.com/mcp?apis=yelp",
110
110
  "headers": { "x-api-key": "HASDATA_API_KEY" }
111
111
  }
112
112
  }
@@ -124,7 +124,7 @@ For Python instead of Node, swap the launcher for the PyPI package, which `uvx`
124
124
  {
125
125
  "mcpServers": {
126
126
  "yelp": {
127
- "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=yelp",
127
+ "serverUrl": "https://mcp.hasdata.com/mcp?apis=yelp",
128
128
  "headers": { "x-api-key": "HASDATA_API_KEY" }
129
129
  }
130
130
  }
@@ -143,7 +143,7 @@ For Python instead of Node, swap the launcher for the PyPI package, which `uvx`
143
143
  "servers": {
144
144
  "yelp": {
145
145
  "type": "http",
146
- "url": "https://mcp.hasdata.com/api/mcp?apis=yelp",
146
+ "url": "https://mcp.hasdata.com/mcp?apis=yelp",
147
147
  "headers": { "x-api-key": "HASDATA_API_KEY" }
148
148
  }
149
149
  }
@@ -167,6 +167,12 @@ A prompt that names a business rather than a Yelp ID takes two calls, one search
167
167
 
168
168
  ## Tools
169
169
 
170
+ | Tool | What it returns |
171
+ | --- | --- |
172
+ | `hasdata_yelp_place_getPlaceDetails` | Name, address, phone, website, price range, categories, overall rating, review count, hours, amenities, photos, and highlighted reviews. 10 credits a call |
173
+ | `hasdata_yelp_reviews_getPlaceReviews` | Fetches the review feed of a single Yelp business by Yelp ID, with sorting (relevance, date, rating, elites), filtering by star rating, language and free-text query, and…. 10 credits a call |
174
+ | `hasdata_yelp_search_getSearchResults` | A ranked list of businesses with Yelp alias/ID, name, categories, rating, review count, price tier, neighborhood, and thumbnail. 10 credits a call |
175
+
170
176
  Three tools, 10 credits per successful call. Every tool accepts `domain` to switch country, one of 41 values, from `www.yelp.com` through the European, Asian and Latin American sites, including the language-specific variants such as `fr.yelp.ca` and `zh.yelp.com.hk`.
171
177
 
172
178
  ### Get Yelp search results
@@ -321,9 +327,9 @@ Each Yelp tool costs **10 credits per successful call**. Response size does not
321
327
 
322
328
  The free tier is **1,000 credits every month with no card**, which is 100 Yelp calls at the base rate. It renews with the billing cycle, so a low-volume agent runs on the free tier indefinitely.
323
329
 
324
- Paid plans start at **$49 a month** for 200,000 credits, which is 20,000 calls. The unit price falls with volume, from **$2.45 per 1,000 calls** on the entry plan to **$1.00** on Business, **$0.84** on Growth and **$0.74** on the largest [high-volume plans](https://hasdata.com/prices?utm_source=github&utm_medium=syndication&utm_campaign=yelp-mcp).
330
+ Paid plans start at **$59 a month** for 200,000 credits, which is 20,000 calls. The unit price falls with volume, from **$2.95 per 1,000 calls** on the entry plan to **$1.19** on Basic and **$0.83** across the Growth tiers. Current figures live on the [pricing page](https://hasdata.com/prices?utm_source=github&utm_medium=syndication&utm_campaign=yelp-mcp).
325
331
 
326
- Your plan also sets concurrency. The free tier allows 1 request at a time, Startup 15, Business 30, Growth 50, and the high-volume plans run from 200 to 1,500. Handle the overflow case defensively in anything unattended, because an agent that fans out across a list of businesses will reach the ceiling before you do.
332
+ Your plan also sets concurrency. The free tier allows 1 request at a time, Startup 5, Basic 15, and the Growth tiers run from 50 to 500. Retry on the 429 with a backoff in anything unattended, because an agent that fans out across a list of businesses will reach the ceiling before you do.
327
333
 
328
334
  A request that comes back non-200 is not billed. A successful call that finds nothing is still a call.
329
335
 
@@ -391,7 +397,7 @@ No. HasData is an independent service and is not affiliated with, endorsed by, o
391
397
 
392
398
  ### Compliance and personal data
393
399
 
394
- The review tools return personal data. A review carries the author's display name, profile photo, stated location, user ID and a link to their profile, and reviewers are private individuals rather than businesses. That puts the response in scope of the GDPR and the CCPA in a way a business listing is not. Decide what you actually need before you store it, keep it no longer than the purpose requires, and check your own obligations. Aggregate analysis rarely needs the author fields at all.
400
+ The review tools return personal data. A review carries the author's display name, profile photo, stated location, user ID and a link to their profile, and reviewers are private individuals rather than businesses. That puts the response in scope of the GDPR and the CCPA in a way a business listing is not. Decide what you need before you store it, keep it no longer than the purpose requires, and check your own obligations. Aggregate analysis rarely needs the author fields at all.
395
401
 
396
402
  ## HasData links
397
403
 
package/index.mjs CHANGED
@@ -6,7 +6,7 @@ import { spawn } from 'node:child_process';
6
6
  import { createRequire } from 'node:module';
7
7
  import { dirname, join } from 'node:path';
8
8
 
9
- const URL = 'https://mcp.hasdata.com/api/mcp?apis=yelp';
9
+ const URL = 'https://mcp.hasdata.com/mcp?apis=yelp';
10
10
  const key = process.env.HASDATA_API_KEY;
11
11
  if (!key) {
12
12
  process.stderr.write('HASDATA_API_KEY is not set. Create a free key at https://app.hasdata.com and set HASDATA_API_KEY.\n');
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hasdata/yelp-mcp",
3
3
  "mcpName": "com.hasdata/yelp",
4
- "version": "1.0.0",
4
+ "version": "1.0.1",
5
5
  "description": "MCP server for Yelp through HasData's hosted API: business search, place details and the full review feed. No Yelp Fusion key, no waitlist. 1,000 free credits every month.",
6
6
  "type": "module",
7
7
  "bin": {