About charlotteonthecheap-mcp
charlotteonthecheap-mcp provides read-only access to free and low-cost events, deals and local guides from the On the Cheap network. It serves 14 US city sites through a required per-request site selection, with no credentials or setup configuration needed.
Key features
- 01Browse daily events with times, prices and venues
- 02Filter event listings to free options
- 03Search posts by text, category, location and dates
- 04Read full articles and browse categories or locations
- 05Choose among 14 city and national sites
- 06Search expired deals when requested
Use cases
- 01Find free events in a selected city on a date
- 02Compare local activities across multiple cities
- 03Search for deals by topic or location
- 04Read a local guide or inspect its archive
MCP support
Provides read-only MCP tools for querying public On the Cheap network sites. Most tools require a site key for the city or national site being queried.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y charlotteonthecheap-mcpCOTC_BASE_URLOptional override for the Charlotte On The Cheap base URL. The site is public; no credentials are required.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
7Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| tag | integer | No | Tag id |
| page | integer | No | 1-based page number |
| after | string | No | Only posts published on or after this date |
| query | string | No | Full-text search, e.g. "free museum day" |
| before | string | No | Only posts published on or before this date |
| compact | boolean | No | Return slim summaries instead of full records (default true) |
| category | integer | No | Category id from cotc_list_categories |
| location | integer | No | Location id from cotc_list_locations |
| per_page | integer | No | Results per page (max 100) |
| include_expired | boolean | No | Include retired/expired deals (default false) |
Details
From the project READMEonthecheap-mcp
MCP server for the On the Cheap network — local guides to free and cheap things to do across 14 US cities. Daily event listings with times, prices and venues, plus a searchable archive of deals and guides.
Developed and maintained by AI (Claude Code). Use at your own discretion.
No credentials required. Every site is public, so the server reads them server-side over plain HTTPS. There is nothing to configure beyond which city you want, and no browser extension involved.
Install
npx onthecheap-mcp
Or as a Claude Code plugin:
/plugin marketplace add chrischall/onthecheap-mcp
/plugin install onthecheap-mcp
Choosing a city
One server reads the whole network. Every tool takes a site argument
naming the city to read — there is no default and no configuration step:
| Key | Site | Area |
|---|---|---|
charlotte | Charlotte On The Cheap | Charlotte, NC |
denver | Mile High on the Cheap | Denver, CO |
atlanta | Atlanta on the Cheap | Atlanta, GA |
chicago | Chicago on the Cheap | Chicago, IL |
columbus | Columbus on the Cheap | Columbus, OH |
seattle | Greater Seattle on the Cheap | Seattle–Tacoma |
kansascity | Kansas City on the Cheap | Kansas City |
miami | South Florida on the Cheap | Miami / Broward / Palm Beach |
orlando | Orlando on the Cheap | Orlando, FL |
portland | Portland Living on the Cheap | Portland, OR |
richmond | RVA on the Cheap | Richmond, VA |
southernmaine | Southern Maine on the Cheap | Southern Maine |
triangle | Triangle on the Cheap | Raleigh / Durham / Chapel Hill |
national | Living On The Cheap | US-wide deals (no local events calendar) |
Common aliases work too — milehigh, raleigh, rva, kc, southflorida.
otc_list_sites reports the same list.
site is required rather than defaulted on purpose: a server that quietly fell
back to one city would answer a question about Denver with Charlotte's data and
give no sign anything was wrong. An unknown key is refused with the valid ones
listed.
Tools
All tools are read-only. Every tool except otc_list_sites takes a required
site argument. The two event tools reject national, which has no local
events calendar — it is still searchable via the other tools.
| Tool | What it does |
|---|---|
otc_list_events | Everything on a given day — time, price, venue. free_only filters to no-cost listings. Defaults to today. |
otc_events_month_overview | Day-by-day counts for a month, to find the busiest days. Each day's list is a preview; total is the real count. |
otc_search_posts | Search articles by text, category, location and date range. Returns slim summaries by default. |
otc_get_post | One article in full, as readable text or raw HTML. Accepts an id, slug, or URL. |
otc_list_categories | Category ids and post counts, for filtering searches by topic. |
otc_list_locations | Local area ids and post counts, for filtering geographically. |
otc_list_sites | The cities in the network and their site keys. Takes no arguments. |
otc_healthcheck | Confirm one site is reachable; on failure error.kind is edge_blocked, http, timeout or transport. |
Examples
What's free in Charlotte this Saturday?
Find kids' events in Lake Norman in August
Compare free things to do in Denver and Portland next weekend
Two things worth knowing
Retired deals are excluded by default. Each site parks expired offers in an
expired category, so searches skip them and you don't get deals that no
longer exist. Pass include_expired: true to search the archive. The category's
id differs on every site, so it's resolved by slug at request time — a
hardcoded id silently disables the filter elsewhere.
Category and location ids are per-site. Each site is a separate WordPress
install, so id 13 is a different category on every one of them. Resolve ids
against the same site you then search — an id borrowed from another city will
filter to something unrelated rather than error.
Month overviews are previews, with honest counts. The calendar shows at
most four listings per day. otc_events_month_overview reports each day's
true total alongside the preview — call otc_list_events with a date for the
complete schedule.
Configuration
None. The city is a per-call site argument, not an environment variable, so
there is nothing to set up before use.
Development
npm install
npm test
npm run build
See docs/OTC-API.md for the verified data surface,
including the events calendar's US M-D-YYYY date routing (an ISO date is
silently parsed as 1970), the month-view truncation, and why term ids are never
hardcoded.
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.