Back to Browse

Charlotteonthecheap MCP Server

Developer ToolsModerate7.0Local
Free

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

About

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

Security Report

7.0
Moderate7.0Moderate Risk

This MCP server is well-designed with strong security practices for its stated purpose of reading public Charlotte On The Cheap event data. Authentication is not required (appropriate for public data), input validation is thorough, and there are no dangerous patterns or credential handling issues. Minor code quality observations exist but do not meaningfully impact security. Supply chain analysis found 2 known vulnerabilities in dependencies (0 critical, 1 high severity). Package verification found 1 issue.

7 files analyzed · 6 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

Optional override for the Charlotte On The Cheap base URL. The site is public; no credentials are required.Optional

Environment variable: COTC_BASE_URL

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-chrischall-charlotteonthecheap-mcp": {
      "env": {
        "COTC_BASE_URL": "your-cotc-base-url-here"
      },
      "args": [
        "-y",
        "charlotteonthecheap-mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

onthecheap-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:

KeySiteArea
charlotteCharlotte On The CheapCharlotte, NC
denverMile High on the CheapDenver, CO
atlantaAtlanta on the CheapAtlanta, GA
chicagoChicago on the CheapChicago, IL
columbusColumbus on the CheapColumbus, OH
seattleGreater Seattle on the CheapSeattle–Tacoma
kansascityKansas City on the CheapKansas City
miamiSouth Florida on the CheapMiami / Broward / Palm Beach
orlandoOrlando on the CheapOrlando, FL
portlandPortland Living on the CheapPortland, OR
richmondRVA on the CheapRichmond, VA
southernmaineSouthern Maine on the CheapSouthern Maine
triangleTriangle on the CheapRaleigh / Durham / Chapel Hill
nationalLiving On The CheapUS-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.

ToolWhat it does
otc_list_eventsEverything on a given day — time, price, venue. free_only filters to no-cost listings. Defaults to today.
otc_events_month_overviewDay-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_postsSearch articles by text, category, location and date range. Returns slim summaries by default.
otc_get_postOne article in full, as readable text or raw HTML. Accepts an id, slug, or URL.
otc_list_categoriesCategory ids and post counts, for filtering searches by topic.
otc_list_locationsLocal area ids and post counts, for filtering geographically.
otc_list_sitesThe cities in the network and their site keys. Takes no arguments.
otc_healthcheckConfirm 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

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

Reviews

No reviews yet

Be the first to review this server!