Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Touch Grass

FreeNot checked

Preference-aware events discovery MCP server that aggregates events, restaurants, and cultural activities across multiple sources and re-ranks them against your

GitHubEmbed

About

Preference-aware events discovery MCP server that aggregates events, restaurants, and cultural activities across multiple sources and re-ranks them against your personal taste profile to surface things you'd actually want to do.

README

Preference-aware events discovery MCP server. Surfaces what you'd actually want to do — not what's loudest.

touch-grass-mcp is a Model Context Protocol server that aggregates events, restaurants, museums, music, and trending venues across multiple sources, then re-ranks results against your taste profile so you stop scrolling generic event listings and start finding things you'd actually go to.

Self-hosted by design. Zero telemetry. All data stays on your machine.

What you get

Core (works in any US city):

  • Concerts (Ticketmaster, Resident Advisor, Dice)
  • Restaurants + bars (Yelp)
  • Local groups + meetups (Meetup, Eventbrite)
  • Theater (TodayTix)
  • Breweries (Open Brewery DB)
  • Weather (NWS)
  • Editorial picks (Eater, Gothamist, Time Out, Hyperallergic, Artforum)

NYC pack (activates when your profile city is New York):

  • Public libraries (NYPL, BPL, QPL)
  • Museums (MoMA, Met, Whitney, Frick, Carnegie Hall, 92Y, Park Avenue Armory, MoMA PS1)
  • Venues (Lincoln Center, Brooklyn Steel, Metrograph, Village Vanguard, Village Jazz)
  • NYC Open Data (city-permitted events)
  • Audubon (birding walks)
  • Curated community calendars

The taste engine — what makes this different from a flat aggregator:

  • Profile-driven scoring: your interests, dislikes, vibe preferences, neighborhoods
  • City pulse: live trend tracker (Reddit + Google Trends + RSS) that surfaces what's rising

Install

pip install touch-grass-mcp
# or with optional pulse + NLP support:
pip install "touch-grass-mcp[pulse,nlp]"

First-run setup

# One unified onboarding wizard: profile + city pack + API keys
touch-grass setup

# Fast launch for a known city (auto-fills state + pulse defaults):
touch-grass setup --city "san francisco"

# See available city starter packs:
touch-grass list-cities

# Already configured profile? Just (re)do API keys:
touch-grass setup --keys-only

# Sanity check:
touch-grass doctor

City starter packs auto-fill subreddits, RSS feeds, and Google Trends geo when your profile city matches. Currently bundled: NYC (deep coverage), SF, LA, Chicago, Austin, Boston, Seattle, DC. PRs welcome to add more.

Wire it into Claude Desktop / Claude Code

Add to your MCP config (~/Library/Application Support/Claude/claude_desktop_config.json or ~/.claude.json):

{
  "mcpServers": {
    "touch-grass": {
      "command": "touch-grass",
      "args": ["serve"]
    }
  }
}

Tools exposed

23 MCP tools across 5 categories:

Event search: search_events, search_concerts, discover_niche_events, trending_events, get_event_details, search_community_calendars, search_ra_events, get_ra_event_details

Dining + venues: search_restaurants, search_breweries, get_restaurant_details

Arts + culture: search_broadway_shows, get_broadway_showtimes, get_museum_exhibitions, search_met_collection, get_editorial_picks, get_editorial_feed

Profile + recommendation: get_user_profile, update_user_preferences, get_recommendation_keywords

Calibration + utility: weekend_weather, log_flag_feedback, get_calibration_stats

Configuration

  • Profile: ~/.config/touch-grass/config.json (run touch-grass init to bootstrap)
  • API keys: ~/.config/touch-grass/.env (or shell env)
  • Cache + state: ~/.local/share/touch-grass/ (XDG paths)

See CONFIG.md for the full profile schema.

Privacy

Read PRIVACY.md before installing. Short version: zero telemetry, no analytics, no phone-home, all data local.

Architecture

  • taste/ — pure-Python preference engine: load profile, score events, rank by relevance. Zero MCP dependencies; importable from any context.
  • pulse/ — cultural trend tracker that re-ranks against current Reddit / Trends / RSS signal.
  • packs.py — city-pack registry. NYC pack bundled. Adding a new city is a documented contribution.
  • server.py — FastMCP server that wires it all together.

Cities other than NYC

The core pack works anywhere in the US. NYC is the bundled deep-coverage city. Adding a new city = drop scrapers in clients/<city>/, register a CityPack in packs.py, supply pulse defaults. PRs welcome.

License

MIT.

Status

v0.1 — alpha. Stable enough for personal use; expect breakage in fragile scrapers (museums, RSS).

from github.com/AG-Dynamics-GH/touch-grass-mcp

Installing Touch Grass

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/AG-Dynamics-GH/touch-grass-mcp

FAQ

Is Touch Grass MCP free?

Yes, Touch Grass MCP is free — one-click install via Unyly at no cost.

Does Touch Grass need an API key?

No, Touch Grass runs without API keys or environment variables.

Is Touch Grass hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Touch Grass in Claude Desktop, Claude Code or Cursor?

Open Touch Grass on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Touch Grass with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs