How to Connect FindLocal to Claude, Cursor, and Other AI Assistants (MCP)
Reference: the up-to-date endpoint, parameter and field tables now live at /mcp. This post is the walkthrough.
Update: there are no shared demo keys anymore. Authorize with your own API key from /pricing — the same key works for the MCP server and the JSON API, and there’s a free tier.
Find Local runs a remote MCP server. MCP (Model Context Protocol) is the open standard AI assistants use to call outside tools, so once it’s connected you can ask Claude or Cursor things like “what’s free in Brooklyn this weekend?” or “any jazz near Cambridge tonight?” and it will answer from the same curated venue calendars the website uses, with links back to each event.
The server lives at:
https://mcp.findlocal.community/mcp
It’s read-only, uses the Streamable HTTP transport (an /sse endpoint exists for older clients), and authorizes with OAuth plus a short account key step described below. If you’d rather query the data directly from code, see the Events API guide.
1. Add the server to your client
Claude.ai (web and desktop)
- Open Settings → Connectors.
- Choose Add custom connector.
- Paste
https://mcp.findlocal.community/mcpand save. - Click Connect. A small FindLocal authorization page opens — see the account key step below.
- In a new chat, make sure the FindLocal connector is toggled on, then ask about events.
Claude Code (terminal)
claude mcp add --transport http findlocal https://mcp.findlocal.community/mcp
Start a session and the first FindLocal tool call will open the authorization page in your browser.
Cursor
Add the server to ~/.cursor/mcp.json (or your project’s .cursor/mcp.json) and restart Cursor:
{
"mcpServers": {
"findlocal": {
"url": "https://mcp.findlocal.community/mcp"
}
}
}
Any other MCP client
Any client that supports remote servers over Streamable HTTP with OAuth works — point it at the URL above. To poke at the tools without a chat client, use the MCP Inspector:
npx @modelcontextprotocol/inspector
# transport: Streamable HTTP, URL: https://mcp.findlocal.community/mcp
2. Authorize with your API key
When your client connects, FindLocal shows a one-field consent page asking for your API key. Usage is metered against your account’s monthly quota so we can keep the service healthy.
- Get a key at /signup. The Free plan needs no card; the Indie and Business plans add more calls (see pricing), and anything bigger is a conversation. Create the key yourself in the dashboard — it is shown once. The monthly quota belongs to your account, so every key you make draws on the same pool.
- The same key works for both the MCP server and the JSON API.
Once authorized you won’t be asked again for that client. You can check where you stand any time by asking the assistant to run get_usage, which reports the account’s calls used and remaining for the current month. When a quota is exhausted, tool calls return a clear “monthly quota reached” message rather than partial data.
3. Ask questions
Some prompts that work well:
- “What’s happening in Boston tonight that’s free?”
- “Find comedy shows in Chicago this weekend under $25.”
- “Any talks or film screenings in London this week under £15?”
- “When is my favourite band next playing in Chicago?”
- “List music venues in Austin’s East Side and what’s coming up at each.”
- “Is there anything family-friendly in Denver on Saturday afternoon?”
- “What categories of events does FindLocal have in Seattle, and how many of each?”
Every event the assistant gets back includes a url to its page on findlocal.community, plus ticket and venue links when the venue publishes them, so you can jump straight from the chat to buying a ticket.
The tools
These are the tools the server exposes. Your assistant picks the right one automatically; the list is here so you know what’s possible and how to phrase requests.
| Tool | What it does | Inputs |
|---|---|---|
search_events |
The main one. Upcoming events in a city, filtered every way the site can filter. Returns { city, total_matched, returned, events }. |
city (required; name or slug), region, when (anytime, today, tomorrow, weekend, this_weekend, week), date_from / date_to (YYYY-MM-DD), category (a slug or a genre word like jazz), free_only, price_max (city’s local currency), time_of_day (morning, afternoon, evening), query (free text over titles, venues and performers), performer (performer/author names only), authors_only, series_id (every date of one series), collapse (default true: a daily or near-daily programme comes back once, collapsed, with series_first / series_last; false = one row per date), sort (date or featured), limit (1–200, default 50) |
get_event |
Full detail for one event, including its description. Past and delisted events still come back, flagged expired / delisted; a cross-venue duplicate also carries duplicate_of, the id of the event we kept. |
id |
list_venues |
Active venues in a city or region with address, coordinates, type, size / capacity, and upcoming counts. | city (required), region, limit (≤500) |
get_venue |
One venue by id, or a fuzzy name search returning up to 5 matches. | id, or name (+ optional city) |
list_categories |
The category slugs search_events accepts, with the number of upcoming events in each for a city. |
city (required) |
get_events_at_venue |
Upcoming events at one venue. | venue_id, limit (≤100, default 20) |
get_usage |
Your plan and the account’s calls used and remaining this month. Free. | none |
get_api_docs |
The REST API reference by topic, for when you’re building an integration. Free. | topic |
get_setup_guide |
A ready-to-run snippet (curl, JavaScript, Python, Claude Code, Cursor, Claude Desktop, or the Free-plan attribution link). Free. | target |
Categories are music, comedy, theater, dance, art, food_drink, family, market, workshop, fitness, nightlife, community, festival, parks, literary, film, and talks. Cities can be given by name (“New York”) or slug (“new-york”); the full list of metros (US and UK) is in llms.txt.
An event in a tool result looks like:
{
"id": "8f9b9068-4e11-466b-a1cc-d36230d28fdd",
"title": "Hooley Hour",
"date": "2026-09-04",
"start_time": "17:00:00",
"city": "Boston",
"region": "Cambridge",
"venue": { "id": "b7716a13-…", "name": "The Lilypad", "address": "1353 Cambridge St, Cambridge, MA 02139" },
"category": "music",
"category_tags": ["Theater", "Music"],
"performers": [{ "name": "The Hooley Band", "role": "headliner" }],
"price_label": "Free",
"price_usd": 0,
"price_amount": 0,
"currency": "USD",
"is_free": true,
"recurring": true,
"upcoming_dates_in_series": 4,
"series_id": "s_3f0c9a1d2b7e4c55",
"details_url": "https://www.lilypadinman.com/home/2026/hooley-hour-bs5y2-pl4db9",
"image": "https://images.squarespace-cdn.com/…/1000016764.jpg",
"website": "https://www.lilypadinman.com/",
"url": "https://findlocal.community/event/8f9b9068-4e11-466b-a1cc-d36230d28fdd",
"source": "scraper_local"
}
Fields that are empty for an event are simply omitted. date is the venue’s local calendar day; price_label is the venue’s own wording and price_amount our parsed number in the metro’s currency (GBP for London; price_usd repeats it for US metros only); is_free is set when we can tell either way. A multi-day run stored as one event (an exhibition or festival) has end_date, its last day; organizer names who puts the event on when that isn’t the venue; series_id is shared by every date of one series and can be passed back to search_events.
Good to know
- Freshness. Venue calendars are re-scraped regularly, typically daily, so results reflect what venues currently list. The
whenbuckets are resolved in each city’s time zone. - Coverage. 80+ metros across the US and the UK (London), over 10,000 venues, with an emphasis on the small and mid-size venues that never make it onto ticketing aggregators. A missing venue is a gap in our crawl, not a sign the event doesn’t exist — tell us at elliot@findlocal.community.
- Privacy. The server only ever reads event and venue data. It stores the API key you authorize with and a per-month call counter, nothing about your conversations.
- Rate limits. Quotas are monthly per account, shared by all of its keys. When you hit your monthly quota, tool calls return a clear “monthly quota reached” message rather than partial data; upgrade from your dashboard.
What’s next
- How to use the FindLocal Events API — the same data as plain JSON; full reference and playground in the local events API docs.
- Free events calendar widget — the same data on any web page with one script tag.
- How Find Local finds events the big platforms miss — where the data comes from.
- The FindLocal platform page — the overview for teams building on the data.