# charlotteonthecheap-mcp

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/chrischall/charlotteonthecheap-mcp  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/charlotteonthecheap-mcp

## Description
Charlotte On The Cheap MCP — free and cheap Charlotte events, deals and local guides

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "charlotteonthecheap-mcp": {
    "command": "npx",
    "args": ["-y","charlotteonthecheap-mcp"]
  }
}
```

## Documentation & README

# onthecheap-mcp

MCP server for the [On the Cheap](https://livingonthecheap.com) 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

```bash
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. |

### 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

```bash
npm install
npm test
npm run build
```

See [`docs/OTC-API.md`](https://github.com/chrischall/charlotteonthecheap-mcp/blob/HEAD/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

